Saturday 12 September 2015

Control RC Toys Using Your Smartphone!

       Control RC Car Using Your Smartphone!

Sebarang pertanyaan/pembelian/bantuan boleh dm saya dia twitter eh:

Assalamualaikum.. Hi guys! today i gonna tell you how to control RC car using Smartphone!




Okay, first of all we need to know the signal from smartphone transmit to your RC car. As we know, Arduino is very powerful microcontroller. Its easy to use, and widely use in engineering field. Lets check on Arduino board, we can see "TX" and  "RX" pin. We can see it on pin 0 and pin 1. So what? hahaa! Its communication pin! means we can communicate with an Arduino board! We can transmit and receive the data from Arduino. but how?

We need another device to help Arduino receive the data. We can use USB cable, Bluetooth receiver, Wifi shield and so on to help arduino receive the data/signals.




This is how HC06 looks..


In this case, we gonna use HC06 Bluetooth receiver to communicate with Arduino wirelessly. We can buy it from 



We also can get it from any hobby shop. Its price depends on quality and use. Some model just can receive or transmit data and some model can receive and transmit the data.


Now i gonna show you how to use this device with Arduino.

First we should know how to connect these four pin to Arduino
Vcc --- Connect to 5V pin on Arduino
Gnd --- Connect to Gnd pin.
RX --- Connect to TX pin!
TX --- Connect to RX pin!

Like this...




Make sure connect RX to TX !!


Okay now lets talk about how to hack the RC Car!

First of all you need to open your old RC car body.




You can see PCB with many component. Its motor driver and RF receiver. It mess you up? Relax. Just cut the wire that connect to the DC motor. Like this.






Now have 4 wires left on your old RC car. Its wire to control DC motor. Now we need another motor driver that can operate with Arduino. In my case, i use MD10 Cytron motor driver. Why do not use the old motor driver to drive the motor? it can make your circuit more complicated than you expected. This is MD10 Cytron motor driver shield that compatible with Arduino board. its easy to use!

https://docs.google.com/document/d/1acVuzZKuqC_79RzD5BRT9IQ7ug63zG0wpf-bUgQ7QHY/view




MD10 Cyrton Motor Driver


From the picture above, you can see PWM and DIR with pin D1, D2, D3, D4 and so on. Its means the digital pin that we can use for control speed of the motor(PWM) and direction of the motor rotation(DIR).

example;
in Arduino..

analogWrite(D5, 230);         //motor speed at 230
digitalWrite(DIR, HIGH);   //motor will rotate in clockwise






Its really easy to use. Just connect two DC motor wire to channel A and B. Then, connect power supply cable at +ve and -ve connector.

After that, stack them on your Arduino board. Like this.



                                                                                    MD10

Arduino Uno ----->>



Watch this video for more details step!










This is Arduino Code that i use to run my RC car. You can copy and paste. Modify it if needed :)


int pwmr = 3;      
int pwml = 5;     //use to control left motor's speed
int dirr = 2;        //control direction right DC motor
int dirl = 4;        
int nilaipwm;    //speed of DC motor


char val;
void setup() {
  Serial.begin(9600);         //baud rate
  pinMode(pwmr, OUTPUT);  //set pin to output mode
  pinMode(pwml, OUTPUT);
  pinMode(dirr, OUTPUT);
  pinMode(dirl, OUTPUT);
}


void loop() {
  if(Serial.available() > 0){         //if connection is available.
    val = Serial.read();                 //val adalah character yang COM receive
    Serial.println(val);


    if(val == '1'){                        //  '1' is data transmitted by your smartphone
      nilaipwm = 10;
    }
    
    else if(val == '2'){                  //kelajuan dc motor adalah 30
      nilaipwm = 30;
    }

    else if(val == '3'){
      nilaipwm = 50;
    }

    else if(val == '4'){
      nilaipwm = 70;
    }

    else if(val == '5'){
      nilaipwm = 90;
    }

    else if(val == '6'){
      nilaipwm = 120;
    }

    else if(val == '7'){
      nilaipwm = 160;
    }

    else if(val == '8'){
      nilaipwm = 180;
    }

    else if(val == '9'){       
      nilaipwm = 220;
    }

    else if(val == 'q'){                     //if your smartphone send 'q' , car will be move at highest speed
      nilaipwm = 255;
    }

    else if(val == 'D'){                   //  'D' untuk stop kan kereta
      nilaipwm = 0;
    }

    
   else if(val == 'F'){                               //Forward
      analogWrite(pwmr, nilaipwm);
      analogWrite(pwml, nilaipwm);
      digitalWrite(dirr, LOW);
      digitalWrite(dirl, LOW);
      delay(20);
      stopp();
    }
    
    else if(val == 'B'){                          //backward
      analogWrite(pwmr, nilaipwm);
      digitalWrite(dirr, HIGH);
      analogWrite(pwml, nilaipwm);
      digitalWrite(dirl, HIGH);
      delay(20);
      stopp();
    }

    else if(val == 'L'){                              //left
      analogWrite(pwmr, nilaipwm);
      digitalWrite(dirr, LOW);
      analogWrite(pwml, nilaipwm);
      digitalWrite(dirl, HIGH);
      delay(20);
      stopp();  
    }

    else if(val == 'R'){                             //right
      analogWrite(pwmr, nilaipwm);
      digitalWrite(dirr, HIGH);
      analogWrite(pwml, nilaipwm);
      digitalWrite(dirl, LOW);
      delay(20);
      stopp();  
    }
  }
}

void stopp(void){                     //void to stop the car
  analogWrite(pwmr, 0);
  analogWrite(pwml, 0);
  
  }







Explaination

int pwmr = 3;
tell arduino that i use pin3 to control speed DC motor on right side.
int dirl = 4;
tell arduino, i use pin4 to control direction of left DC motor.

Serial.begin(9600);
speed of communiction data transmit and receive

Serial.available() > 0
If port receive any signal/data more than 0

val = Serial.read();
"val" is variable that hold data transmitted by your smartphone in string

else if(val == 5)
if serial receive data '5' , arduino will tell motor driver to speed up motor speed at 90

else if(val == 'F')
if serial read is equal to 'F' , car will move forward.





Download Smartphone App & Arduino Code

Arduino Code
https://drive.google.com/file/d/0B3c_VPBO9Qq3SkNLNndKUEU0WFU/view?usp=sharing

Smartphone App
https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller&hl=en





No comments:

Post a Comment