This project is special to me because I developed it more than five years ago, when mobility as we know it was just beginning. In fact I have recovered the photos and videos that I made at that time and you can see that the phone used is a Google Nexus One, the first Nexus device in the history, which at that time was the best Android device on the market. You can also see that the app UX is very old. At that time the app was pretty cool and today the app is still published on Google Play with 50.000 downloads and a score of 4.4 starts out of 5. Not bad 🙂
Ok, after the introduction we present the project. Mobot BTCar is a toy radio control car modified to be controlled from a smartphone using an Arduino board and a bluetooth module. The operation is very simple, you need to connect the original connectors of the chip that controls the engine and the steering servo drive to the Arduino board. Thus, instead of controlling the car through the original remote control that works with IR signal, we can control it through the mobile app that connect to the motherboard via bluetooth interface and sends the same commands as the original remote control.
In an initial release of the project the board used was an Arduino Uno and the power supply was a recycled battery from a RC plane, placed outside the car for lack of space inside. In a later review the board was changed to an Arduino Pro Mini, much smaller and discreet and so I could enter the battery inside of the car. In addition the battery was changed to 4 normal 1.5v batteries placed in a holder.
In addition to the control board modification, I installed LEDs in the car for short and long lights (in the headlights) and position and reversing (in the rear lights). These LEDs are also controlled by the Arduino board and managed from the mobile app.
The centerpiece of the project is a RC toy car sold in any toy store. Such cars often have the same microcontroller type, so simple that it has an IR receiver to receive signals from the remote control and transmit the signals to the motor/servos through a particular pin. In my case the microcontroller is a Realtek RX2/TX2 but most are compatible and work the same way.
The Arduino board can be any model. As I told above, in the first version I used an Arduino Uno because is the easiest one to wire, but it take up much space so I would recommend you to use an Arduino Pro Mini and a prototyping board where you can solder the Arduino board and the wires that go to the car microcontroller.
The necessary components are:
- 1/16 RC toy car
- Arduino Uno board (V1) orArduino Pro Mini board (V2)
- Bluetooth modulemodelo BT0417C
- Small Prototyping board
- 6 white LEDs
- 2 red LEDs
- 4 AA batteries for the car
- 650mAh NiMh battery (V1) or 4 AA Batteries + battery holder (V2) to the board
- Wires, welder, various tools…
I think I don’t forget anything. With all this we can proceed with the car modification.
The first thing to do is to remove the plastic car body to access the control board that is placed inside. once we have access to the car microcontroller we will perform the most complicated part of the project, which is to connect the right pins of the microcontroller to the Arduino board to control the motors and servos through it.
As mentioned above, in my case the car have a Realtek RX2/TX2 chip and the most of the models take the same chip or compatible because they are inexpensive and very simple. These features make them ideal for a cheap toy car.
If the car do you use doesn’t have the same chip you have to investigate to identify which of the microcontroller pins send signals to each component. That can be done either by following the path of the cable connecting the motors up to the corresponding connector pin or using an ammeter by measuring the signal from each pin while activate each command of the remote control.
Well, we have already identified the corresponding microcontroller pins. Now we have to solder a wire to each chip output that control the acceleration forward signal, backward acceleration signal, turbo signal, right turn signal and left turn signal. We also need to connect the GND signal to ground. I recommend not to perform the welds directly to the microcontroller pins as the are very close and you have the risk of bypassing several pins. This would make the circuit unusable. It is best to follow the path of each pin on the board to a easier point where we can solder each wire. It is also recommended to label each wire to identify them later to be soldered to the Arduino board.
Once bridged the pins, the microcontroller could be removed from the board, because the conrol is going to be done from the Arduino board. I did this but then I thought it would have been better to keep because in that case we have the option to continue controlling the car through the original remote. I you prefer this option you can keep the microcontroller and get a dual control of the car from his remote control or from the smartphone.
Here you can see the pin datasheet of the Realtek microcontroller:
- Pin 2 – GND
- Pin 6 – Right
- Pin 7 – Left
- Pin 10 – Backward
- Pin 11 – Fordward
- Pin 12 – Turbo
Now that we have bridged all the microcontroller pins we are going to install the car lights. This step is optional. The basic functionality is to control the car from the phone but the project will be mucho more complete if you also control the vehicle lights.
The car model I used came with white lights in front and red lights behind that automatically turn on when accelerating or reversing and turn off when the car stops. So I used the LEDs which were already installed and I also added another more powerful LEDs for use as headlights and another LEDs pair for use as reversing lights. To install these new LEDs I had to make new holes into the plastic chassis in the same area where lights go in the real model.
Once installed the LEDs we cut the original cables between the initial lights with the original board since in this case we will also control the lights from the Arduino board, and we soldered new cables to the two pins of each LED. The short pin of each LED (anode) will have to connect with each other and all of them will go to a GND Arduino input. The long pin of each LED (cathode) are connected in pairs; the two LEDs of the headlights, the two LEDs of the beam lights, the two LEDs for the rear lights and the two LEDs for reverse gear. Each of these pairs is connected to a 1K resistor to prevent the LEDs from burning.
Finally we have to connect cables to each of the 4-pin bluetooth module.
Now we have everything prepared. We just have to connect all the cables to de Arduino board, connecting all of them; the motor and servo ones, the bluetooth module and the LEDs ones. If you are using an Arduino Uno board or similar, simply connect the cables to the Arduino pins. If instead you are using and Arduino Pro Mini or similar, you will have to solder the cables to the corresponding pins.
Here you can see the entire connection map. The board is an Arduino Uno but the scheme and pin location on an Arduino Pro Mini is the same so you can use the map as well.
It only remains to solve the problem of feeding the board. In a first attempt I connected the board to the original car power source that consist in 4 AA batteries but these batteries where not powerful enough to feed the entire system including motors, the Arduino board, the bluetooth module and the lights. For this reason I chose to add an additional source of consistent energy in another 4 AA batteries which will feed the Arduino board, the bluetooth module and the lights, leaving the original power to manage the motors.
ARDUINO BOARD PROGRAMMING
In the following links you can view or download the complete source code that must be loaded into the Arduino board using the official Arduino environment provided for development. This code is responsible for managing communications between the mobile application and the Arduino board through bluetooth and to send the appropiate signals to motors and LEDs.
The application used to control the car was developed for Android platform and it is available in Google Play. You can access the app via the following link:
In this video you can see the car working and controlled through the mobile app. I hope you like it.