Adakah anda ingin belajar membuat robot anda sendiri? Terdapat banyak jenis robot, yang boleh anda buat sendiri. Sebilangan besar orang ingin melihat robot melakukan kerja mudah dari titik A ke B. Anda boleh membina robot sepenuhnya dari komponen analog atau membeli starter kit. Membuat robot anda sendiri adalah kaedah terbaik untuk belajar elektronik dan pengaturcaraan komputer.
Langkah
Bahagian 1 dari 5: Memasang Robot
Langkah 1. Pasang komponen anda
Untuk membina robot asas, anda memerlukan beberapa komponen mudah. Anda boleh mendapatkan sebahagian besar atau semua komponen ini di kedai hobi elektronik tempatan anda, atau di beberapa peruncit dalam talian. Beberapa kit merangkumi semua komponen ini. Robot ini tidak memerlukan pematerian:
- Arduino Uno (atau pengawal mikro lain)
- 2 servo 360 darjah
- 2 roda sepadan dengan servo
- 1 roda percuma
- 1 papan ujian (papan roti atau papan projek) yang belum disolder (cari papan ujian yang mempunyai dua baris positif dan negatif di setiap sisi)
- 1 sensor jarak (dengan kabel penyambung empat pin)
- 1 suis butang tekan
- 1 perintang 10kΩ
- 1 kabel USB A hingga B
- 1 set tajuk yang boleh dilanggar
- 1 pemegang bateri 6 x AA dengan soket kuasa 9V DC
- 1 pek kabel jumper 22 atau kabel tunggal
- Penebat bolak-balik (double tape) atau gam gun
Langkah 2. Putar ruang bateri sehingga punggungnya yang rata menghadap ke atas
Anda akan membina badan robot menggunakan ruang bateri sebagai pangkalan.
Langkah 3. Susun dua servo menghadap ke arah yang sama di hujung tempat bateri
Hujung ini adalah hujung di mana kabel keluar dari bateri. Servo harus menyentuh bahagian bawah, dan mekanisme putaran setiap servo harus menghadap ke luar dari sisi ruang bateri. Penting agar servo ini disusun dengan betul supaya roda lurus. Kabel untuk servo mesti keluar dari bahagian belakang ruang bateri.
Langkah 4. Lekatkan servo dengan penebat atau gam anda
Pastikan servo dipasang dengan kuat ke ruang bateri. Bahagian belakang servo mesti sejajar dengan bahagian belakang ruang bateri.
Sekarang, servo harus mengambil separuh ruang di bahagian belakang ruang bateri
Langkah 5. Lekatkan papan ujian tegak lurus dengan ruang yang tinggal di ruang bateri
Papan ujian ini akan digantung sedikit di bahagian depan ruang bateri, dan akan memanjang ke kedua-dua sisi. Pastikan papan ujian ketat sebelum meneruskan. Baris "A" harus paling dekat dengan servo.
Langkah 6. Pasang mikrokontroler Arduino ke bahagian atas servo
Sekiranya anda memasang servo dengan betul, mesti ada bahagian rata dari dua servo yang saling bersentuhan. Pasang papan Arduino ke tempat rata ini sehingga penyambung kuasa USB dan Arduino menghadap ke bawah (jauh dari papan ujian). Bahagian depan Arduino akan bertindih dengan papan ujian.
Langkah 7. Pasang roda pada servo
Tekan roda dengan kuat ke mekanisme servo berputar. Ini mungkin memerlukan kekuatan yang besar kerana roda dirancang untuk mempunyai lubang yang sama persis dengan bentuk ujung servo.
Langkah 8. Pasang roda bebas di bahagian bawah papan ujian
Sekiranya anda membalikkan robot, anda akan melihat papan ujian kecil tergantung dari ruang bateri. Pasang roda bebas ke bahagian gantung ini. Gunakan baji jika diperlukan. Roda bebas berfungsi sebagai roda depan yang membolehkan robot berpusing ke arah mana pun dengan mudah.
Sekiranya anda membeli kit, roda bebas mungkin mempunyai beberapa baji yang boleh anda gunakan untuk memastikan roda bebas menyentuh tanah
Bahagian 2 dari 5: Pendawaian Robot
Langkah 1. Potong dua tajuk 3-pin
Anda akan menggunakannya untuk menyambungkan servo ke papan ujian. Tekan pin ke bawah melalui kepala, sehingga keduanya sama jarak di kedua sisi.
Langkah 2. Masukkan dua tajuk ke dalam pin 1-3 dan 6-8 pada baris E di papan ujian
Pastikan ia dimasukkan dengan kuat atau kuat.
Langkah 3. Sambungkan wayar servo dengan header, dengan wayar hitam di sebelah kiri (pin 1 dan 6)
Ini akan menghubungkan servo dengan papan ujian. Pastikan servo kiri disambungkan ke header kiri, dan servo kanan disambungkan ke header kanan.
Langkah 4. Sambungkan wayar pelompat merah dari pin C2 dan C7 ke pin rel merah (positif)
Pastikan anda menggunakan rel merah di bahagian belakang papan ujian (lebih dekat dengan badan robot yang lain).
Langkah 5. Sambungkan wayar pelompat hitam dari pin B1 dan B6 ke pin rel biru (tanah)
Pastikan anda menggunakan rel biru di bahagian belakang papan ujian. Jangan pasangkan kabel ke pin rel merah.
Langkah 6. Sambungkan wayar pelompat putih dari pin 12 dan 13 di Arduino ke A3 dan A8
Ini akan membolehkan Arduino mengawal servo dan memutar roda.
Langkah 7. Pasang sensor ke bahagian depan papan ujian
Sensor tidak dipasang ke rel kuasa luaran pada papan ujian, tetapi pada dua baris pin pertama yang ditulis dengan huruf (J). Pastikan anda meletakkannya tepat di tengah dengan sebilangan pin kosong di setiap sisi.
Langkah 8. Sambungkan wayar pelompat hitam dari pin I14 ke pin rel biru pertama di sebelah kiri sensor
Ini akan menggerakkan sensor.
Langkah 9. Sambungkan wayar pelompat merah dari pin I17 ke pin rel merah pertama di sebelah kanan sensor
Ini akan memberi kuasa kepada sensor.
Langkah 10. Sambungkan wayar pelompat putih dari pin I15 hingga pin 9 di Arduino, dan dari I16 hingga pin 8
Ini akan memberikan maklumat dari sensor ke mikrokontroler.
Bahagian 3 dari 5: Memasang Kabel Kuasa
Langkah 1. Balikkan robot sehingga anda dapat melihat ruang bateri di dalamnya
Susun ruang bateri sehingga kabel keluar melalui kiri bawah.
Langkah 2. Sambungkan wayar merah dengan pegas kedua dari kiri di bahagian bawah
Pastikan ruang bateri sejajar dengan betul atau menghadap ke arah yang betul.
Langkah 3. Sambungkan wayar hitam dengan pegas terakhir di kanan bawah
Kedua-dua wayar ini akan membantu memberikan voltan yang tepat ke Arduino.
Langkah 4. Sambungkan wayar merah dan hitam ke pin merah dan biru yang berada di sebelah kanan di bahagian belakang papan ujian
Kawat hitam harus menuju ke pin rel biru pada pin 30. Kawat merah harus menuju ke pin rel merah pada pin 30.
Langkah 5. Sambungkan wayar hitam dari pin GND di Arduino ke bahagian belakang rel biru
Sambungkan wayar ke pin 28 pada rel biru.
Langkah 6. Sambungkan wayar hitam dari belakang rel biru ke bahagian depan rel biru pada pin 29 untuk kedua-dua rel
Jangan sambungkan rel merah kerana anda boleh merosakkan Arduino.
Langkah 7. Sambungkan wayar merah dari bahagian depan rel merah pada pin 30 ke pin 5V di Arduino
Ini akan memberi kekuatan kepada Arduino.
Langkah 8. Masukkan suis tekan butang di ruang antara pin 24-26
Suis ini akan membolehkan anda mematikan robot tanpa perlu mematikan kuasa.
Langkah 9. Sambungkan wayar merah dari H24 ke rel merah di pin kosong seterusnya di sebelah kanan sensor
Ini akan memberi kuasa pada butang.
Langkah 10. Gunakan perintang untuk menyambungkan H26 ke rel biru
Sambungkannya ke pin tepat di sebelah wayar hitam yang baru anda sambungkan pada langkah sebelumnya.
Langkah 11. Sambungkan wayar putih dari G26 ke pin 2 di Arduino
Ini akan membolehkan Arduino mengesan butang tekan.
Bahagian 4 dari 5: Memasang Perisian Arduino
Langkah 1. Muat turun dan ekstrak Arduino IDE
Di sinilah Arduino dikembangkan dan membolehkan anda memprogram arahan yang kemudian anda boleh muat naik ke mikrokontroler Arduino anda. Anda boleh memuat turunnya secara percuma dari arduino.cc/en/main/software. Buka zip fail yang dimuat turun dengan mengklik dua kali pada fail dan memindahkan folder yang terdapat di dalamnya ke lokasi yang mudah diakses. Anda sebenarnya tidak akan memasang program, sebaliknya anda hanya akan menjalankannya dari folder yang diekstrak dengan mengklik dua kali pada arduino.exe.
Langkah 2. Sambungkan petak bateri ke Arduino
Masukkan soket belakang bateri ke dalam penyambung di Arduino untuk menghidupkannya.
Langkah 3. Masukkan Arduino ke dalam komputer anda melalui USB
Kemungkinannya, Windows tidak akan mengenali peranti tersebut.
Langkah 4. Tekan
Menang + R dan taip devmgmt.msc.
Perintah ini akan membuka Pengurus Peranti.
Langkah 5. Klik kanan pada Peranti tidak diketahui di bawah Peranti lain dan pilih Kemas kini Perisian Pemacu
Sekiranya anda tidak melihat pilihan ini, klik Properties, pilih tab Driver, dan kemudian klik Update Driver.
Langkah 6. Pilih Browse komputer saya untuk perisian pemacu
Ini akan membolehkan anda memilih pemacu terbina dalam yang disertakan dengan Arduino IDE.
Langkah 7. Klik Browse, kemudian buka folder yang anda ekstrak sebelumnya
Anda akan menemui folder pemacu di dalamnya.
Langkah 8. Pilih folder pemacu dan klik OK
Sahkan bahawa anda ingin meneruskan sekiranya anda diberi amaran mengenai perisian yang tidak diketahui.
Bahagian 5 dari 5: Pengaturcaraan Robot
Langkah 1. Buka Arduino IDE dengan mengklik dua kali pada fail arduino.exe dalam folder IDE
Anda akan disambut dengan projek kosong.
Langkah 2. Tampal atau tampal kod berikut untuk membuat robot anda maju
Kod di bawah ini akan memastikan Arduino anda tetap berjalan.
#include // ini menambah perpustakaan "Servo" ke program // perintah berikut membuat dua objek servo Servo leftMotor; Servo kananMotor; batal persediaan () {leftMotor.attach (12); // jika anda menukar nombor pin untuk servo anda secara tidak sengaja, anda boleh menukar nombor di sini dengan betulMotor.attach (13); } gelung kosong () {leftMotor.write (180); // dengan putaran 360 darjah (putaran berterusan), angka 180 memerintahkan servo untuk bergerak "maju" pada kelajuan penuh. rightMotor.write (0); // jika kedua-dua nilai 180, robot akan berputar dalam bulatan kerana servo terbalik. "0" memberitahu robot untuk bergerak "ke belakang" pada kelajuan penuh. }
Langkah 3. Buat dan muat naik program
Klik butang anak panah kanan di sudut kiri atas untuk membuat dan memuat naik program ke Arduino yang bersambung.
Anda mungkin ingin mengangkat robot dari permukaan kerana robot akan terus berjalan ke hadapan setelah program dimuat naik
Langkah 4. Tambahkan fungsi suis berhenti (kill switch)
Tambahkan kod berikut ke bahagian "gelung void ()" pada kod anda untuk menambah fungsi suis berhenti di atas fungsi "tulis ()".
if (digitalRead (2) == TINGGI) // perintah ini berjalan apabila butang ditekan pada pin 2 Arduino {sambil (1) {leftMotor.write (90); // "90" adalah kedudukan neutral untuk servo, yang memberitahu servo untuk berhenti membelok ke kananMotor.write (90); }}
Langkah 5. Muat naik dan periksa kod anda
Dengan kod suis berhenti sudah ditambah, anda boleh memuat naik kod dan menguji robot. Robot harus terus maju ke hadapan sehingga anda menekan butang berhenti berhenti yang akan menyebabkan robot berhenti. Kod penuh akan kelihatan seperti ini:
#include // perintah berikut membuat dua objek servo leftMotor servo; Servo kananMotor; batal persediaan () {leftMotor.attach (12); rightMotor.attach (13); } gelung void () {if (digitalRead (2) == TINGGI) {sambil (1) {leftMotor.write (90); rightMotor.write (90); }} leftMotor.write (180); rightMotor.write (0); }
Contohnya
Kod berikut akan menggunakan sensor yang dipasang pada robot untuk membuatnya berpusing ke kiri setiap kali robot menghadapi halangan. Lihat komen dalam kod untuk perincian mengenai cara menggunakan setiap bahagian. Kod di bawah adalah keseluruhan program.
#masuk Servo leftMotor; Servo kananMotor; const int serialPeriod = 250; // kod ini memberikan kelewatan masa output konsol agar setiap 1/4 saat (250 ms) lama tidak ditandatanganiSerialDelay = 0; const int loopPeriod = 20; // kod ini menetapkan frekuensi bacaan sensor menjadi 20 ms, iaitu 50 Hz lama tidak ditandatanganiLoopDelay = 0; // kod ini memberikan fungsi TRIG dan ECHO ke pin di Arduino. Laraskan nombor di sini jika anda menghubungkannya dengan cara yang berbeza const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonik2Distance; int ultrasonik2Duration; // kod ini menentukan dua kemungkinan keadaan robot: teruskan ke hadapan atau belok kiri #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = teruskan ke hadapan (DEFAULT), 1 = pusing kiri kosong persediaan () {Serial.begin (9600); // sensor ini menentukan pin konfigurasi pinMode (ultrasonik2TrigPin, OUTPUT); pinMode (ultrasonik2EchoPin, INPUT); // ini memberikan motor ke pin Arduino leftMotor.attach (12); rightMotor.attach (13); } gelung void () {if (digitalRead (2) == TINGGI) // kod ini mengesan '' berhenti '' {sementara (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // kod ini mencetak mesej debug ke konsol bersiri jika (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // kod ini memerintahkan sensor untuk membaca dan menyimpan data mengenai keadaan jarak mesin yang diukur (); timeLoopDelay = milis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // jika tidak ada halangan yang dikesan {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // jika tidak ada yang berada di hadapan robot. ultrasonik Jarak akan menjadi negatif bagi sebilangan ultrasonik sekiranya tidak ada halangan {// maju kananMotor.write (180); leftMotor.write (0); } lain // jika ada objek di hadapan kita {state = TURN_LEFT; }} lain jika (state == TURN_LEFT) // jika ada halangan yang dikesan, pusing kiri {unsigned long timeToTurnLeft = 500; // mengambil masa kira-kira 0.5 saat untuk bertukar 90 darjah. Anda mungkin perlu menyesuaikan nilai ini jika roda anda berbeza dalam ukuran dari ukuran dalam contoh putaran panjang yang tidak ditandatanganiStartTime = millis (); // jaga keadaan ketika robot mula berpusing sementara ((milis () - turnStartTime) <timeToTurnLeft) // simpan kitaran ini sehingga timeToTurnLeft (500) berlalu {// belok kiri, ingatlah bahawa ketika keduanya adalah "180", robot akan berpusing. rightMotor.write (180); leftMotor.write (180); } nyatakan = DRIVE_FORWARD; }} batal readUltrasonicSensors () {// ini untuk ultrasonik 2. Anda mungkin perlu mengubah arahan ini jika anda menggunakan sensor yang berbeza. digitalWrite (ultrasonik2TrigPin, TINGGI); kelewatanMikrodetik (10); // tarik pin TRIG tinggi sekurang-kurangnya 10 mikrodetik digitalWrite (ultrasonik2TrigPin, RENDAH); ultrasonic2Duration = pulseIn (ultrasonic2EchoPin, TINGGI); ultrasonic2Distance = (ultrasonic2Duration / 2) / 29; } // berikut adalah untuk kesalahan debug pada konsol. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (ultrasonik2Distance); Serial.print ("cm"); Bersiri.println (); timeSerialDelay = milis (); }}