Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Buat robot Arduino pertama Anda - Panduan pemula terbaik!

Komponen dan persediaan

Arduino UNO
× 1
Adafruit L293D Motor Shield
Ini adalah perangkat berbiaya rendah, dan mudah digunakan. Ini biasanya tersedia pelindung motor yang tidak memerlukan keterampilan sebelumnya. Itu juga dapat diprogram dengan mudah menggunakan perpustakaan Adafruit.
× 1
Sensor Ultrasonik HC-SR4
× 1
Modul Bluetooth HC-05
× 1
Motor bergigi
× 2
Roda
× 2
Roda roda
× 2
Baterai 9V (generik)
× 3
Klip Baterai 9V
× 3
Kabel Jumper Wanita/Wanita
× 8
Kotak Plastik
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Pistol lem panas (generik)
Driver obeng

Aplikasi dan layanan online

Bluetooth Electronics
Arduino IDE
Adafruit-Motor-Shield-library

Tentang proyek ini

Jika Anda seorang pemula di Arduino dan memiliki rencana untuk membuat robot pertama Anda, maka inilah tutorialnya untuk Anda. Lihat gambar apa yang akan Anda buat, hari ini.

Dalam tutorial ini saya akan menunjukkan cara membuat robot Arduino dengan fungsi yang berbeda. Kita dapat mempelajari penggunaan program yang berbeda untuk fungsi yang berbeda, terutama robot yang dikendalikan ponsel pintar dengan penghindar Rintangan, pengikut dinding, dan pemecah labirin. Atau Anda juga bisa membuatnya hanya untuk satu fungsi.

Bahan dan Alat

Langkah 2:Membuat Sasis

Bor dua lubang untuk motor:

Hubungkan dua motor:

Buat tiga lubang untuk roda kastor:

Hubungkan roda kastor:

Buat dua lubang di kedua sisi kotak untuk menghubungkan motor dan tiga lubang di bagian bawah untuk menghubungkan roda kastor setelah mengukur dan menandai diameter yang benar. Kemudian pasang motor dan kastor.

Baterai

Menghubungkan baterai.

Diagram koneksi.

Rekatkan baterai di dalam kotak.

Pasang dua baterai 9 volt di dalam kotak di atas kastor. Kemudian sambungkan secara paralel dan sambungkan sakelar seperti yang ditunjukkan pada diagram di atas.

Menghubungkan Arduino dan Pelindung Motor

Pasang pelindung motor di atas Arduino.

Hubungkan kabel baterai ke PWR terminal pelindung motor.

Hubungkan motor ke pelindung motor.

Lepaskan jumper dari port ini.

Hubungkan pelindung motor di atas Arduino dan letakkan di atas baterai. Kemudian sambungkan kabel dari motor dan baterai ke pelindung motor. Periksa diagram koneksi sebelum menghubungkan, karena ini sangat penting.

Petunjuk Pengkabelan:

  • Hubungkan motor kiri ke "M1" pelindung motor
  • Hubungkan motor kanan ke "M3" pelindung motor
  • Hubungkan kabel dari baterai ke "ext pwr" pelindung motor

Buat dua lubang dan nyalakan Arduino

Tandai tempat untuk membuat lubang.

Buat lubangnya.

Hubungkan klip baterai ke jack DC male ke baterai 9V.

Tempatkan baterai 9 volt ini di dalam kotak.

Buat dua lubang untuk mengakses port USB dan port input DC Arduino. Ambil baterai 9 volt lagi dan sambungkan klip baterai ke adaptor jack DC male, lalu sambungkan jack DC male ke port input Arduino DC, untuk menyalakan Arduino. Kemudian letakkan baterai di antara motor dan Arduino di dalam kotak.

Menghubungkan Modul dan Sakelar Bluetooth

Hubungkan modul Bluetooth ke Arduino seperti yang ditunjukkan pada diagram koneksi dan letakkan di dalam kotak. Kemudian buat lubang untuk memasang sakelar di bagian belakang kotak dan sambungkan sakelar (di sini saya telah mengganti sakelar yang digunakan sebelumnya karena beberapa masalah penyolderan).

