Robot Penghindar Hambatan Dikontrol Bluetooth: Bangun Kendaraan Pintar Dikontrol Jarak Jauh
Komponen dan perlengkapan
Arduino Nano R3
×
1
SparkFun Dual H-Bridge motor drivers L298
×
1
Sensor Ultrasonik - HC-SR04 (Umum)
×
1
Modul Bluetooth HC-05
×
1
RGB Diffused Common Anode
×
1
SparkFun Logic Level Converter - Bi-Directional
×
1
Resistor 330 ohm
×
1
Breadboard (umum)
×
1
SparkFun Breadboard Power Supply Stick 5V/3.3V
×
1
Motor DC, 12 V
×
2
Kabel Jumper Jantan/Betina
×
1
Aplikasi dan layanan online
Arduino IDE
Arduino BlueControl
Tersedia di Playstore.
Tentang proyek ini
Proyek ini menggunakan ponsel seluler untuk berkomunikasi dengan robot melalui bluetooth. Saya selalu ingin membangun robot dan mengontrolnya melalui ponsel seluler. Setelah jeda lebih dari 12 tahun, saya mengambil tugas untuk membangun robot dan mengoperasikannya. Ini juga proyek pertama saya di Arduino Project Hub. Elektronika dan robotika adalah salah satu hobi favorit saya dan oleh karena itu saya mengambil tugas untuk membangun robot ini pada waktu lockdown akibat Covid19.
Robot merasakan sinyal bluetooth yang ditransmisikan dari ponsel seluler. Ini menggunakan modul bluetooth HC-05 untuk merasakan sinyal perintah dari ponsel seluler dan mengontrol robot. Saya menggunakan aplikasi ArduinoBlueControl untuk mengontrol robot.
Jantung robot adalah Arduino Nano. Ini menerima sinyal dari modul HC-05 melalui komunikasi serial dan mengontrol motor melalui modul pengemudi motor L298N untuk gerakan ke depan, mundur, kiri, dan kanan.
Perhatian harus diberikan untuk menghubungkan pin TX dan RX modul HC-05 dengan Arduino Nano. Sebuah konverter level logika digunakan untuk hal yang sama.
Robot menggunakan modul sensor ultrasonik HC SR-04 untuk mendeteksi hambatan di jalurnya. Saat merasakan hambatan selama geraknya ke depan, robot berhenti. Sebuah LED RGB digunakan untuk menunjukkan status robot.
Robot dirangkaian di dasar 2 roda yang terdiri dari dua motor penggera bergerigi. Rangkaian dirangkaian di atas breadboard dengan sumber 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 pengemudi motor L298N digunakan untuk menggerakkan motor. Sinyal PWM dari Arduino Nano digunakan untuk mengontrol kecepatan motor melalui pin ENA dan ENB modul pengemudi motor L298N.
Berikut adalah video singkat robot dalam operasi:
Semoga Anda menyukai robot penghindar hambatan dikontrol bluetooth saya. Robot ini dapat dimodifikasi dan diperluas untuk digunakan dalam otomatisasi rumah, kendaraan penghindar hambatan untuk lantai toko, dan banyak lagi.
Kode
Kode Arduino Robot Dikontrol Bluetooth.
Kode Arduino Robot Dikontrol Bluetooth.C/C++
/* Bluetooth Controlled Obstacle Avoidance Robot Prepared by : Alok Talukdar Date : 09.05.2020 */ #include<SoftwareSerial.h> // To use any pin on Arduino for Serial communication. // Define the digital pins for L298 motor control module. #define IN1 5 // for right motor #define IN2 4 // for right motor #define IN3 3 // for left motor #define IN4 2 // for left motor #define ENA 9 // Enable A for PWM control of right motor #define ENB 10 // Enable B for PWM control of left motor // Define the digital pins for RGB LED control #define redLED 8 #define greenLED A0 #define blueLED 11 // Set up the HC-SR04 Ultrasonic sensor module const int trigPin = 6; // TRIG pin connected to pin D6 of Arduino Nano const int echoPin = 7; // ECHO pin connected to pin D7 of Arduino Nano int i,j,k = 0; float duration,distance; // variables for distance measurement // Set up the HC05 Bluetooth module SoftwareSerial mySerial(12,13); // (12 --> RX , 13 --> TX) String data; // variables for Bluetooth control int btVal; void setup() { // put your setup code here, to run once: pinMode(trigPin,OUTPUT); // Configure pin D6 to transmit ultrasonic pulses pinMode(echoPin,INPUT); // Configure pin D7 to receive ultrasonic pulses mySerial.begin(9600); // Configure the Software serial at Baud rate 9600 pinMode(IN1,OUTPUT); // Configure IN1 - IN4 as OUTPUT to control motors pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(redLED,OUTPUT); pinMode(blueLED,OUTPUT); pinMode(greenLED,OUTPUT); digitalWrite(IN1,LOW); // Configure the status of the IN1 - IN4 as LOW digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); analogWrite(redLED,255); // Switch OFF LED's. RGB LED is common anode type. digitalWrite(blueLED,HIGH); digitalWrite(greenLED,HIGH); } void loop() { // put your main code here, to run repeatedly: while (mySerial.available()) { data = mySerial.readStringUntil('\n'); } btVal = (data.toInt()); switch (btVal) { case 1: forward(); digitalWrite(greenLED,LOW); analogWrite(redLED,255); digitalWrite(blueLED,HIGH); dist(); break; case 2: reverse(); digitalWrite(greenLED,HIGH); analogWrite(redLED,255); digitalWrite(blueLED,LOW); break; case 3: left(); break; case 4: right(); break; case 5: stoprobot(); digitalWrite(greenLED,HIGH); analogWrite(redLED,0); digitalWrite(blueLED,HIGH); break; default: digitalWrite(greenLED,HIGH); analogWrite(redLED,255); digitalWrite(blueLED,HIGH); break; } if (mySerial.available() < 0) { //Serial.println("No Bluetooth Data "); } } // motor control function declarations void forward() { for(i=0;i<=100;i++) { analogWrite(ENA,i); analogWrite(ENB,i); digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } } void reverse() { for(j=0;j<=100;j++) { analogWrite(ENA,j); analogWrite(ENB,j); digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } } void left() { analogWrite(ENA,127); analogWrite(ENB,0); digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,HIGH); } void right() { analogWrite(ENA,0); analogWrite(ENB,127); digitalWrite(IN1,HIGH); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void stoprobot() { analogWrite(ENA,0); analogWrite(ENB,0); digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } void dist() { digitalWrite(trigPin,LOW); // to send a pulse via the TRIG pin of HC-SR04 delayMicroseconds(2); digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); duration = pulseIn(echoPin,HIGH); // read the duration of the pulse distance = (duration*0.0343)/2; // measure the distance in cms. Speed of sound is 340 m/s or 0.0343 cm/us if(distance<20) // if distance is < 20 cms , STOP robot { stoprobot(); digitalWrite(greenLED,HIGH); analogWrite(redLED,0); digitalWrite(blueLED,HIGH); } delay(1000); }