first project : mobil rc bluetooth


Long time no see, sudah lama sekali tidak update blog lagi. Ini di karenakan antara kesibukan yang melanda dan tidak ada barang bagus buat di pamerkan kurangnya inspirasi karena kesibukan yang melanda tadi (eh, berarti alasan sebenarnya memang karena sibuk dong :think: )


Ok cukup basa basinya langsung ke intinya, jadi ini adalah mobil-mobilan remot kontrol yang di remotnya pake smartphone (via bluetooth). Ingin bikin mobil-mobilan ini sebenarnya hanya ingin menambah pengalaman saja + percaya diri untuk bikin lagi sesuatu yang lebih rumit (rugilah ! beli development boardnya ratusan ribu trus cuma jadi project simple).

Bahan-bahan yang diperlukan :
-arduino uno
-2 dc motor + 2 rodanya
-driver motor l293d
-kabel jumper
-modul bluetooth
-baterai box isi 6 (bisa diganti sama konektor baterai 9 volt untuk baterai 9 volt, intinya buat mengalirkan listrik 9 volt)
-konektor baterai 9 volt
-6 baterai kecil 1,5 volt (atau 1 baterai 9 volt kalo dari awal tidak pake baterai box isi 6)
-baterai 9 volt
-smartphone android
-ball caster

Komponen penting disini sebenarnya ada di arduino, modul bluetooth dan driver motornya. arduino menerima sinyal yang di tangkap oleh modul bluetooth yang mana sinyal tadi dikirim oleh smartphone, kemudian arduino menginterpret sinyal tadi dengan mengirim arus ke pin-pin input di driver motor. dari kombinasi arus yang masuk di input driver motor tadi, kita bisa mengendalikan arah perputaran dc motor yang tersambung dengan driver motor itu. Yah kalo di jelaskan dengan kalimat mungkin butuh beberapa kalimat, tapi percayalah cara kerjanya sangat sederhana.

Untuk mapping driver motor l293dnya seperti berikut :





Enable 1,2 enable 3,4 dan vcc 1 (power untuk mengoperasikan l293d itu sendiri) tersambung dengan pin 5v di arduino. Input 1 dengan pin digital 8, input 2 -> pin 9, input 3 -> pin 11 dan input 4 -> pin 10. Untuk Output masing-masing output di sisi kiri dan kanan, yaitu output 1 dan 2, output 3 dan 4 langsung tersambung dengan masing-masing kutub di dc motor (saya tidak bisa menjelaskan output ini nyambung ke bagian kutub mana, bingung menjelaskannya karena dc motor masing-masing kutubnya sama, bagian ini untuk selanjutnya silhakan kalibrasi sendiri di sesuaikan dengan kode program arduinonya).

semua pin GND tersambung dengan GND dari arduino dan terakhir vcc 2 (power untuk menjalankan dc motor) tersambung dengan kutub positif baterai 9 volt (yang mana baterai 9 voltnya tersambung denga konektornya)

Untuk modul bluetooth ada 4 pin, yaitu vcc, gnd, rx dan tx. vcc tersambung deengan pin 3,3 v arduino, gnd dengan gnd arduino, rx dengan pin tx arduino dan tx dengan pin rx arduino

Untuk menempel 2 dc motor dan ball caster (untuk roda belakang) cukup di tempelkan pakai lem furniture biasa

Terakhir untuk source code program arduinonya adalah sebagai berikut :
   #define MAJU '1'  
   #define MUNDUR '2'  
   #define KIRI '3'  
   #define KANAN '4'  
   char val;     // variable to receive data from the serial port  
   int out1 = 8;  
   int out2 = 9;  
   int out3 = 10;  
   int out4 = 11; // LED connected to pin 2 (on-board LED)  
   void setup()  
   {  
    pinMode(out1, OUTPUT);  
    pinMode(out2, OUTPUT);  
    pinMode(out3, OUTPUT);  
    pinMode(out4, OUTPUT);  
    Serial.begin(9600);    // start serial communication at 115200bps  
   }  
   void netral ()  
   {  
    digitalWrite(out1, LOW);  
    digitalWrite(out2, LOW);  
    digitalWrite(out3, LOW);  
    digitalWrite(out4, LOW);  
   }  
   void maju ()  
   {  
    digitalWrite(out2, HIGH);  
    digitalWrite(out4, HIGH);  
   }  
   void mundur ()  
   {  
    digitalWrite(out1, HIGH);  
    digitalWrite(out3, HIGH);  
   }  
   void kiri ()  
   {  
    digitalWrite(out1, HIGH);  
    digitalWrite(out4, HIGH);  
   }  
   void kanan ()  
   {  
    digitalWrite(out2, HIGH);  
    digitalWrite(out3, HIGH);  
   }  
   void loop() {  
    if(Serial.available()) {   // if data is available to read  
     val = Serial.read();  
     if (val == MAJU) {  
      netral();  
      maju();  
     }  
     else if (val == MUNDUR) {  
      netral();  
      mundur();  
     }  
     else if (val == KIRI) {  
      netral();  
      kiri();  
     }  
     else if (val == KANAN) {  
      netral();  
      kanan();  
     }  
     else  
      netral();  
    }  
   }  

untuk function maju(), mundur(), kiri() dan kanan() silahkan di ubah dengan di mengkalibrasi dulu pergerakan rodanya. Sebagai petunju kalibrasi bisa melihat diagram ini :


 dan ini logic untuk input driver motornya, untuk dc motor sebelah kiri :
Input 1 = Logic 1 and Input 2 = Logic 0 | Clockwise Direction
Input 1 = Logic 0 and Input 2 = Logic 1 | Anticlockwise Direction
Input 1 = Logic 0 and Input 2 = Logic 0 | Idle [No rotation] [Hi-Impedance state]
• Input 1 = Logic 1 and Input 2 = Logic 1 | Idle [No rotation]

 untuk sebelah kanan :
Input 4 = Logic 1 and Input 3 = Logic 0 | Clockwise Direction
Input 4 = Logic 0 and Input 3 = Logic 1 | Anticlockwise Direction
Input 4 = Logic 0 and Input 3 = Logic 0 | Idle [No rotation] [Hi-Impedance state]
• Input 4 = Logic 1 and Input 3 = Logic 1 | Idle [No rotation]

Terakhir untuk remotnya, saya pake aplikasi android untuk memancarkan sinyalnya. Tidak usah repot-repot lagi buat aplikasinya tinggal download saja aplikasi apapun yang bisa memancarkan sinyal bluetooth untuk keperluan meremot mobilnya, salah satu aplikasi yanng bagus yang tersedia di playstore yang saya pakai sendiri adalah arduinoRC. Di situ kita bisa mengubah sinyal yang dikirimkan sesuka hati. Kalo pake aplikasi ini, hanya perlu menuju ke controler mode dan rubah sinyal maju, mundur, kiri dan kanan ke 1,2,3 dan 4 dan sisanya tidak perlu di rubah (sinyal selain 1,2,3,4 akan di indikasikan stop oleh arduino sesuai dengan source code di atas sebelumnya).


Sekian dokumentasi project sederhana saya, mungkin kalau ada yang di rasa kurang postingan ini akan segera di update. Saya tidak bikin tutorial step by step karena malas foto satu-satu dan pasang susah payah lagi dari awal :p .

Komentar