Petunjuk Pengkabelan modul Bluetooth:

  • "TX" Modul Bluetooth beralih ke "RX" Arduino
  • "RX" Modul Bluetooth beralih ke "TX" Arduino
  • "VCC" Modul Bluetooth beralih ke "5v" Arduino
  • "GND" Modul Bluetooth beralih ke "GND" Arduino
  • Pin Status &Kunci dari modul BT tetap tidak digunakan.

Diagram Sirkuit Keseluruhan

Pemasangan Sensor Ultrasonik

Ambil sensor ultrasonik dan rekatkan sepotong plastik kecil berbentuk 'L' dan rekatkan di atas kotak plastik (atau jika Anda tidak memiliki lem, gunakan selotip dua sisi). Kemudian sambungkan kabel jumper ke seperti yang ditunjukkan pada diagram rangkaian di atas.

Petunjuk Pengkabelan sensor ultrasonik:

  • "VCC" dari sensor Ultra sonic beralih ke "+5" dari Arduino
  • "GND" dari sensor Ultra sonic beralih ke "GND" dari Arduino
  • Pin "Trig" dari sensor Ultra sonic masuk ke "Pin analog 1" Arduino
  • Pin "Echo" dari sensor Ultra sonic masuk ke "Pin analog 0" Arduino

Sekarang kita menyelesaikan semua koneksi dan saatnya memprogram.

Langkah terakhir - Kode Arduino dan pengeditan aplikasi Bluetooth

Unggah "Sketsa Akhir " disediakan di bagian kode. Jika Anda menghadapi kesalahan, pastikan Anda telah menginstal perpustakaan AFmotor.

Sekarang, kami belajar cara memprogram Arduino dengan mudah. Saya telah menunjukkan di sini beberapa program untuk bekerja robot ini sebagai robot penghindar rintangan, pengikut dinding, dan dikendalikan Bluetooth. dan akhirnya saya telah menggabungkan ketiga fungsi ini bersama-sama. Tonton video untuk detail dan informasi lebih lanjut

Memulai dengan Aplikasi Bluetooth

Bersenang-senang dengan Pengikut Dinding &Penghindaran Rintangan

Kunjungi blog saya di sini - robotechmaker.com

Jika Anda memiliki pertanyaan atau saran, silakan komentar di bawah.

Kode

  • Sketsa Bluetooth (Robot Terkendali)
  • Sketsa Akhir (Kode Akhir)
  • Sketsa Penghindar Rintangan
  • Sketsa Pengikut Dinding
