Project - Fully Custom RC Car

This is a 14-month-long project which I have worked on to build a fully customized remote-controlled car. This project involved a high knowledge of electronics and printed circuit board (PCB) design.



What is it?
Well, as mentioned before, it is a self-built fully customized remote controlled car. The car has my own electronics in it, along with the remote controller which was made to fit in a Xbox 360 controller shell.

Tell me more!
The project started when I bought a damaged second-hand remote controlled car from eBay in December 2012. The car didn't even come with a remote controller, so the electronics in the car pretty much useless. I designed a PCB that went inside the car, along with a PCB that went inside an Xbox 360 controller shell which became the remote controller.

I want the nerdy details!
The first part of the project was to build a PCB for the car. The PCB designed used a Texas Instruments C2000 Launchpad, which was integrated into the board via pin headers. I also used the board for a bit of analog-digital experimentation, and built my own H-Bridge motor driver. A crude, early version of the motor driver schematic is shown below.

Circuit design of the motor controller capable of delivering 3A (with heatsinks).

The board also houses connectors to connect LEDs, a servo, and an optical proximity sensor. There is also a set of SPI headers used to interface with a TI CC1101 RF module to communicate with the remote controller. The front wheels are steered by a high-speed servo motor, which allows driver to steer with high precision. Here is a picture of the fully populated PCB on the car frame.

An early picture of the PCB partially mounted on the frame.

What about the remote controller?
The controller PCB was designed specifically to fit seamlessly in an Xbox 360 controller shell. The controller electronics consist of a TI MSP430G2553 (TSSOP), TI TPS63031 Buck-Boost converter (QFN-10), and of course the TI CC1101 RF module. The controller uses one the left thumbstick to steer the car, the right trigger for throttle, and left trigger for reverse. The "A" button is used to brake, and "B" button is used for toggling the lights on the car. Here is a picture of the controller PCB.

A picture of the partially soldered-up remote controller PCB.

A video of the controller in action.

Throw me some numbers!
Main car battery pack: 8xAA 2200mAh Ni-MH rechargable 9.6V nominal
Remote controller battery pack: 2xAA 3V
Car input voltage range: 7.5V-12V, ~1A
Remote controller input voltage range: 1.8V-3.3V ~<300mA
Low voltage warning for the car and the controller
RF communication frequency: 433 MHz
RF communication rate: 6Kbps
RF communication protocol: Custom 2-byte packet with odd parity
Antenna: Dipole in car, helical in the controller
Motor driver: 8 MOSFET custom H-Bridge
Motor driver output: <5A (with heatsinks)
Motor driver capability: 16 different speed settings
Steering: 5V high speed DC servo

Give me all the secrets of the custom wireless protocol packet!
PA: Odd Parity
Tx: Throttle
B: Brakes
L: Lights
Sx: Steering
How about the software?
Remote controller software (MSP430) was written in C, and is 598 lines long.
Car software (C2000) was written in C using TI SYS/BIOS, and is 909 lines long.

A live demo of the car drifting before it was painted @ CAR, OSU.







2 comments: