Arduino adalah platform pengembangan perangkat keras yang sangat populer di kalangan penghobi dan pembuat. Salah satu proyek yang menarik adalah membuat mobil remote control dengan menggunakan modul Bluetooth dan Arduino. Dengan proyek ini, Anda dapat mengontrol mobil secara nirkabel melalui perangkat seluler Anda. Berikut adalah langkah-langkah untuk membuat mobil remote control Bluetooth menggunakan Arduino:
Bahan yang Diperlukan:
- Arduino Board (contoh: Arduino Uno)
- Motor DC dan roda (2 set)
- H-bridge motor driver (contoh: L298N)
- HY-SRF 05 Ultrasonic
- SG90 Servo Motor
- Chassis untuk mobil (atau membuat sendiri dari bahan seperti kayu atau akrilik)
- Baterai 9V dan holder baterai
- Breadboard dan kabel jumper
Langkah-langkah:
1. Rangkaian Koneksi Motor dan Driver
- Hubungkan motor DC ke driver motor H-bridge. Pastikan untuk mengikuti petunjuk koneksi pada datasheet driver motor yang Anda pilih.
- Hubungkan driver motor ke Arduino menggunakan kabel jumper. Tentukan pin kontrol yang sesuai pada driver motor dan koneksikan ke pin yang tersedia di Arduino.
2. Pasang HY-SRF 05 Ultrasonic dan SG90 Servo Motor
- Tempatkan HY-SRF 05 Ultrasonic diatas SG90 Servo Motor kemudian sambungkan masing-masing pin ke Arduino menggunakan kabel jumper. Pastikan untuk menghubungkan pin sesuai petunjuk slide dibawah ini.
3. Rangkaian Umum
Hubungkan semua kabel dan komponen ke breadboard atau langsung ke papan rangkaian, sesuai dengan skema koneksi yang telah Anda persiapkan.
4. Coding dengan Arduino IDE
- Buka Arduino IDE di komputer Anda.
- Tulis kode program yang sesuai. Berikut adalah contoh sederhana untuk Membuat Mobil Auto Sensor dengan HY-SRF 05 Ultrasonic:
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| #include <Servo.h>
#include <NewPing.h>
//ini kontrol pin L298N
const int MotorKiriMaju = 13;
const int MotorKiriMundur = 12;
const int MotorKananMaju = 11;
const int MotorKananMundur = 10;
//pin sensor ultrasonic
#define trig_pin A1 //analog input 1
#define echo_pin A2 //analog input 2
#define maximum_distance 200
boolean goesForward = false;
int distance = 100;
NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function
Servo servo_motor; //nama motor servo
void setup(){
pinMode(MotorKananMaju, OUTPUT);
pinMode(MotorKiriMaju, OUTPUT);
pinMode(MotorKiriMundur, OUTPUT);
pinMode(MotorKananMundur, OUTPUT);
servo_motor.attach(7); //pin motor servo
servo_motor.write(115);
delay(2000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}
void loop(){
int distanceRight = 0;
int distanceLeft = 0;
delay(50);
if (distance <= 25){
moveStop();
delay(300);
moveBackward();
delay(400);
moveStop();
delay(300);
distanceRight = lookRight();
delay(300);
distanceLeft = lookLeft();
delay(300);
if (distance >= distanceLeft){
turnRight();
moveStop();
}
else{
turnLeft();
moveStop();
}
}
else{
moveForward();
}
distance = readPing();
}
int lookRight(){
servo_motor.write(50);
delay(500);
int distance = readPing();
delay(100);
servo_motor.write(115);
return distance;
}
int lookLeft(){
servo_motor.write(170);
delay(500);
int distance = readPing();
delay(100);
servo_motor.write(115);
return distance;
delay(100);
}
int readPing(){
delay(70);
int cm = sonar.ping_cm();
if (cm==0){
cm=250;
}
return cm;
}
void moveStop(){
digitalWrite(MotorKananMaju, LOW);
digitalWrite(MotorKiriMaju, LOW);
digitalWrite(MotorKananMundur, LOW);
digitalWrite(MotorKiriMundur, LOW);
}
void moveForward(){
if(!goesForward){
goesForward=true;
digitalWrite(MotorKiriMaju, HIGH);
digitalWrite(MotorKananMaju, HIGH);
digitalWrite(MotorKiriMundur, LOW);
digitalWrite(MotorKananMundur, LOW);
}
}
void moveBackward(){
goesForward=false;
digitalWrite(MotorKiriMundur, HIGH);
digitalWrite(MotorKananMundur, HIGH);
digitalWrite(MotorKiriMaju, LOW);
digitalWrite(MotorKananMaju, LOW);
}
void turnRight(){
digitalWrite(MotorKiriMaju, HIGH);
digitalWrite(MotorKananMundur, HIGH);
digitalWrite(MotorKiriMundur, LOW);
digitalWrite(MotorKananMaju, LOW);
delay(500);
digitalWrite(MotorKiriMaju, HIGH);
digitalWrite(MotorKananMaju, HIGH);
digitalWrite(MotorKiriMundur, LOW);
digitalWrite(MotorKananMundur, LOW);
}
void turnLeft(){
digitalWrite(MotorKiriMundur, HIGH);
digitalWrite(MotorKananMaju, HIGH);
digitalWrite(MotorKiriMaju, LOW);
digitalWrite(MotorKananMundur, LOW);
delay(500);
digitalWrite(MotorKiriMaju, HIGH);
digitalWrite(MotorKananMaju, HIGH);
digitalWrite(MotorKiriMundur, LOW);
digitalWrite(MotorKananMundur, LOW);
} |
5. Uji Coba
- Nyalakan mobil melalui tombol on/off, maka mobil akan terus berjalan ke depan, ketika ada penghalang yang mengarah pada sensor, maka roda berhenti, kemudian mundur beberapa langkah, kemudian Servo Motor akan berputar ke kiri dan ke kanan, membaca sensor (arah mana yang tidak ada penghalang), Jika sensor telah membaca arah yang 0 (nol) atau kosong tidak ada penghalang misalnya arah kiri, maka motor driver melakukan perintah roda untuk berbelok ke ara kiri kemudian jalan lurus, begitu seterusnya.
Dengan mengikuti langkah-langkah di atas, Anda dapat membuat mobil auto sensor dengan Arduino. Anda dapat mengembangkan proyek ini lebih lanjut dengan menambahkan kamera, atau fitur lain sesuai kreativitas Anda. Selamat mencoba!
Untuk menyempurnakan panduan ini, berikut slide untuk menjadi referensi selengkapnya.
0 Komentar