Bluetooth (Robot Terkendali) SketsaArduino
/*Penulis:Marcelo Moraes Proyek ini berisi kode domain publik. Modifikasi diperbolehkan tanpa pemberitahuan. *///Libraries#include //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // buat motor #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // buat motor #3, 64KHz pwm//Konstanta dan variabelchar dataIn ='S';char determinan;char det;int vel =0; //Pengaturan Bluetooth Stuffvoid() { Serial.begin(9600); // set up Serial library pada 9600 bps //Initalisasi pesan Serial.println("ArduinoBymyself - ROVERBot"); Serial.println("Uji Motor AF!"); //matikan motor motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(LEPAS); motorLeft.run(RILIS); }void loop() { det =centang(); //panggil check() subrotine untuk mendapatkan kode serial //sakelar analisis kode serial (det){ case 'F':// F, maju motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'B':// B, mundur motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'L':// L, gerakkan roda ke kiri motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'R':// R, gerakkan roda ke kanan motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'I':// I, belok kanan ke depan motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'J':// J, belok kanan kembali motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'G':// G, belok kiri ke depan motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'H':// H, belok kiri ke belakang motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'S':// S, hentikan motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(LEPAS); motorLeft.run(RILIS); det =centang(); merusak; }}//mendapatkan kode bluetooth yang diterima dari port serial check(){ if (Serial.available()> 0){// jika ada data yang valid di port serial dataIn =Serial.read();// menyimpan data ke a varialbe //periksa kode if (dataIn =='F'){//Forward determinan ='F'; } else if (dataIn =='B'){//Backward determinan ='B'; } else if (dataIn =='L'){//Penentu kiri ='L'; } else if (dataIn =='R'){//Penentu kanan ='R'; } else if (dataIn =='I'){//Froward Right Determinan ='I'; } else if (dataIn =='J'){//Mundur Kanan determinan ='J'; } else if (dataIn =='G'){//Forward Left Determinan ='G'; } else if (dataIn =='H'){//Backward Left Determinan ='H'; } else if (dataIn =='S'){//Stop determinan ='S'; } else if (dataIn =='0'){//Speed ​​0 vel =0; } else if (dataIn =='1'){//Speed ​​25 vel =25; } else if (dataIn =='2'){//Speed ​​50 vel =50; } else if (dataIn =='3'){//Kecepatan 75 vel =75; } else if (dataIn =='4'){//Speed ​​100 vel =100; } else if (dataIn =='5'){//Speed ​​125 vel =125; } else if (dataIn =='6'){//Speed ​​150 vel =150; } else if (dataIn =='7'){//Speed ​​175 vel =175; } else if (dataIn =='8'){//Speed ​​200 vel =200; } else if (dataIn =='9'){//Speed ​​225 vel =225; } else if (dataIn =='q'){//Speed ​​255 vel =255; } else if (dataIn =='U'){//Lampu Belakang Aktif determinan ='U'; } else if (dataIn =='u'){//Back Lights Off Determinan ='u'; } else if (dataIn =='W'){//Front Lights On Determinan ='W'; } else if (dataIn =='w'){//Front Lights Off Determinan ='w'; } else if (dataIn =='V'){//Horn On determinan ='V'; } else if (dataIn =='v'){//Horn Off determinan ='v'; } else if (dataIn =='X'){//Extra On determinan ='X'; } else if (dataIn =='x'){//Extra Off determinan ='x'; } } mengembalikan determinan;}
Sketsa Akhir (Kode Akhir)Arduino
/*Penulis:Muhammad Azharvisit - robotechmaker.com*/#include #define trigPin 14 // tentukan pin sensor Anda#define echoPin 15 //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // buat motor #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // buat motor #3, 64KHz pwm//Konstanta dan variabelchar dataIn ='S';char determinan;char det;int vel =255; //Pengaturan Bluetooth Stuffvoid() { Serial.begin(9600); // set up Serial library pada 9600 bps pinMode(trigPin, OUTPUT);// setel pin trigonometri ke output (Kirim gelombang suara) pinMode(echoPin, INPUT);// setel pin gema ke input (menerima gelombang suara) / /Pesan inisialisasi Serial.println("Mr.robot"); Serial.println("Hari ulang untuk bekerja!"); //matikan motor motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(LEPAS); motorLeft.run(RELEASE);}void loop() { det =check(); //panggil check() subrotine untuk mendapatkan kode serial //sakelar analisis kode serial (det){ case 'F':// F, maju motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'B':// B, mundur motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'L':// L, gerakkan roda ke kiri motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'R':// R, gerakkan roda ke kanan motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'I':// I, belok kanan ke depan motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'J':// J, belok kanan kembali motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'G':// G, belok kiri ke depan motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FOWARD); motorLeft.run(FOWARD); det =centang(); merusak; case 'H':// H, belok kiri ke belakang motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(Mundur); motorLeft.run(Mundur); det =centang(); merusak; case 'S':// S, hentikan motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(LEPAS); motorLeft.run(RILIS); det =centang(); merusak; case 'm'://untuk robot pengikut dinding. motorRight.setSpeed(vel); //mengatur kecepatan motor, antara 0-255 motorLeft.setSpeed ​​(vel); durasi panjang, jarak; // mulai scan digitalWrite(trigPin, LOW); delayMicroseconds(2); // penundaan diperlukan agar operasi sensor berhasil. digitalWrite(trigPin, TINGGI); delayMicroseconds(10); //penundaan ini juga diperlukan! digitalWrite(trigPin, RENDAH); durasi =pulseIn(echoPin, TINGGI); jarak =(durasi/2) / 29.1;// ubah jarak menjadi sentimeter. if (jarak <30)/*Jarak yang harus dijaga dengan dinding */ { Serial.println ("Dinding ditentukan!" );Serial.println (" Mulai mengikuti dinding ");Serial.println (" Berbalik!"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FOWARD); motorLeft.run(RILIS); penundaan (500); // tunggu sebentar} else { Serial.println("Tidak ada Tembok yang terdeteksi. berputar balik"); penundaan (15); motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(LEPAS); motorLeft.run (FOWARD); } merusak; case 'b'://robot penghindar rintangan motorRight.setSpeed(vel); //mengatur kecepatan motor, antara 0-255 motorLeft.setSpeed ​​(vel); Adurasi panjang, Adistance; // mulai scan digitalWrite(trigPin, LOW); delayMicroseconds(2); // penundaan diperlukan agar operasi sensor berhasil. digitalWrite(trigPin, TINGGI); delayMicroseconds(10); //penundaan ini juga diperlukan! digitalWrite(trigPin, RENDAH); Adurasi =pulseIn(echoPin, TINGGI); Jarak =(Aduration/2) / 29.1;// ubah jarak menjadi sentimeter. if (Jarak <25)/*jika ada halangan 25 sentimeter, lakukan hal berikut:*/ { Serial.println ("Hambatan Dekat terdeteksi!" );Serial.println ("Detail Rintangan:");Serial.print ("Jarak Dari Robot adalah " );Serial.print ( Adistance);Serial.print ( " CM!");// mencetak jarak dalam sentimeter.Serial.println (" Rintangan dinyatakan sebagai ancaman karena jarak yang dekat . ");Serial.println("Memutar !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(Mundur); // Beloklah selama ada rintangan di depan. motorRight.run (FORWARD);} else { Serial.println ("Tidak ada kendala yang terdeteksi. maju"); penundaan (15); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FOWARD); //jika tidak ada halangan di depan, Maju! motorLeft.run(FOWARD); } merusak; }}//mendapatkan kode bluetooth yang diterima dari port serial check(){ if (Serial.available()> 0){// jika ada data yang valid di port serial dataIn =Serial.read();// menyimpan data ke a varialbe//periksa kode if (dataIn =='F'){//Forward determinan ='F'; } else if (dataIn =='B'){//Backward determinan ='B'; } else if (dataIn =='L'){//Penentu kiri ='L'; } else if (dataIn =='R'){//Penentu kanan ='R'; } else if (dataIn =='I'){//Froward Right Determinan ='I'; } else if (dataIn =='J'){//Mundur Kanan determinan ='J'; } else if (dataIn =='G'){//Forward Left Determinan ='G'; } else if (dataIn =='H'){//Backward Left Determinan ='H'; } else if (dataIn =='S'){//Stop determinan ='S'; } else if (dataIn =='0'){//Speed ​​0 vel =0; } else if (dataIn =='1'){//Speed ​​25 vel =25; } else if (dataIn =='2'){//Speed ​​50 vel =50; } else if (dataIn =='3'){//Kecepatan 75 vel =75; } else if (dataIn =='4'){//Speed ​​100 vel =100; } else if (dataIn =='5'){//Speed ​​125 vel =125; } else if (dataIn =='6'){//Speed ​​150 vel =150; } else if (dataIn =='7'){//Speed ​​175 vel =175; } else if (dataIn =='8'){//Speed ​​200 vel =200; } else if (dataIn =='9'){//Speed ​​225 vel =225; } else if (dataIn =='b'){//Extra On determinan ='b'; } else if (dataIn =='m'){//Extra On determinan ='m'; } } mengembalikan determinan;}
Sketsa Penghindar RintanganArduino
/*Penulis:Muhammad Azharvisit - robotechmaker.com*/#include #define trigPin 14 // tentukan pin sensor Anda#define echoPin 15 int vel =255; // Kecepatan robot//ObjectsAF_DCMotor motorKanan(1, MOTOR12_64KHZ); // buat motor #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // buat motor #3, 64KHz pwmvoid setup() { Serial.begin(9600); // set up Serial library pada 9600 bps pinMode(trigPin, OUTPUT);// setel pin trigonometri ke output (Kirim gelombang suara) pinMode(echoPin, INPUT);// setel pin gema ke input (menerima gelombang suara) / /Pesan inisialisasi Serial.println("Mr.robot"); Serial.println("Hari ulang untuk bekerja!"); //matikan motor motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(LEPAS); motorLeft.run(RELEASE);}void loop() { //robot penghindar rintangan motorRight.setSpeed(vel); //mengatur kecepatan motor, antara 0-255 motorLeft.setSpeed ​​(vel); durasi panjang, jarak; // mulai scan digitalWrite(trigPin, LOW); delayMicroseconds(2); // penundaan diperlukan agar operasi sensor berhasil. digitalWrite(trigPin, TINGGI); delayMicroseconds(10); //penundaan ini juga diperlukan! digitalWrite(trigPin, RENDAH); durasi =pulseIn(echoPin, TINGGI); jarak =(durasi/2) / 29.1;// ubah jarak menjadi sentimeter. if (jarak <25)/*jika ada halangan 25 sentimeter, ke depan, lakukan hal berikut:*/ { Serial.println ("Hambatan Dekat terdeteksi!" );Serial.println ("Detail Rintangan:");Serial.print ("Jarak Dari Robot adalah " );Serial.print ( jarak);Serial.print ( " CM!");// mencetak jarak dalam sentimeter.Serial.println (" Rintangan dinyatakan sebagai ancaman karena jarak yang dekat . ");Serial.println("Memutar !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(Mundur); // Beloklah selama ada rintangan di depan. motorRight.run (FORWARD);} else { Serial.println ("Tidak ada kendala yang terdeteksi. maju"); penundaan (15); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FOWARD); //jika tidak ada halangan di depan, Maju! motorLeft.run(FOWARD); } } 
Sketsa Pengikut DindingArduino
/*Penulis:Muhammad Azharvisit - robotechmaker.com*/#include #define trigPin 14 // tentukan pin sensor Anda#define echoPin 15 int vel =255; // Kecepatan robot //ObjectsAF_DCMotor motorKanan(1, MOTOR12_64KHZ); // buat motor #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // buat motor #3, 64KHz pwmvoid setup(){ Serial.begin(9600); // set up Serial library pada 9600 bps pinMode(trigPin, OUTPUT);// setel pin trigonometri ke output (Kirim gelombang suara) pinMode(echoPin, INPUT);// setel pin gema ke input (menerima gelombang suara) / /Pesan inisialisasi Serial.println("Mr.robot"); Serial.println("Hari ulang untuk bekerja!"); //matikan motor motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(LEPAS); motorLeft.run(RELEASE);}void loop(){ //untuk robot pengikut dinding. motorRight.setSpeed(vel); //set kecepatan motor, antara 0-255 motorLeft.setSpeed(vel); durasi panjang, jarak; // mulai scan digitalWrite(trigPin, LOW); delayMicroseconds(2); // penundaan diperlukan agar operasi sensor berhasil. digitalWrite(trigPin, TINGGI); delayMicroseconds(10); //penundaan ini juga diperlukan! digitalWrite(trigPin, RENDAH); durasi =pulseIn(echoPin, TINGGI); jarak =(durasi / 2) / 29.1;// ubah jarak menjadi sentimeter. if (jarak <30)/*Jarak yang harus dijaga dengan tembok */ { Serial.println("Dinding ditentukan!"); Serial.println(" Mulai mengikuti tembok "); Serial.println("Memutar !"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FOWARD); motorLeft.run(RILIS); penundaan (500); // tunggu sebentar } else { Serial.println("Tidak ada Tembok yang terdeteksi. berputar balik"); penundaan (15); motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(LEPAS); motorLeft.run(FOWARD); }}

Skema


Proses manufaktur

  1. Aksesori terbaik untuk Raspberry Pi Anda
  2. Praktik terbaik pelacakan aset:Cara memaksimalkan data aset yang diperoleh dengan susah payah
  3. Cara Memaksimalkan Rantai Pasokan Anda Saat Ini
  4. Robot untuk navigasi dalam ruangan yang sangat keren
  5. Dudukan Motor 101:Panduan Memilih Bahan Dudukan Motor Terbaik
  6. Panduan Utama Anda untuk Produk Pertanian Industri Terbaik
  7. Panduan Anda untuk Merek Crane Terbaik
  8. Panduan Pembelian Printer 3D Terbaik untuk Toko Mesin Anda
  9. CNC Wire EDM:Teman Terbaik Anda di Workshop
  10. Pilih Bor Penggilingan Terbaik untuk Pekerjaan Anda