Tentang proyek ini
Proyek ini menggunakan ponsel untuk berkomunikasi dengan robot melalui bluetooth. Saya selalu ingin membuat robot dan mengendalikannya melalui ponsel. Setelah jeda panjang lebih dari 12 tahun, saya mengambil tugas membangun robot dan mengoperasikannya. Ini juga merupakan proyek pertama saya di Arduino Project Hub. Elektronik dan robotika adalah salah satu hobi favorit saya dan oleh karena itu saya mengambil tugas membuat robot di masa lockdown ini karena Covid19.
Robot merasakan sinyal bluetooth yang ditransmisikan dari ponsel. Ia menggunakan modul bluetooth HC-05 untuk merasakan sinyal perintah dari ponsel dan mengontrol robot. Saya menggunakan aplikasi ArduinoBlueControl untuk mengontrol robot.
Jantung dari robot adalah Arduino Nano. Ini menerima sinyal dari modul HC-05 melalui komunikasi serial dan mengontrol motor melalui modul driver motor L298N untuk gerakan maju, mundur, kiri dan kanan.
Harus berhati-hati untuk menghubungkan pin TX dan RX dari modul HC-05 dengan Arduino Nano. Konverter level logika digunakan untuk hal yang sama.
Robot menggunakan modul sensor ultrasonik HC SR-04 untuk mendeteksi rintangan yang dilaluinya. Saat merasakan hambatan apa pun selama gerakan majunya, robot berhenti. LED RGB digunakan untuk menunjukkan status robot.
Robot dirakit dalam basis 2 roda yang terdiri dari dua motor penggerak roda gigi. Sirkuit dirakit di atas papan tempat memotong roti dengan catu daya (3.3v dan 5v). Arduino Nano tidak dapat menggerakkan motor secara langsung karena kebutuhan arus yang jauh lebih tinggi untuk motor. Oleh karena itu modul driver motor L298N digunakan untuk menggerakkan motor. Sinyal PWM dari Arduino Nano digunakan untuk mengontrol kecepatan motor melalui pin ENA dan ENB dari modul driver motor L298N.
Berikut adalah video singkat robot yang sedang beroperasi:
Semoga Anda menyukai robot penghindar rintangan yang dikendalikan bluetooth saya. Robot ini dapat dimodifikasi dan diperluas untuk digunakan dalam otomatisasi rumah, kendaraan penghindar rintangan untuk lantai toko, dll., dan banyak lagi kegunaan lainnya.
Kode
- Kode Robot_Arduino yang Dikendalikan Bluetooth.
Kode Robot_Arduino yang Dikendalikan Bluetooth.C/C++
/* Robot Penghindar Rintangan Terkendali Bluetooth Disiapkan oleh :Alok Talukdar Tanggal :09.05.2020*/#include // Untuk menggunakan pin apa pun pada Arduino untuk komunikasi Serial.// Tentukan pin digital untuk motor L298 modul kontrol.#define IN1 5 // untuk motor kanan#define IN2 4 // untuk motor kanan#define IN3 3 // untuk motor kiri#define IN4 2 // untuk motor kiri#define ENA 9 // Aktifkan A untuk kontrol PWM motor kanan#menentukan ENB 10 // Mengaktifkan B untuk kontrol PWM motor kiri// Menentukan pin digital untuk kontrol LED RGB#menentukan LED merah 8#menentukan hijauLED A0#menentukan biruLED 11// Mengatur modul sensor ultrasonik HC-SR04const int trigPin =6; // Pin TRIG terhubung ke pin D6 Arduino Nanoconst int echoPin =7; // Pin ECHO terhubung ke pin D7 dari Arduino Nanoint i,j,k =0;durasi float,jarak; // variabel untuk pengukuran jarak// Siapkan modul Bluetooth HC05SoftwareSerial mySerial(12,13); // (12 --> RX , 13 --> TX)Data string; // variabel untuk kontrol Bluetooth btVal;void setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali:pinMode(trigPin,OUTPUT); // Konfigurasi pin D6 untuk mengirimkan pulsa ultrasonik pinMode(echoPin,INPUT); // Konfigurasi pin D7 untuk menerima pulsa ultrasonik mySerial.begin(9600); // Konfigurasikan serial Software pada Baud rate 9600 pinMode(IN1,OUTPUT); // Konfigurasi IN1 - IN4 sebagai OUTPUT untuk mengontrol motor pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode (LED merah, OUTPUT); pinMode (LED biru, OUTPUT); pinMode (LED hijau, OUTPUT); digitalWrite(IN1,LOW); // Konfigurasikan status IN1 - IN4 sebagai LOW digitalWrite(IN2,LOW); digitalWrite(IN3,RENDAH); digitalWrite(IN4,LOW); analogWrite(LED merah,255); // Matikan LED. RGB LED adalah jenis anoda umum. digitalWrite (LED biru, TINGGI); digitalWrite(greenLED,HIGH);}void loop(){ // letakkan kode utama Anda di sini, untuk dijalankan berulang kali:while (mySerial.available()) { data =mySerial.readStringUntil('\n'); } btVal =(data.toInt()); switch (btVal) { kasus 1:maju(); digitalWrite(LED hijau,RENDAH); analogWrite(LED merah,255); digitalWrite (LED biru, TINGGI); dist(); merusak; kasus 2:terbalik(); digitalWrite(LED hijau,TINGGI); analogWrite(LED merah,255); digitalWrite(LED biru,RENDAH); merusak; kasus 3:kiri(); merusak; kasus 4:kanan(); merusak; kasus 5:stoprobot(); digitalWrite(LED hijau,TINGGI); analogWrite(LED merah,0); digitalWrite (LED biru, TINGGI); merusak; default:digitalWrite(LED hijau,TINGGI); analogWrite(LED merah,255); digitalWrite (LED biru, TINGGI); merusak; } if (mySerial.available() <0) { //Serial.println("Tidak Ada Data Bluetooth "); }} // deklarasi fungsi kendali motor void forward() { for(i=0;i<=100;i++) { analogWrite(ENA,i); analogWrite(ENB,i); digitalWrite(IN1, TINGGI); digitalWrite(IN2,RENDAH); digitalWrite(IN3,RENDAH); digitalWrite(IN4,TINGGI); } } void terbalik() { untuk(j=0;j<=100;j++) { analogWrite(ENA,j); analogWrite(ENB,j); digitalWrite(IN1,LOW); digitalWrite(IN2,TINGGI); digitalWrite(IN3,TINGGI); digitalWrite(IN4,LOW); } } batal kiri() { analogWrite(ENA,127); analogWrite(ENB,0); digitalWrite(IN1, TINGGI); digitalWrite(IN2,RENDAH); digitalWrite(IN3,TINGGI); digitalWrite(IN4,TINGGI); } batal kanan() { analogWrite(ENA,0); analogWrite(ENB,127); digitalWrite(IN1, TINGGI); digitalWrite(IN2,TINGGI); digitalWrite(IN3,RENDAH); digitalWrite(IN4,TINGGI); } void stoprobot() { analogWrite(ENA,0); analogWrite(ENB,0); digitalWrite(IN1,LOW); digitalWrite(IN2,RENDAH); digitalWrite(IN3,RENDAH); digitalWrite(IN4,LOW); } void dist() { digitalWrite(trigPin,RENDAH); // untuk mengirim pulsa melalui pin TRIG dari HC-SR04 delayMicroseconds(2); digitalWrite(trigPin,TINGGI); delayMicroseconds(10); digitalWrite(trigPin,RENDAH); durasi =pulseIn(echoPin,HIGH); // membaca durasi jarak pulsa =(durasi*0.0343)/2; // mengukur jarak dalam cm. Kecepatan suara adalah 340 m/s atau 0,0343 cm/us if(jarak<20) // jika jarak <20 cm , STOP robot { stoprobot(); digitalWrite(LED hijau,TINGGI); analogWrite(LED merah,0); digitalWrite (LED biru, TINGGI); } penundaan(1000); }
Skema
Diagram sirkuit robot.