Mengendalikan Mobil Remote Arduino dengan Android

Saya ingin membuat sebuah mobil rc yang dapat dikendalikan melalui ponsel android menggunakan sensor accelerometer yang ada di hampir semua gadget android, jadi mobil dapat dikendalikan dengan cara memiringkan ke kanan dan kekiri, untuk belok, memiringkan kedepan untuk maju dan kebelakang untuk memundurkan mobil.

Untuk mewujudkannya saya telah membuat aplikasi android dan mempublishnya di play stor, download disini

prinsipnya sederhana, aplikasi ini mengirim string melalui bluetooth yang berisi informasi dari accelerometer Android, dan setiap value di pisahan dengan tanda “|” tanpa tanda kutip,

Contoh Pesan

Berikut adalah contoh pesan yang di kirim oleh aplikasi ini melalui bluetooth

10|20|50,

yang berarti niainya adalah x = 10 , y = 20, dan z = 50;
dari informasi ini kita bisa membuat sketch pada arduino untuk mengolah logic dari informasi tersebut

yang pertama kita lakukan adalah meng-ekstract informasi yang berbentuk string tersebut menjadi masing masing nilai integer
contohnya seperti ini

int x, y, z; 

void readBluetooth(){
    
      x = 0;
      y = 0;
      z = 0;
      if(bt.available()){
          x = bt.readStringUntil('|').toInt();                
          y = bt.readStringUntil('|').toInt();    
          z = bt.readStringUntil(',').toInt();    
        }    
       
 }

Untuk memahami angka-angka pada sensor accelerometer, kita bisa melihat gambar berikut ini,

Accelerometer value
sumber gambar intel

Dari gambar di atas, dapat kita lihat bahwa jika gadget dalam posisi horizontal dan kita miringkan ke kanan dan kekiri, maka nilai y akan berubah dari nol (tegak) menjadi positif jika ke kanan, dan negatif jika ke kiri,
sementara itu z akan berubah dari nol (tegak) dan menjadi positif jika condong kedepan dan negatif ke belakang.

dengan pengertian diatas kita bisa membangun code untuk menentukan maju mundurnya kendaraan,, misalkan seperti ini

	   
  if(z < 20)  // mundur
      {            
         //backward
      }
      else   if(z < 50) // stop
      {             
          // stop
      }  
      
      if(y > 20 && !onstop) //belok kanan
      {
         // turn right
      }
      else if(y < -20 && !onstop) // belok kiri
      {
         // turn left
      } 

      if(!onstop  && !belok){     // maju
         // forward

Video Hasil