Introduction: Using Arduino and Bluetooth Control a Two-drive Car

Picture of Using Arduino and Bluetooth Control a Two-drive Car
We just modified a two-driver car control by Arduino and Bluetooth module.  The control side used Freaduino 328 and two Joystick module and Bluetooth Shield for send data.  The other  side used Arduino Pro and Bluetooth Bee for received data and control the car. This modified just our step one. We will keep work for using Android phone instead of Joystck  and Bluetooth Shield side and adding acceleration due to gravity futher.

Take a look the demo video:


Step 1: ĸ€ï¼šPreparation

Picture of ĸ€ï¼šPreparation
Arduino Control Side
  • 1 x Freaduino 328,Read Joystick data and send it to Bluetooth Shield.
  • 1 x Bluetooth Shield,  Send X, Y pos to other side.
  • 1 x Sensor Shield, For plugin Josytick module.
  • 1 x Joystick Module, For get X, Y pos.
  • 6 x 3p jumper wires, For connect Joystick module.
  • 1 x The battery compartment, For external power supply
  • 1 x Fixed base plate

Car Side
  • 1 x Arduino Pro, Deal the Bluetooth data to car servo
  • 1 x Bluetooth Bee, Received the Bluetooth data from control side, powen on auto paired with Bluetooth Shield
  • 1 x Bee adapter,For plugin Bluetooth Bee
  • 1 x two-driver Car

You can get most of the module from

Step 2: Flow Chart

Picture of Flow Chart

Step 3: Code

Freaduino Control Side code

#include <NewSoftSerial.h>
#include <avr/pgmspace.h>

#define rxPin 2
#define txPin 3

NewSoftSerial mySerial(rxPin, txPin);

void setup()
   // define pin modes for tx, rx pins:
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   pinMode(A0, INPUT);
   pinMode(A1, INPUT);


void loop(){
    // 0.175 is for Correcting the pox to 90, servor pos defoult 90. This data you can change by yourself
    int posX=(int)analogRead(A0)*0.175;
    int posY=(int)analogRead(A1)*0.175;




Arduino Control Side code

#include <NewSoftSerial.h>
#include <Servo.h>
#include <String.h>

#define rxPin 2
#define txPin 3
NewSoftSerial mySerial(rxPin, txPin);

Servo myservoX;  // create servo object to control a servo
Servo myservoY;                // a maximum of eight servo objects can be created

void setup()
   myservoX.attach(5);  // attaches the servo on pin 9 to the servo object

void loop() {
   int i = 0, n=0, count=0;
   char someChar[32]={0};
   // when characters arrive over the serial port...
   if(Serial.available()) {
       someChar[i++] =;
     }while (Serial.available() > 0);

     if(someChar[0] == 'x')
       int flag = 1;
           if(Serial.available()) {
                     someChar[count++] =;
               }while (Serial.available() > 0);

               if(strstr(someChar, "End"))
                 while(someChar[n] != 'y') n++;
                 char tmpbufx[4] = {0};
                 strncpy(tmpbufx, someChar, n);
                 int posX = atoi(tmpbufx);

                 char* str = strchr(someChar,'y');
                 char tmpbufy[4] = {0};
                 while(str[n] != 'E') n++;
                 strncpy(tmpbufy, str+1, n-1);
                 int posY = atoi(tmpbufy);
                 if(posY>105) posY = 105;
                 else if(posY<85) posY = 85;

Step 4: Code

Please set Bluetooth Shield to Atuo paired mode. You need enter AT mode, and used AT+CMODE=1  . Please make sure you Master and chient Bluetooth Module has the same pair password.


abencomo (author)2014-03-20

Nice work! We built a similar project. However, we installed an Android device onto a RC car and used an IOIO board instead to control it autonomously. Here is the preliminary result:

Norfeldt (author)2013-10-26

These instructions are very lacking in information.

im_technick (author)2012-09-02

How and when I must do this step? I have to call AT command from sketch? I didn't see it in your sketch in last step. Where can i find them? Is the AT command the same for all BT modules so may I google them?

About This Instructable




Bio: ElecFreaks is an open design house founded in March 2011. Our goal is to create rapid prototypes and give small-batch manufacture solution for makers and ... More »
More by ElecFreaks:Elecfreaks Motor:bit User GuideCreate an Electric Spirit LevelHC-08 Bluetooth UART Communication Module V2.4 User Guide
Add instructable to: