Saturday, December 1, 2018

Robot Beroda dengan Control dari Bluetooth

Pendahuluan

kali ini saya berbagi pengalaman tentang membuat Robot Beroda yang dikendalikan via Bluetooth dari SmartPhone Android. jadi semacan RC Robot, namun remotenya menggunakan SmartPhone Android  cukup menarik bukan.. untuk mekanik Robot, saya menggunakan modul RObot Car yang siap dirakit, jadi fokus tutorial disini lebih Skematik Rangkaian dan Source Code  Arduinonya itu sendiri. mari ikuti tutorialnya :)

Project ini menggunakan Arduino, dimana terdapat modul Bluetooth HC05 yang terhubung ke Arduino melalui Pin Rx dan Tx dan berkomunikasi secara serial. atau bisa juga ke pin mana saja, karena di Arduino sudah terdapat software Serial. sehingga kita bisa menggunakan pin-pin tertentu selain pin Rx dan Tx untuk jadi pin serial. 

Robot Beroda dengan controller Arduino tersebut dikendalikan secara wireless melalui Bluetooh dari smartphone Android. untuk lebih jelasnya berikut skematik diagramnya :


bahan-bahan yang diperlukan untuk membuat RC Robot Beroda. yaitu : Baterai 9V, Arduino Uno, Modul Bluetooth HC 05, Driver Motor dan mekanik Robot Car yang sudah tersedia.

Cara Kerja

Robot Beroda akan bergerak sesuai dengan instruksi dari SmartPhone Android, untuk maju, belok kiri, belok kanan, mundur dan berhenti. Android mengirim perintah melalui Bluetooth dengan kode-kode tertentu. kode-kode tersebut diterima Arduino kemudian diterjemahkan menjadi perintah yang akan dieskusi apakah itu, gerak maju, belok kiri, belok kanan, mundur atau berhenti.

Program Android

Program Android disini digunakan sebagai pengirim kode-kode melalui Bluetooth. terdapat lima Tombol, yaitu maju, kanan, kiri, mundur dan stop, setiap tombol ketika ditekan akan mengirimkan kode tertentu. untuk kodenya yaitu, tombol maju mengirimkan kode '0', tombol kiri akan mengirimkan kode '1', tombol kanan jika ditekan akan mengirimkan kode '2', tombol kiri mengirimkan kode '3' dan terakhir tombol diam akan mengirimkan kode '4'. berikut Layout dari program Androidnya :


untuk program Androidnya tidak saya bahas disini, teman-teman cukup download file APK yang sudah saya sediakan pada link berikut : link program Android

Source Code Arduino

Arduino Uno bertugas untuk menerima input kode yang dikirim oleh SmartPhone Android, kemudian menerjemahkanya ke perintah-perintah tertentu. untuk menerima kode yang di kirimkan Android, Arduino cukup mendengarkan input Serial dari modul Bluetooth HC 05. karena kode yang dikirimkan oleh Android akan diteruskan oleh modul Bluetooth melalui komunikasi serial.

apabila menerima input dari komunikasi serial kode tertentu. kode tersebut langsung di-check, apakah 0, 1, 2, 3 atau 4 dan setiap kode akan menjalan function yang sudah dibuat yaitu function maju(), function kiri(), function kanan(), function mundur() dan function diam(). untuk lebih jelasnya bisa melihat source code berikut ini :



#include <SoftwareSerial.h>

int ma1 = 12;
int ma2 = 11;
int mb1 = 10;
int mb2 = 9;

char inbyte = 0;

SoftwareSerial bT (9, 8); //RX, TX

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  bT.begin(9600);
  pinMode(ma1, OUTPUT);
  pinMode(ma2, OUTPUT);
  pinMode(mb1, OUTPUT);
  pinMode(mb2, OUTPUT);

  digitalWrite(ma1, LOW);
  digitalWrite(ma2, LOW);
  digitalWrite(mb1, LOW);
  digitalWrite(mb2, LOW);

}

void loop() {
  // put your main code here, to run repeatedly:

  if (bT.available() > 0)
  {
    inbyte = bT.read();
    if (inbyte == '0'){
           maju();
    }
    else if (inbyte == '1'){     
          kiri();
    }
    else if (inbyte == '2'){     
          kanan();
    }
    else if (inbyte == '3'){     
          mundur();
    }
    else if (inbyte == '4'){
      diam();
    }
    
  }

}

void maju(){
digitalWrite(ma1, HIGH);
digitalWrite(ma2, LOW);
digitalWrite(mb1, HIGH);
digitalWrite(mb2, LOW);
}

void kiri(){
digitalWrite(ma1, HIGH);
digitalWrite(ma2, LOW);
digitalWrite(mb1, LOW);
digitalWrite(mb2, HIGH);
}

void kanan(){
digitalWrite(ma1, LOW);
digitalWrite(ma2, HIGH);
digitalWrite(mb1, HIGH);
digitalWrite(mb2, LOW);
}

void mundur(){
digitalWrite(ma1, LOW);
digitalWrite(ma2, HIGH);
digitalWrite(mb1, LOW);
digitalWrite(mb2, HIGH);
}

void diam(){
digitalWrite(ma1, LOW);
digitalWrite(ma2, LOW);
digitalWrite(mb1, LOW);
digitalWrite(mb2, LOW);
}

untuk gerak maju, kiri, kanan, mundur. teman-teman bisa kalibrasi dengan mengetes function terlebih dahulu, jalankan satu per satu function maju, kiri, kanan, mundur dan diam. jika ada kesalahan koreksi. lalu jika sudah benar semua baru tambahkan source diatas selain funtion maju, kiri, kanan, mundur dan diam.

setelah selesai upload dan test dengan program Android. saya sudah coba dan berkerja dengan baik. jika ada pertanyaan yang kurang jelas bisa tanyakan di kolom komentar. terima kasih semoga bisa bermanfaat.