Სარჩევი:

ტელეფონის ავტომატური დამტენი: 6 ნაბიჯი (სურათებით)
ტელეფონის ავტომატური დამტენი: 6 ნაბიჯი (სურათებით)

ვიდეო: ტელეფონის ავტომატური დამტენი: 6 ნაბიჯი (სურათებით)

ვიდეო: ტელეფონის ავტომატური დამტენი: 6 ნაბიჯი (სურათებით)
ვიდეო: ძმამ დას iphone 6 უყიდა 2024, ნოემბერი
Anonim
ტელეფონის ავტომატური დამტენი
ტელეფონის ავტომატური დამტენი

”ეს ინსტრუქცია შეიქმნა სამხრეთ ფლორიდის უნივერსიტეტში Makecourse– ის საპროექტო მოთხოვნების შესასრულებლად (www.makecourse.com)”

ამ პროექტის იდეა იყო მოწყობილობის შექმნა, რომელსაც შეეძლო ტელეფონის დამუხტვა და შემდეგ მისი გამორთვა, როდესაც ტელეფონი 100%-ს მიაღწევს. ეს შეაჩერებდა ზედმეტი დატენვის საკითხებს.

ნაბიჯი 1: პლასტიკური კომპონენტები

პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები
პლასტიკური კომპონენტები

იყო კომპონენტები, რომლებიც გამოიყენებოდა 3D ბეჭდვით. ეს კომპონენტები მოიცავდა ბაზას, დამტენის დამჭერს, საკიდების და საყრდენების ნაკრებებს (ნორმალური გადაცემათა კოლოფი და წრფივი ნაწილი, რომელიც ცვლის ბრუნვას წრფივ მოძრაობად) და საფუძველი ყველაფრის მუშაობისთვის. ეს კომპონენტები განმარტებული იქნება შემდეგ პარაგრაფებში. გარეგნობის მიზნით

დამტენი დამჭერი

ამის მიზანია ტელეფონის დამტენის გამართვა, ან მინიმუმ უკეთესი და დონის ბაზის მიცემა.

ბაზა

ბაზას აქვს რგოლები ტელეფონის დამჭერისთვის, ასევე ბილიკი გადაცემათა კოლოფისათვის.

ტელეფონის დამჭერი

ტელეფონს უჭირავს, ცხადია

ტელეფონის მკლავი

მოძრაობს და ტელეფონს იჭერს

Rack and Pinion Gear Set

გამოიყენება ტელეფონის დამტენი წინ და უკან გადასატანად

ნაბიჯი 2: დაიშალეთ არა 3D ბეჭდვის კომპონენტები

ეს არის ის კომპონენტები, რომლებიც ან შეიძინა პროექტისთვის, ან უკვე საკუთრებაში იყო. ზოგიერთი ნაწილისთვის მე დავუკავშირდი მათ/მსგავსი ნივთები ამაზონზე, მაგრამ მოგერიდებათ მათი შეძენა სადმე.

მიკრო სერვო:

სტანდარტული 0-180 სერვო:

HC-05 Bluetooth სერიული მოდული:

ტელეფონის და ტელეფონის დამტენი

არდუინო

პურის დაფა

ყუთი ან ურნა ბაზისთვის

შეხების სენსორი:

ნაბიჯი 3: ელექტრონიკა

ელექტრონიკა
ელექტრონიკა

ამ პროექტის სქემამ შეიძლება მოითხოვოს გარკვეული ნაწილი, ძირითადად HC-05 მოდულის გამო. ამ ტიპის ბევრი მოდული არის დაახლოებით 3.3 ვ -დან 6 ვ -მდე, რაც Arduino– ს მოქმედების დიაპაზონშია. მაგრამ, სერიული კომუნიკაციისთვის, Rx pin ზოგჯერ უკეთ მუშაობს მხოლოდ 3.3 ვ. როგორც ზემოთ დიაგრამაზე ჩანს, ორი სერვო არუდინოზე Vin პინზეა მიმაგრებული. ეს დამატებითი ძაბვა შეიძლება მიეწოდოს არაფერს, მე გამოვიყენე 9 ვოლტიანი ბატარეა. სენსორული სენსორი ჩართული იყო 5V არდუინოზე. ეს იმიტომ მოხდა, რომ ყველა კომპონენტს უჭირდა ერთი და იგივე ძაბვის გაშვება. შეხების სენსორი მიმაგრებულია პინ 2 -ზე, ასე რომ ის შეიძლება გამოყენებულ იქნას როგორც ქინძისთავის შეწყვეტა. შემდეგ bluetooth მოდული უკავშირდება Rx და Tx ქინძისთავებს სერიული კომუნიკაციისთვის. მოდულის Rx პინსა და არდუინოს Tx შორის არის 2 კილოგრამიანი რეზისტორი, 1 კილოგრამიანი მილით. ეს ხელს უწყობს ძაბვის რეგულირებას.

