Tutorial ini menunjukkan cara merancang robot rover dua roda yang dikendalikan dari jarak jauh melalui jaringan wi-fi, menggunakan Arduino Uno yang terhubung ke modul Wi-fi ESP8266 dan dua motor stepper. Robot dapat dikendalikan dari browser internet biasa, menggunakan antarmuka yang dirancang dengan HTML. Smartphone Android digunakan untuk menyiarkan video dan audio dari robot ke antarmuka kontrol operator.
Ada banyak kit robotika yang tersedia online dengan berbagai bentuk, dimensi dan harga. Namun, tergantung pada aplikasi Anda, tidak ada yang cocok, dan Anda mungkin menemukan mereka terlalu mahal untuk eksperimen Anda. Atau mungkin Anda hanya ingin membuat struktur mekanis Anda sendiri daripada membeli satu yang lengkap. Tutorial ini juga menunjukkan cara merancang dan membangun bingkai akril hemat biaya untuk proyek robotika Anda sendiri, menggunakan alat biasa bagi mereka yang tidak memiliki akses ke printer 3D atau pemotong laser yang mahal. Platform robot sederhana disajikan.
Panduan ini dapat disesuaikan untuk mengubah bentuk atau antarmuka kontrolnya. Ini telah disesuaikan untuk proyek robotika lain saya ("Robô da Alegria"), yang dapat Anda periksa di tautan di bawah ini:
[Peringatan: beberapa foto usang karena desain telah diperbaiki lebih lanjut. Namun, ide yang disajikan di sini masih berlaku.]
Langkah 1: Alat
Alat berikut diperlukan untuk konstruksi prototipe ini:
Gergaji tangan (untuk memotong lembaran akril secara awal)
Obeng (untuk penempatan bulon dan dadu)
Penggaris (untuk pengukuran dimensi)
Pisau utilitas (untuk memotong lembaran akril)
Mesin bor (untuk membuat lubang untuk bulon)
Kertas pir (untuk menghaluskan tepis kasar)
Langkah 2: Struktur Mekanis dan Bahan
Untuk membangun robot kustom, pertama-tama Anda harus merancang struktur mekanis Anda. Mungkin mudah, tergantung pada aplikasi Anda, atau penuh dengan detail dan batasan. Anda mungkin perlu merancangnya dalam perangkat lunak CAD 3D atau hanya menggambar dalam 2D, tergantung pada kompleksitas model Anda.
Anda juga dapat membeli struktur lengkap online jika Anda tidak ingin membangun struktur mekanis Anda sendiri. Ada banyak kit robotika yang tersedia online. Dalam hal ini, Anda mungkin dapat melompat ke Langkah 6.
Untuk tutorial ini, bingkai akril hemat biaya dirancang untuk pemasangan motor dan komponen lain. Struktur yang disajikan dalam tutorial ini dirancang 3D menggunakan perangkat lunak CAD 123D Design. Setiap bagian kemudian dikonversi ke 2D menggunakan perangkat lunak Draftsight.
Bahan-bahan yang digunakan adalah sebagai berikut:
Lemaran akril 2mm
Roda 42x19mm dengan ban karet (x2)
Roda omni bola baja 49x20x32mm (x1)
Bulon M2 x 10mm (x12)
Dadu M2 x 1,5mm (x12)
Bulon M3 x 10mm (x8)
Dadu M3 x 1,5mm (x8)
Bulon 5/32" x 1" (x3)
Dadu 5/32" (x6)
Klip selfie stick genggam
Bracket aluminium 3 x 3 cm (x4)
Konstruksi struktur dasar dibagi menjadi langkah-langkah berikut:
Potong dasar akril sesuai dimensi dalam gambar 2D;
Buat lubang di posisi yang ditunjukkan dalam gambar 2D;
Pasang komponen dengan bulon dan dadu sesuai gambar 3D.
Sayangnya diameter poros motor stepper lebih besar dari lubang pada roda. Jadi Anda mungkin perlu menggunakan lem untuk menyatukan komponen-komponen tersebut. Untuk tutorial ini saya membuat kopling kayu improvised antara poros motor dan roda.
Pertama Anda perlu mentransfer dimensi model Anda ke lembaran akril. Cetak gambar 2D Anda menggunakan printer biasa pada kertas perekat, lalu potong kertas dengan dimensi yang sesuai dan terapkan mask tersebut pada permukaan akril.
Anda mungkin dapat menggunakan gergaji tangan untuk memotong akril sesuai dimensi Anda atau menggunakan teknik patah yang dijelaskan di bawah ini.
Dengan pisau utilitas dan dengan bantuan penggaris atau skala, potong akril dalam garis lurus. Anda tidak perlu memotong hingga melalui lembaran, cukup garis untuk membuat jejak tempat potongan akan dilakukan nanti.
Letakkan akril pada permukaan datar, tahan dengan beberapa klem dan tekan dengan tekanan hingga lembaran pecah menjadi dua. Ulangi proses ini hingga semua potongan selesai. Setelah itu, Anda dapat menggunakan kertas pir untuk menghaluskan tepis kasar.
Langkah 4: Membuat Lubang pada Dasar
Buat lubang di posisi yang ditunjukkan dalam gambar 2D (ditunjukkan dalam mask) dengan mesin bor.
Akril relatif mudah untuk dibor. Jadi jika Anda tidak memiliki mesin bor, Anda dapat membuat lubang secara manual dengan alat tajam, seperti pisau utilitas. Anda juga dapat menggunakannya untuk memperbesar lubang kecil agar sesuai ukuran bulon.
Lepaskan mask dan dasar Anda akan siap.
Langkah 5: Merakit Struktur
Pasang komponen dengan bulon dan dadu sesuai gambar, dan struktur Anda akan siap digunakan.
Bulon M3 digunakan untuk pemasangan motor stepper, sedangkan bulon 5/32" digunakan untuk pemasangan roda depan dan klip smartphone.
Sekarang istirahat sejenak dan mulai merakit rangkaian di langkah berikut...
Langkah 6: Elektronika
Anda akan membutuhkan komponen elektronik berikut:
Arduino Uno (beli)
ESP8266 (beli)
Protoshield (untuk versi yang lebih kompak) atau papan roti biasa (beli)
Resistor 1 kohm (x2)
Resistor 10 kohm (x1)
Beberapa kabel jumper
Motor stepper dengan driver ULN2003 (x2) (beli / beli)
Komputer (untuk mengkompilasi dan mengunggah kode Arduino)
Power bank (beli)
Kabel USB
Anda tidak memerlukan alat khusus untuk perakitan rangkaian. Semua komponen dapat ditemukan online di toko e-commerce favorit Anda. Rangkaian diberi daya oleh power bank yang terhubung ke port USB Arduino.
Hubungkan semua komponen sesuai skematik. Anda akan membutuhkan beberapa kabel jumper untuk menghubungkan modul ESP-8266 dan motor stepper. Anda dapat menggunakan protoshield (untuk rangkaian yang lebih kompak), papan roti biasa, atau merancang shield Arduino Anda sendiri.Colokkan kabel USB ke papan Arduino Uno dan lanjutkan ke langkah berikutnya.
Langkah 7: Kode Arduino
Instal Arduino IDE terbaru. Dalam langkah proyek ini perpustakaan stepper.h digunakan untuk kontrol motor stepper. Tidak diperlukan perpustakaan tambahan untuk komunikasi dengan modul ESP-8266. Silakan periksa baudrate ESP8266 Anda dan atur dengan benar dalam kode.
Unduh kode Arduino (stepperRobot.ino) dan ganti XXXXX dengan SSID router wifi Anda dan YYYYY dengan kata sandi router. Hubungkan papan Arduino ke port USB komputer Anda dan unggah kode.
FG1K5KJITKJFW2R.ino
Langkah 8: IP cam Android
Smartphone Android digunakan untuk menyiarkan video dan audio dari robot ke antarmuka kontrol. Anda dapat menemukan aplikasi di Google Play store (https://play.google.com/store/apps/details?id=com.pas.webcam).
Instal dan lanjutkan ke langkah berikutnya.
Langkah 9: Tempatkan Rangkaian dalam Robot
Pasang rangkaian di bagian atas robot menggunakan beberapa bulon M1, seperti yang ditunjukkan dalam gambar.
Setelah itu, tempel power bank Anda di bagian belakang robot menggunakan tali ganda (karena mudah dilepas nanti), dan masukkan smartphone Anda ke dalam klip.
Langkah 10: Antarmuka Kontrol Berbasis Web
Antarmuka html dirancang untuk kontrol robot.
Unduh interface.rar dan ekstrak semua file ke folder tertentu. Kemudian buka di Firefox.
Form kotak teks digunakan dalam antarmuka tersebut untuk memasukkan alamat IP modul ESP dan server video/audio (dari aplikasi Android IP Webcam).
Ada tes but, yang akan membuat robot berputar hingga perintah lain diterima. Tombol panah keyboard digunakan untuk menggerakkan robot ke depan atau belakang, dan untuk berputar ke kiri atau kanan.
FQTAWF5ITKJFW4O.rar
Langkah 11: Penggunaan
Saat Arduino di-restart, itu akan mencoba terhubung ke jaringan wi-fi Anda secara otomatis. Gunakan Serial Monitor untuk memeriksa apakah koneksi berhasil, dan untuk mengetahui IP mana yang diberikan router Anda ke ESP-8266 Anda. Buka file html di browser internet (Firefox) dan masukkan alamat IP ini dalam kotak teks.
Anda juga dapat menggunakan cara lain untuk mengetahui alamat IP mana yang diberikan router Anda ke perangkat Anda.
Putuskan koneksi Arduino Uno dari komputer Anda dan hubungkan ke power bank. Tunggu hingga terhubung lagi.
Jalankan aplikasi IP Webcam di smartphone yang terpasang di robot. Ketik IP video/audio di antarmuka kontrol Anda dan terhubung ke server dan Anda siap. Anda mungkin perlu mengurangi resolusi video di aplikasi untuk mengurangi penundaan selama transmisi.
Klik dan tahan tombol panah keyboard Anda untuk memutar robot atau menggerakkannya ke depan/belakang dan enjoy menjelajahi lingkungan Anda.
Kode
Arduino
html control interface
ArduinoArduino
Kode Arduino.
//include libraries #include <SoftwareSerial.h> #include <Stepper.h> SoftwareSerial esp8266(3, 2); //RX pin = 3, TX pin = 2 //definition of variables #define DEBUG true //show messages between ESP8266 and Arduino in serial port const int stepsPerRevolution = 500; int state = 5; Stepper rightStepper(stepsPerRevolution, 8,10,9,11); Stepper leftStepper(stepsPerRevolution, 4,6,5,7); //***** //SETUP //***** void setup() { //start communication Serial.begin(9600); esp8266.begin(19200); sendData("AT+RST\r\n", 2000, DEBUG); //reset module sendData("AT+CWMODE=1\r\n", 1000, DEBUG); //set station mode sendData("AT+CWJAP=\"XXXXX\",\"YYYYY\"\r\n", 2000, DEBUG); //connect wi-fi network while(!esp8266.find("OK")) { //wait for connection } sendData("AT+CIFSR\r\n", 1000, DEBUG); //show IP address sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); //allow multiple connections sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // start web server on port 80 //Define motor speed rightStepper.setSpeed(60); leftStepper.setSpeed(60); } void loop() { if (esp8266.available()) //verify incoming data { if (esp8266.find("+IPD,")) //if there is a message { String msg; esp8266.find("?"); //look for the message msg = esp8266.readStringUntil(' '); //read whole message String command = msg.substring(0, 3); //first 3 characters = command String valueStr = msg.substring(4); //next 3 characters = value int value = valueStr.toInt(); if (DEBUG) { Serial.println(command); Serial.println(value); } //move forward if(command == "cm1") { state = 1; } //move backward if(command == "cm2") { state = 2; } //turn right if(command == "cm3") { state = 3; } //turn left if(command == "cm4") { state = 4; } //do nothing if(command == "cm5") { state = 5; } } } //move forward if (state == 1) { rightStepper.step(1); leftStepper.step(-1); } //move backward if (state == 2) { rightStepper.step(-1); leftStepper.step(1); } //move right if (state == 3) { rightStepper.step(1); leftStepper.step(1); } //move left if (state == 4) { rightStepper.step(-1); leftStepper.step(-1); } //do nothing if (state == 5) { } } //******************* //Auxiliary functions //******************* String sendData(String command, const int timeout, boolean debug) { String response = ""; esp8266.print(command); long int time = millis(); while ( (time + timeout) > millis()) { while (esp8266.available()) { char c = esp8266.read(); response += c; } } if (debug) { Serial.print(response); } return response; }