Category: Main page » Microcontrollers

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, MSP430, PIC, AVR, 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.

Parts needed

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.

Ainol Aurora

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 ebay. To control described in this project is most suitable track chassis.

Car Chassis

3. Controller (MCU)

As I said above, the project is planned to be multiplatform. At the present time I implemented the project for:


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 4-5$ on eBay.

Motor Driver L298N

6. Other parts

Other parts

After assembly:

Other parts


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:

Ainol Aurora

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:

Main activity

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

The project structure in Eclipse:

CxemCar settings

Android application settings

Screenshot of settings CxemCar Android application version 1.0:

CxemCar 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

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:

Connect Bluetooth

The assembled HC-06 module is as follows:


Its placed in heat-shrink tube of large diameter.

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

Battery Holder

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: 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):

The current version of Android application: 1.2 (15.02.2013)

Author: Koltykov A.V.

Aaron 2015-05-21 23:06:13
Does anyone know where I can find the steering control for the Android Bluetooth RC car. I used the HC-06 Bluetooth module.

[Reply] [Reply with quote]
↑ 0 ↓
Aaron 2015-05-21 22:46:36
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

[Reply] [Reply with quote]
↑ 0 ↓
harsh 2014-12-14 05:18:07
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.

[Reply] [Reply with quote]
↑ +6 ↓
jefin shaji 2014-12-02 05:46:04
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.

[Reply] [Reply with quote]
↑ +8 ↓
Halil 2014-11-01 02:28:34
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..

[Reply] [Reply with quote]
↑ +14 ↓
saleem 2014-07-21 04:55:00
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

[Reply] [Reply with quote]
↑ +4 ↓
Rene 2013-11-16 12:12:09
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.

[Reply] [Reply with quote]
↑ +12 ↓
Admin 2013-11-18 08:11:04
On photo's I can't see connection (IN1, IN2, IN3, IN4) between Arduino and L298N. Do you connect it's?

[Reply] [Reply with quote]
↑ +7 ↓
Rene 2013-11-16 06:56:09
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.

[Reply] [Reply with quote]
↑ +13 ↓
Rene 2013-11-12 23:17:00
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.

[Reply] [Reply with quote]
↑ +16 ↓
Britus 2014-01-31 22:27:38
Hi Rene , i have same problem with you , Have you solved this problem. you have the correct program stm32??

[Reply] [Reply with quote]
↑ +13 ↓
Rene 2013-11-12 12:33: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.

[Reply] [Reply with quote]
↑ +13 ↓
Admin 2013-11-12 17:36:56
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.

[Reply] [Reply with quote]
↑ +5 ↓
Adrian 2013-11-07 12:33:31
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..  :)

[Reply] [Reply with quote]
↑ +13 ↓
carlos 2015-04-12 17:46:19
same problem do anyone know how to fix that?????

[Reply] [Reply with quote]
↑ -3 ↓
mohamed 2015-02-20 01:50:37
Same problem here !

[Reply] [Reply with quote]
↑ +9 ↓
Gregor 2013-09-16 23:16:06
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!

[Reply] [Reply with quote]
↑ +16 ↓
raj 2013-09-09 07:11:33
could you pls suggest me any code for the application to work with android 2.3 version

[Reply] [Reply with quote]
↑ +10 ↓
Aashay 2013-08-31 15:42:43
Can you please send me this model's kit?

[Reply] [Reply with quote]
↑ +8 ↓
Admin 2013-09-01 09:04:15
I don't deal sales. You can buy all the necessary components in stores (eBay, Ali and other)

[Reply] [Reply with quote]
↑ +13 ↓
Mihec 2013-06-07 01:24:30
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.

[Reply] [Reply with quote]
↑ +12 ↓
Admin 2013-06-07 09:36:25
No, you don't need install any driver for external bluetooth dongle. Maybe you Android tablet don't support USB OTG?

[Reply] [Reply with quote]
↑ +2 ↓
Kim 2013-04-06 21:07:12
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  :))

[Reply] [Reply with quote]
↑ +17 ↓
Admin 2013-04-07 08:04:51
Yes, you can create your style command

[Reply] [Reply with quote]
↑ +12 ↓
Robert 2013-03-20 01:15:10
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,

[Reply] [Reply with quote]
↑ +19 ↓
Robert 2013-02-25 22:08:31
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?

[Reply] [Reply with quote]
↑ +23 ↓
Denis 2013-04-30 11:28:30
Hi from France !
I have the same need: it would be great to have the English version!

[Reply] [Reply with quote]
↑ +16 ↓
dotism 2013-02-22 21:17:27
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!

[Reply] [Reply with quote]
↑ +17 ↓
Piotr 2013-02-11 00:55:16
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.

[Reply] [Reply with quote]
↑ +21 ↓
Ben 2014-01-01 15:19:00
I think HC-06 can only work in slave mode, so I think it won't be able to send data back to yout phone.

[Reply] [Reply with quote]
↑ +20 ↓

Pages: [1] | [2] [Next] | [Last]

Leave a comment

Your name:
Your Email:

Type the characters: *