Membuat Mobil Remote Control dengan Arduino dan Bluetooth HC-05

Posted By: Jogja Robotika In: Project On: Tuesday, May 31, 2016 Comment: 0 Hit: 17168

Arduino Bluetooth RC adalah sebuah robot yang dapat mengikuti perintah layaknya mobil remote control yang biasa itu , bedanya robot ini memakai bluetooth sebagai sarana komunikasi dengan android . Aplikasi yang dipakai adalah Arduino Bluetooth RC Car yang dapat diunduh secara gratis pada playstore. Modul bluetooth pada RC ini menggunakan HC-05,  driver motornyah L298N, dan Arduino Uno sebagai kontroller utama.

Robot ini menggunakan sasis yang sama seperti pada robot Line Follower sebelumnya, jadi bagi yang sudah punya tingal beli Bluetooth saja :)

Bahan yang harus disediakan:

1x Arduino Uno : http://jogjarobotika.com/arduino-uno-r3-compatible-cable-data

1x HC-05 Bluetooth : http://jogjarobotika.com/modul-bluetooth-hc05

1x L298N Driver Motor : http://jogjarobotika.com/l298n-driver-modul

1x Sasis Kit 2WD : http://jogjarobotika.com/2wd-sasis-kit

2xSpacer 3cm :http://jogjarobotika.com/spacer-kuningan-30mm6mm

1x Kabel Jumper Male-Female http://jogjarobotika.com/kabel-jumper-male-female-40pc

Mur baut 3mm, Jack DC Male

Setelah bahan ready maka tahap selanjutnya adalah merakitnya, namun sebelum itu solderlah motor dc, saklar, dan jack dc terlebih dahulu biar ga ribet nantinya.

Penyolderan Saklar dilakukan dengan cara membagi jumper male-female menjadi dua. bagian female disolder ke bagian 0 (mati) dan bagian male disolder ke bagian - (Hidup). Sedangkan Jack DC disolder dengan cara membuang bagian female dari kabel jumper, perlu dicatat warna dan polaritasnya! Begitupun dengan penyolderan Motor DC. jangan sampai kebalik klo nggk mau arduinonya mati :P

Sudah?? Lanjut rakit sasis dan pengkabelannya, yang teliti ya jangan kebalik2 daripada nanti pusing sendiri hahaha

Pengkabelan...

Sistem Kerja L298N membutuhkan dua pin untuk tiap motornya,satu Logic satunya PWM, berpasang-pasangan gitu kyk aku dan kamu :v

Untuk lebih jelasnya lihat tabel dibawah ya, posisi pin bisa diganti sesuai kebutuhan, yang terpenting satu pin Logic (High/Low) dan satu pin PWM

Pada dasarnya program untuk menggerakkan motor dalam robot ini sama dengan Robot Line Follower, hanya saja kita akan mengontrol motor tersebut secara manual sehingga perlu dibuat fungsi pada program untuk memudahkan.

void motorOut(unsigned char lpwm, unsigned char rpwm, boolean arrow){
//arrow=false=mundur; arrow=true=mundur;
if(arrow==false){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}

untuk memanggil fungsi tersebut cukup ketikkan program 

motorOut(nilai PWM kiri,nilai PWM kanan, True/False);

Bluetooth HC-05

Bluetooth HC-05 adalah sebuah perangkat komunikasi wireless yang berbasiskan sinyal bluetooth. Standar nama bluetooth adalah HC-05 sedangkan password standar yang digunakan adalah 1234.Bluetooth ini akan kita gunakan sebagai Slave atau penerima, sedangkan Master(pengirim) akan menggunakan Smartphone Android. Bluetooth HC-05 menggunakan komunikasi serial, untuk mengakses Bluetooth pada tutorial ini kita akan menggunakan library  SoftwareSerial.

cukup ketikkan list dibawah untuk menggunakannya

#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); // RX, TX

Bluetooth RC Controller

Aplikasi ini nantinya yang akan kita gunakan, jadi ini aplikasi hukumnya WAJIB alias harus ada..

aplikasinya dapat di download di https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller

Sebelum masuk ke pemrograman perlu diketahui Command/Karakter yang akan dikirim dari tiap tombol dari aplikasi tersebut.

Forward = F

Back = B

Left = L

Right = R

Forward Left = G

Forward Right = I

Back Left = H

Back Right = J

Stop = S

Speed 10-100 = 1-9,q

untuk command lain silahkan cek di aplikasi tersebut, masuk setting dari app tersebut. Jangan malas baca :P

Oke jika sudah tahu command dari app tsb langsung saja kita program Robot RCnya :

#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); // RX, TX
#define m1 3
#define m2 5
#define m3 9
#define m4 10
int data=0,kec=0;
boolean maju=true;
//array kecepatan
int fast[11]={0,80,100,120,140,160,180,200,220,240,255};
void setup()
{
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
// for HC-05 use 38400 when poerwing with KEY/STATE set to HIGH on power on
mySerial.begin(9600);
}
void motorOut(unsigned char lpwm, unsigned char rpwm, boolean arrow){
//arrow=false=maju; arrow=true=mundur;
if(arrow==false){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}

void loop(){
if(mySerial.available()>0){
data=mySerial.read();
//penyimpan data kecepatan
if (data =='0') { kec=0;}
else if (data =='1') { kec=1;}
else if (data =='2') { kec=2;}
else if (data =='3') { kec=3;}
else if (data =='4') { kec=4;}
else if (data =='5') { kec=5;}
else if (data =='6') { kec=6;}
else if (data =='7') { kec=7;}
else if (data =='8') { kec=8;}
else if (data =='9') { kec=9;}
else if (data =='q') {kec=10;}


//S= Stop
if (data == 'S')
{ motorOut(0,0,false); }
//F=Maju
If (data=='F')
{ motorOut(fast[kec],fast[kec],true); }
//I=Maju sambil belok kanan
if (data=='I')
{ motorOut(fast[kec],((fast[kec])/2),true);}
//G=Maju sambil belok kiri
if (data=='G')
{ motorOut(((fast[kec])/2),fast[kec],true); }
//R=Belok kanan
if(data=='R')
{ motorOut(fast[kec],0,true); }
//L=Belok kiri
if(data=='L')
{ motorOut(0,fast[kec],true); }
//B=Mundur
if(data=='B')
{ motorOut(fast[kec],fast[kec],false); }
//H=Mundur kiri
if (data=='H')
{ motorOut(((fast[kec])/2),fast[kec],false); }
//Mundur kanan
if (data=='J')
{ motorOut(fast[kec],((fast[kec])/2),false); }
}
}

Ada masalah?

1. roda tidak mau berputar?

->cek tegangan batre pastikan batrenya dalam kondisi bagus (6-7V)

->cek pengkabelannya lagi, barangkali ada yg kebalik

->setting kecepatannya di aplikasi, geser aja ke kanan

2. putaran roda terbalik

->tukar pengkabelan motor atau rubah programmnya

3. putaran roda kanan dan kiri berbeda

->sesuaikan program pwmnya ajaa...

Comments

Leave your comment