Simple RC car for beginners (Android control via Bluetooth)

This is a simple project of Android Bluetooth Car with Bluetooth control. This project is open source and multiplatform: Arduino (Processing), STM32, FEZ Panda II (.NET Micro Framework) and may be even  Raspberry Pi.

To control the car used Android-device with a built-in accelerometer. Tilt forward – car goes forward, tilt to the left – car turns to the left, tilt back – car goes back. Speed of movement or rotation depends on how much you tilt the device. Sensitivity and value of the tilt set in the configuration Android-apps. Also are provided a normal way to control: the buttons on the screen. In addition to all I implemented the touch control. In version 1.2, I added a new type of control: like virtual steering wheel. Total 4 ways to control the RC Car.

Required parts

1. Android device

The most important part – Android device with accelerometer and Bluetooth: tablet, smartphone and other… As an Android device, I used a cheap Chinese tablet “Ainol Aurora” with an external USB-Bluetooth module (because its not have own), connected via USB Host.


2. DIY Car Chassis

We also need any chassis with 2 or 4 DC motors. You can use an old RC toy car. I bought a 4WD chassis with 4 motors on AliExpress. To control described in this project is most suitable track chassis.


3. Controller (MCU)

As I said above, the project is planned to be multiplatform. At the present time I implemented the project for:
FEZ Panda (.NET MF)


Controller must support 2 PWM and UART.

4. Bluetooth module

As a Bluetooth module uses cheap Chinese module HC-06, which has been described in this article.

Bluetooth Modules

5. Motor Driver

I used L298N Dual Bridge DC stepper Motor Driver module. It cost 2-3$ on AliExpress.

L298N Driver

6. Other parts

After assembly:

Assembled Car 4WD


All calculations are performed in the Android-application, and immediately calculate the values of the PWM for the left and right motor. Application has flexible settings, such as the range of the PWM, the sensitivity of tilt, the minimum threshold for the PWM and other. Example commands transmitted by Bluetooth:
L – the command to the left engine, R – for the right
A dash means the motor rotation to move back
255 – PWM value (for Arduino is the maximum speed of rotation)
\r – end of command.
On this command RC car will move forward and slightly rotated to the right, as right engine rotates slowly left.

On this command the left engine will rotate back and forward right, forcing a car to rotate around its axis counterclockwise.

Command is an additional channel to which you can connect for example lights, sound, etc.

Symbols command L, R and H can be defined in the settings of Android-applications.

In the MCU control program provides a timer that shuts off the engine if the last command was received more than n-seconds ago. The data are stored in the EEPROM memory of the controller and can be changed from Android device. The range of this setting is from 0.1 seconds to 99.9 seconds. This setting can be disabled. To work with EEPROM provides commands: Fr – reading values and Fw – record values.


Block diagram of CxemCAR:

Connection Diagram

As we can see, the controller (Arduino, STM32, and others it does not matter which one) connects to Bluetooth module and a motor driver with two or four connected motors.

Android Application

The application for Android was written in Eclipse IDE. All sources of the project and the project for Eclipse, you can download below. Android version on your device must be > 3.0.

The application contains several activity. Main activity is a home screen with buttons running different operating modes and settings:

There are 3 control modes Bluetooth-car: from accelerometer, screen buttons and touch-control.

The project structure in Eclipse:

Android application settings

Screenshot of settings CxemCar Android application version 1.0:

Cxem CAR Settings

MAC address

To establish a connection with the RC Car’s Bluetooth module, you must set MAC-address in the application settings. But first, you must configure the pair the devices on Android-device: open Settings -> Bluetooth and click “Search for devices”. When the phone finds our Bluetooth-module, click them and enter password for pairing (usually “1234”)

To know Bluetooth module MAC-address possible from any application, such as Bluetooth Terminal. To do this, click “Connect a device – Secure” and in the resulting window, click the button “Scan for devices”. Software will be scans the Bluetooth devices and displays them MAC-address.

MAC Address for Bluetooth

Obtained MAC-address needs to be set in the Android-application CxemCAR



The platform I have chosen Pirate-4WD chassis from the manufacturer DFRobot (SKU: ROB0003). Here is its description and video on the assembly.

After the base was assembled chassis with motors, solder the wires to the motors


For alignment of motors I made a spacer from plastic


Then the wheels have been set


The wires from the 4-motor connect to the motor driver board L298N

Then connect the LED to indicate Bluetooth status through a resistor 470 Ohm.


To connect the Bluetooth module or make tipsy all necessary wiring, in addition to the LED is power, GND, TX and RX. See the datashit for your Bluetooth module

I used the module HC-06. Wiring diagram is as follows:

The assembled HC-06 module is as follows:

It placed to large diameter heat-shrink tube.

To power the motor, I used the battery holder with five AA batteries, motor supply voltage of 7.5 volts. You can use the LiPo batteries and other.

CxemCAR project for Arduino
CxemCAR project for STM32

Download project source for Eclipse
Download APK 1.2
Download APK 1.3

Andoid Project (Eclipse) on GitHub

Version 1.2, 1.3: Added a new type of management: the virtual steering wheel. Fixed class Handler. Improvements in Bluetooth class.

Video of demonstration the virtual steering wheel mode (1.2 version and above):

51 thoughts on “Simple RC car for beginners (Android control via Bluetooth)”

  1. Really great project.
    The apk seems to be compiled for Android 4.x
    Could you please compile it also for 2.3 (in my case: 2.3.7)?
    Many thanks

    1. No. It’s work only > 3.1. You can remove some functions from source and compile it for work with Android 2.3. Full project for Eclipse you can download below

    2. You can modify the AndroidManifest.xml. The line you should change is this: android:minSdkVersion=”9

  2. 3) Could you please add additional (LEFT/RIGHT) channel for example served by volume up/down buttons? I’ve Velleman KSR11 robot I’d like to build forklift but one “motor control” is missing

  3. Is it possible to add displaying at android app data received by bt serial from arduino? I need some telemetry data (e.x. motor current etc) and sending it back over bt is the simplest way.

      1. it can only work in slave mode but that just means I think you need something else to make contact with it first

  4. This is simply wonderful, thank you so much for sharing it with us.

    I am having one little issue I was hoping to find some help with… Everything is working beautifully except the ‘Backward’ button in the ‘Button control’ interface. I can move the car backwards in other interfaces, though in ‘Button’ mode it doesn’t seem to be working.

    (I have made some modifications to the Arduino code to suit my project, and I don’t see anything obvious in the Android code.)

    Would someone be able to help me?

    Thank you so much!

  5. Hello, Good project !!!
    Is there any way to change the languge to ensglish? withouth recompiling? I do not have skills on Android programming. Thank you?

  6. This is a really cool project and im building it as well, i was wondering if you could show me some pictures of the wiring between the arduino, the motor controller, and the batteries.
    Many thanks,

  7. Sir I have a question .. about the command r255 .. is it really need to follow the command style ? or i can create my own style of sending and reading a command ? do i really need to use EEPROM?

    Thank You :))

  8. Hi!
    I’d like to know if you have any trouble with connecting BT Dongle to your Tablet.
    I bough chinese tablet without internla BT. When I connect external BT dongle, there’s nothing happened. Should I install some kind of driver?
    My Android version is 4.1.1
    Thanks for help or hint.

    1. No, you don’t need install any driver for external bluetooth dongle. Maybe you Android tablet don’t support USB OTG?

  9. I am trying to get the android application running on an ASUS ME173X (Android version 4.2.1) with integrated bluetooth but I am always getting a ‘Socket failed’ error message. I tested the bluetooth connection with the Bluetooth Terminal and the connection and the modules are working. Is there anything else I could try or test to make the app work? Thank you for looking into this!

  10. i try the codes to control a car, but im always getting “Socket Failed”, when i try it using a led (ledOn, ledOff) it works properly. Help please. As soon as possible. thank you very much.. 🙂

  11. Hi there Tolik777, first of all, thank you so much for providing this amazing guide, it helps beginners like myself to get started into the world of electronics.
    I’m an engineering student but quiet frankly, I have always had trouble understanding electronics, I’m majoring in computer systems engineering and we have to take some courses involving electronics, for this one course, we have to develop a project using Arduino, so my teammates and I decided to present this project as our final project.
    We bought every item you told us to use, we are using Arduino Leonardo, and we got everything hook up and the wiring is fine, the only issue we are having is that it seems the Arduino Code is not working for Arduino Leonardo, so I was going to ask you if its possible you can help us find a way for this code to work on Arduino Leonardo?
    Once again thank you so much and we will really appreciate if you can help us save our project. Thanks Tolik.

    1. Sorry, but I disassembled units and now there is no software and don’t have free time.
      This project should work just fine with Leonardo. It does not matter what your Arduino model use.

  12. I understand you don’t have free time, it’s okay, but we believe the code is not working or it might not be uploading properly, we unplugged the bluetooth module before uploading the sketch, we changed Serial to Serial1 on Leonardo, what we did is we used putty to measure the outputs, we were pressing ‘L’, ‘R’, ‘H’, ‘F’ and so on, and we got nothing on the multimeter, it’s seems that its not outputting anything, so that’s why we thought its the code that is not properly working for Leonardo.

    Any Advice you can give us?
    once again, thank you so much Tolik.

  13. Hello Tolik, we made some progress as we made the car move, however, some of the wheels aren’t working, some of them move, but others don’t, we have made a video recording that we plan to send you, do you think you can give me your email address or maybe your google plus so we can send it to you? thank you so much Tolik, hope you can take a minute to watch our video. Hope you can send me someway to reach you.

    Thanks Tolik.

  14. Hi there once again Tolik777, I hope you don’t mind but I will post a video on youtube so you can take a look at our project and maybe give us some advice on how to fix our problems, we dedicated this video exclusively to you, we even write your name on the whiteboard, I really hope you can take a minute of your time to watch this video that we made especially for you, here is the
    Please after watching this video write us back, me and my teammates have a great admiration to you as you build great projects and share them. We hope we can hear back from you after you watched this video.
    Thank you so much, and we hope to hear from you.

  15. Hello Koltykov ,
    i would like to thank you for such great project , i have no words to express my gratitude and thanks to you , i had done my MSC,IT project with the same project you have done it helped me alot , i had to do some few changes only
    thank you very much ,
    by the way , i want to share you some photos of my project

  16. Can u show how to use motor shied with 4 dc motors, or 2? battery-motor in outs was killing me! i almost spend my day and car is not going any..

  17. Sir i bought all things and also made that car. But when i search for the cxem car application its remobed from google play. What can i do sir. Please kindly help me. Its very important. Becuse i have to participate in a science exhibition. Please help me.

  18. Hey tolik777, can you plz tell me how to connect 4 dc motor with the l298n dual h bridge. I m stuck at this part of th project. I don’t know how to connect 4 motor with h bridge.
    Plz make me clear about this.

  19. I have a couple of questions for anyone that can help. We built the Bluetooth RC car using the HC-06, how do I connect the 3V3 and PIO1 connection from it to the LED and Arduino

  20. Does anyone know where I can find the steering control for the Android Bluetooth RC car. I used the HC-06 Bluetooth module.

  21. hi i have a question what should i do with enable A and B input? should i connect them to 5V or use them as the pwm for controlling the speed? in this case i should use 6 output frm arduino instead of 4,
    could you give me a help please
    my email

  22. Hi,
    Great post & very informative! I am currently undertaking a bit of an interesting project where I am looking at powering a 1/10th scale electric vehicle with ultra-capacitors instead of batteries. I plan on using 2 4.5-15V motors that will draw around 2.5A from the Caps. I like the control set up you are using & I was wondering if you would foresee any issues if I adopted a similar control approach with the same hardware that you have used?

    Thanks in advance,

  23. from where can I download the software for the android phone to control the arduino via bluetooth HC05/06. I did not follow the above demo.

  24. I must add camera my project also . So is it enough all of them(for example Uno) or am I need more ?I know its not detailed but Could u give me an idea?

  25. Hello.My English is bad I’m sorry.I couldn’t find the Code of the project.Please for a link to the Arduino code you are ready.

  26. Hello, i really like the project, its very nicely done and well explained… But i want to ask you and need some help, you used an L298n as a motor driver, but i would want to use TB6612fng because of space savings… Is it possible without changing the code? And if not, could you help me out a bit? Im a beginner in arduino and yeah… I would like to finish this project till the end of this schoolyear…

  27. Also having this socket failed issue tested the bluetooth connection with a led on off script so not sure whats up ?

Leave a Reply

Your email address will not be published. Required fields are marked *