ნაბიჯი 4: შეკრება

შეკრება
შეკრება

შეკრება საკმაოდ მარტივია.

  1. რამდენიმე სუპერ წებოთი დაამონტაჟეთ თქვენი სერვისები თავიანთ პოზიციებზე, ერთი გადაცემათა კოლოფზე ძირზე და ერთი იმ ადგილას, სადაც ტელეფონის ბაზაა.
  2. მიამაგრეთ შეხების სენსორი ტელეფონის დამჭერს, რათა იცოდეს როდის არის ტელეფონი იქ.
  3. შემდეგ მიამაგრეთ მექანიზმი და მკლავი მათ შესაბამის სერვისზე
  4. დარწმუნდით, რომ მავთულები არ ერევა სხვა კომპონენტებში ელექტრონიკის შევსებისას

ნაბიჯი 5: კოდი

არსებობს სამი კომპლექტი კოდი, რომელიც წარმოდგენილი იქნება, ერთი კოდი Arduino– სთვის, რომელიც შეიქმნა Arduino IDE– ში და ორი კოდი, რომელიც დამზადებულია Android Studio– ში. Android პროგრამები იგივეა, გარდა ერთისა არის სრული აპლიკაცია, რომელიც აკონტროლებს ბატარეის ხანგრძლივობას და ერთი არა. მეორე არის ტესტირების მიზნით.

არდუინოს კოდი

ამ კოდის მთავარი პუნქტია სენსორული სენსორის და ძრავების მუშაობა, ის იღებს ბრძანებას ტელეფონიდან და მოქმედებს მასზე.

#მოიცავს // იძახებს სერვო ბიბლიოთეკას, რათა შევძლოთ გავაკონტროლოთ ორი servosServo servo1; Servo servo2; // ქმნის ორ servo ობიექტს თითოეული servo motor- ისთვის int a = 0; // ცვლადი ცვლადი int q = 0; // ცვლადი, რომელიც იძლევა შეფერხებას pluggin პროცესის დაწყებამდე char c; // ცვლადი, რომელიც შეიცავს სერიულ შეტყობინებას ტელეფონისგან void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ანიჭებს ვარდნის შეწყვეტას ზუსტად რომ იცოდეს, როდესაც შეხების სენსორი ხედავს, როდესაც ტელეფონი გამორთულია servo1.attach (10); servo2.attach (9); // იწყებს ორ სერვისს Serial.begin (9600); // იწყებს სერიულ კომუნიკაციას bluetooth მოდულის servo2.write (20) მსგავსი სიჩქარით; // ავტომატურად აყენებს სერვისებს საწყისი პოზიცია servo1.write (180); }

ბათილი მარყუჟი () {

if (Serial.available ()) {// ეს ამოწმებს არის თუ არა ტელეფონიდან რაიმე შემოსული სერიული ქინძისთავების Tx და Rx c = Serial.read (); // კითხულობს რა მოდის თუ (c == 't') {// თუ სერიული მოწყობილობა კითხულობს მაშინ ეს ნიშნავს რომ ტელეფონი სრულად არის დამუხტული, გამორთვის პროცესი იწყება servo2.write (120); // გამორთავს დამტენის დაგვიანებას (5000); // ელოდება დარწმუნებას არის დრო მოხსნისთვის servo1.write (110); // ტელეფონს გადააქვს ვერტიკალურ მდგომარეობაში სასიგნალოდ //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ხელახლა მიამაგრებს შეწყვეტას}} if (q == 1) {// თუ pluggin– ის პირობაა ture მაშინ დაიწყეთ დამტენის დაგვიანების მიმაგრება (10000); servo2.write (0); // გადააქვს servo პოზიციაში q = 0; // აღადგენს მდგომარეობას}}

ბათილია AH () {

//Serial.println("in "); servo1.write (180); // ტელეფონის პლატფორმას ჩამოაგდებს დატენვის პოზიციაში q = 1; // იწყებს პროცესის გაგრძელების მდგომარეობას // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // აშორებს წყვეტს, ისე რომ არ იქნება რაიმე პრობლემა შეფერხებასთან ერთად, როდესაც არ უნდა}

Android აპლიკაცია

აქ მე მხოლოდ სათანადო აპს ვაჩვენებ, მაგრამ საცდელი კოდის ფაილიც იქნება მოცემული, ერთადერთი განსხვავება იქნება runnable და getBattery კლასის წაშლა. ნახსენები სერიული კოდი არის სტანდარტული ტელეფონებისთვის, რომლებიც აკავშირებენ ისეთ მოწყობილობებს, როგორიცაა მოდული.

პაკეტი com.example.daniel.make; android.bluetooth. BluetoothAdapter იმპორტი; android.bluetooth. BluetoothDevice; android.bluetooth. BluetoothSocket იმპორტი; android.os. Handler იმპორტი; android.support.v7.app. AppCompatActivity იმპორტი; android.os. Bundle იმპორტი; android.content. Intent; android.content. IntentFilter იმპორტი; android.os. BatteryManager იმპორტი; იმპორტი java.io. IOException; java.io. OutputStream იმპორტი; იმპორტი java.util. Set; java.util. UUID იმპორტი;

საჯარო კლასი MainActivity აფართოებს AppCompatActivity {

// საჭირო ობიექტების შექმნა დამმუშავებელი დამმუშავებელი; // ეხმარება მარყუჟში Runnable runnable; // მუშაობს მუდმივად BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; გამომავალი ნაკადი mmOutputStream; არასტაბილური ლოგიკური გაჩერება მუშაკი; კერძო OutputStream outputStream; კერძო ფინალური სიმებიანი DEVICE_NAME = "HC-05"; კერძო საბოლოო UUID PORT_UUID = UUID.frostString ("00001101-0000-1000-8000-00805f9b34fb"); პირადი BluetoothAdapter მოწყობილობა; პირადი BluetoothSocket სოკეტი; @Override დაცული void onCreate (შეკვრა შენახული InstantState) {// არის მითითებების ნაკრები, რომელიც მუშაობს პროგრამის შექმნისას super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = ახალი Runnable () {@Override public void run () {// არაერთხელ გადის int level = (int) getBattery (); // იღებს ბატარეის მიმდინარე დონეს, თუ (დონე == 100) {// თუ ბატარეის დონე აღწევს 100% try {getBT (); // უკავშირდება bluetooth მოდულს openBT (); // ხსნის sendData (); // აგზავნის საჭირო მონაცემებს closeBT (); // ხურავს ობიექტს} დაჭერას (IOException ex) { }} handler.postDelayed (გასაშვებად, 5000); // შეფერხება}}; დამმუშავებელი = ახალი დამმუშავებელი (); handler.postDelayed (გასაშვებად, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // ქმნის მოქმედებას, რომელიც აკავშირებს ბატარეას int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // იღებს უკეთეს დონეს int = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // იღებს ბატარეის მასშტაბს, თუ (დონე == -1 || მასშტაბი == -1) {// შეცდომის შემთხვევაში 50.0f; } float batt = (დონე/(float) მასშტაბი)*100.0f; // იღებს სათანადო მასშტაბის დასაბრუნებელ ბატს; // აბრუნებს დონეს}

void getBT () {// იღებს შესაძლო bluetooth კავშირებს

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // იღებს ადაპტერს, თუ (! mBluetoothAdapter.isEnabled ()) {// დარწმუნდება, რომ ტელეფონს აქვს ლურჯი კბილი Intent enableBluetooth = ახალი განზრახვა (BluetoothAdapter. ACTION_REQUEST_ENABLE იყოს); // მოთხოვნები ჩართულია თუ არ startActivityForResult (enableBluetooth, 0); } დაყენებული pairedDevices = mBluetoothAdapter.getBondedDevices (); // იღებს შეკრული bluetooth სიას, თუ (pairedDevices.size ()> 0) {// დარწმუნდება, რომ არსებობს რამდენიმე მოწყობილობა (BluetoothDevice მოწყობილობა: pairedDevices) {// მარყუჟების მეშვეობით მოწყობილობები if (device.getName (). უდრის ("HC-05")) {// ამოწმებს, არის თუ არა მისი სწორი mmDevice = მოწყობილობა; // ინახავს შესვენებას; }}}}

void openBT () ისვრის IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // სტანდარტული // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // აკავშირებს მოწყობილობას შესაბამისი id mmSocket.connect (); // აკავშირებს mmOutputStream = mmSocket.getOutputStream (); // იწყებს გაგზავნის უნარს მონაცემები arduino მოდულისთვის}

void sendData () ისვრის IOException {// კლასს, რომელიც აგზავნის t არდუინოს

mmOutputStream.write ('t'); }

void closeBT () ისვრის IOException {// ხურავს ყველა კავშირს არდუინოსთან

stopWorker = ჭეშმარიტი; mmOutputStream.close (); mmSocket.close (); }}

ნაბიჯი 6: ფაილები

გმადლობთ კითხვისთვის, თან ერთვის ფაილები, რომლებიც გამოყენებულ იქნა ამ პროექტში

გირჩევთ: