Introduction: Simple Bluetooth RC Car (Arduino Nano + HC-05)
I will share my simple project on how to use your android phone to control robot car.
Step 1: The Hardware
- 1 x Arduino Nano
- 1 x HC-05 Bluetooth module
- 1 x Motor Driver Module (TB6612FNG)
- 2 x Motors ( with Wheel)
- 1 x Battery for Arduino
- 2 x Battery for Motors
Step 2: Connections
Arduino - HC-05
- D11 - Rx
- D10 - Tx
- +5v - VCC
- GND - GND
Arduino - TB6612FNG
- D3 - PWMA
- D4 - AIN2
- D5 - AIN1
- D6 - STBY
- D7 - BIN1
- D8 - BIN2
- D9 - PWMB
- GND - GND
TB6612FNG - Battery
- GND to V-
- VM to V+
Arduino - LED (Optional)
- D13 - LED+
- GND - LED-
Step 3: Codding
/* RC_Bluetooth_2018_v6<br> * By: Khamlek HOMSOMBATH * Date: Jan 17, 2018 * Download Controller for Android : <a href="https://play.google.com/store/apps/details?id=com.lekpkd.duinojoy"> https://play.google.com/store/apps/details?id=com...> */ #include <softwareserial.h></softwareserial.h><SoftwareSerial.h> // arduino>>bluetooth // D10 (as RX) >>> Tx // D11 (as TX) >>> Rx SoftwareSerial bluetooth(10, 11); // RX, TX #define ledpin 13 // Connected to LED #define PWMA 3 #define AIN2 4 #define AIN1 5 #define STBY 6 #define BIN1 7 #define BIN2 8 #define PWMB 9
void setup() { Serial.begin(19200); bluetooth.begin(9600); pinMode(ledpin,OUTPUT); pinMode(PWMA,OUTPUT); // PWM A pinMode(PWMB,OUTPUT); // PWM B pinMode(BIN1,OUTPUT); // B pinMode(BIN2,OUTPUT); // B pinMode(AIN1,OUTPUT); // A pinMode(AIN2,OUTPUT); // A pinMode(STBY,OUTPUT); // STBY digitalWrite(STBY,1); analogWrite(PWMA, 0); analogWrite(PWMB, 0); }
String data = ""; void loop() { while(bluetooth.available()){ char a = bluetooth.read(); if(a==')') { setData(data); data = ""; return; } data += a; } }
int ledVal = 0; void setData(String data){ data.trim(); int index = data.indexOf(","); if(index != -1){ int angle = data.substring(0,index).toInt(); int strength = data.substring(index + 1).toInt(); digitalWrite(BIN1,0); digitalWrite(BIN2,0); digitalWrite(AIN1,0); digitalWrite(AIN2,0); if (angle < 180){ digitalWrite(BIN1,1); digitalWrite(AIN1,1); if(angle < 90){ analogWrite(PWMA, strength * 255 / 100); analogWrite(PWMB, strength * (angle * 255 / 90) / 100); }else if(angle > 90){ analogWrite(PWMA, strength * ((180 - angle) * 255 / 90) / 100); analogWrite(PWMB, strength * 255 / 100); }else{ analogWrite(PWMA, strength * 255 / 100); analogWrite(PWMB, strength * 255 / 100); } }else if(angle > 180){ digitalWrite(BIN2,1); digitalWrite(AIN2,1); if(angle > 270){ analogWrite(PWMA, strength * 255 / 100); analogWrite(PWMB, strength * ((360 - angle) * 255 / 90) / 100); }else if(angle < 270){ analogWrite(PWMA, strength * ((90 - (270 - angle)) * 255 / 90) / 100); analogWrite(PWMB, strength * 255 / 100); }else{ analogWrite(PWMA, strength * 255 / 100); analogWrite(PWMB, strength * 255 / 100); } } return; } if(data.equals("a")){ if(ledVal==1) ledVal=0; else ledVal=1; digitalWrite(ledpin, ledVal); return; } Serial.print("Recieved: "); Serial.println(data); }
Attachments
Step 4: Testing
Please download Duino Joy Android App at
https://play.google.com/store/apps/details?id=com....
- Pair your Arduino Car to your Mobile phone in bluetooth setting on your phone
- Open Duino Joy app
- Click 'Connect' button
- Select 'HC-05' or any name you set for your HC-05
- Let's play!!