One of my primary goals for my RC Toy Car Project was to still be able to control the toy with the remote. Using the existing RF mechanisms was impossible after I ruined the car's board. But it presented an opportunity to try my hand at building my own remote. I decided I would use a ATMega328 running Arduino code jammed into the old remote.

Remote control

My first step was learning about running Arduinos from a breadboard. I studied up on the topic from various websites such as the Building an Arduino on a Breadboard page from arduino.cc and others. What really helped was when I put together a MintDuino kit I had got from Radio Shack on sale. It it basically a breadboard Arduino kit, sans instructions or a TTL board. To program it I bought a USB to TTL serial adapter from eBay. Luckily the Mintduino instructions were available online, although not pointed to from the kit itself.

Mintduino

For the RC connectivity I chose to use low cost 315 Mhz transmitter and receiver boards. These boards are often used in things such as switches to control lights. They are cheap on eBay and the rc-switch library makes it easy to work with them on the Arduino. While prototyping I found that their data rate was more than sufficient for the task.

315 MHZ RF Pair

The ATMega328 chips I obtained from Digikey were blank, so I had to program the Arduino bootloader with a USBASP AVR Programmer I bought off of eBay. I used it on my Mintduino breadboard and with the Arduino IDE. The old remote uses 2 AAA batteries and I found out that I could just use that power as is. Most people will tell you to put some power filtering, but I just wired it up directly. I was worried the Arduino AVR fuses would not let me use only 3V. But after using an AVR fuse calculator and putting in the default fuse settings from the boards.txt file from the Arduino distribution, I learned that by default Arduinos use the 2.7V brown out level. In the end, I did not have to set any fuses myself.

I was now ready to turn my prototype into something more permanent. I ended up using the components listed below:

Item Cost
ATMega328P-PN-ND $3.31
USBASP AVR Programmer $2.60
315 Mhz RF transmitter and reciever $1.34
16Mhz Crystal Oscillator $0.15
3V 5.5V FT232RL FTDI USB to TTL Serial Adapter $4.97
28 pin DIP IC Socket $0.15
Prototype PCB 5x7cm $0.20
Resistors and Capacitors On hand
Jumper Wires On hand

The case was rather small and did not leave much room for additional components. The right side handle was already occupied by the batteries, the only space available was the open area inside the left side handle.

Remote open case

I cut up the perfboard so it would fit inside the handle and have enough holes available for the 28 pin ATMega328, oscillator crystal and connection wires. I wired up the ATMega328 with only the bare minimum: power, 10 K resistor from reset and the crystal with capacitors. I did not have 22 pF capacitors on hand, but found some that when wired in parallel almost add up to 22 pF. Since the board works, they seem to have been close enough. The wires on the right are connectors to the digital lines to remote's buttons and the RF board.

Arduino board in remote

I reused the original board from remote. It contained some simple circuity to send signals at 49 Mhz. I needed only the contact pads you can see in the image below as well as the status LED. I removed all the other components so they would not interfere with my work. There are four contacts that are used for forward and backwards on the left side and right and left on the right side.

Button board bare

I cut out a piece of perfboard to fit in between the contact switches. The 315 Mhz transmitter is soldered into it and then wires for it go to the Arduino perfboard. Each of the 4 contacts are wired to a digital input and ground through a 10 K ohm resistor. The resistor for the LED was placed on the original board, hidden from view. It was a jumbled mess and took awhile to get everything connected properly with the cramped space I was working with. The 315 Mhz antenna connector was wired to the existing antenna. Its probably not the right length, but it works fine.

Button board with transmitter

Finally, when I had everything wired up I tested with some very simple Arduino code available on my GitHub. The LED light turns off whenever a signal is being sent through the 315 Mhz transmitter. The old remote did not need an on/off switch because it only ever used power when a contact switch was pressed. I thought about emulating this behavior, but decided to keep things simple. I did not add a power switch so I have to keep batteries out when not in use. I decided to keep the LED always on except when transmitting to remind me that I needed to do this.

All electronics in remote case

This was a fun project where I learned a good deal about going beyond just using an Arduino prototype board such as the Uno. It was great to build something that is small, self contained and somewhat like a finished product. Even if I was basically just duplicating the exact behavior of the existing toy.