Hi there,
You’re going to transform any RC toy car into a big message writer that can be used to transform your city squares into witty messages, political statements or beautiful drawings, and for less than 20$. The idea is to drop a trail of powder or paint behind the car to write the message.
Every RC car is different, and you’ll be using your creativity and improvisation skills to create your machine. The code included enables to “record” a path that you have performed controlling yourself the car, and then “replay” this path by simply pressing a button and letting the car go around do its thing, while you can enjoy the performance or run away depending what you loaded the car with.
Let’s get started, shall we?
This is a work in progress. Read the latest news on myide.tumblr.com/tagged/opensquare.
Step 1: What do I need?
You need:
- a RC car (I bought a discounted Lamborghini from Maplin for £15)
- flour or salt, paint, gas, anything else you want to write with
- a square
- 2 Arduino (I used a Uno and a Nano)
- a servo motor (I used a Futaba S3003)
- 5 npn transistors (I used a BC 547B)
- 5 1kohm resistors
- a breadboard (could do without)
- some random material, screws and so on
- a political statement or message or something
And in terms of tools:
- a soldering iron
- glue or a glue gun
- a hand drill
Step 2: Get Inside the Remote
Remove all screws and get access to the inside of the remote control. All remotes are different but it should look something like this. What we are interested in is what’s under the up/down left/right buttons.
Depending on your model, you should have either a metal part taped on top of the circuit board or a push button. Now let’s look at on of these buttons. All they do is close or open a circuit. So if you grab a piece of wire and try to touch both sides (A and B) on the close up, you should have your car reacting as if you pressed that button.
Following the circuit, you should be able to tell quite easily one side of the switch (or one of the two pads) is going towards one of these micro controller chip while the other is going to the ground (the ground is connected to the – side of the battery).
Once you’ve got that, we’ll need to do a bit of soldering. Grab some cable and solder it to the pad that is going to the microchip. Do that for the 4 buttons. Solder one other wire to the ground of the remote. Now we want the Arduino to do the job of controlling the remote for us. So to do that we need to use transistors. Transistors are like water taps with electricity, a gentle push on the handle controls a much stronger flow of water. Arduino can only do the gentle push.
Follow the wiring diagram and you should have your remote hacked enough for a quick “blink test”.
Step 3: Arduino drives your car
Upload the following code to your Arduino and you should have your car moving around.
/*
Blink for OpenSquare RC Car – Pierre – 22/02/14
Turns on the car controls on for one second, then off
for one second, repeatedly.
*/
int up = 4;
int down = 6;
int left = 9;
int right = 10;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(up, OUTPUT);
pinMode(down, OUTPUT);
pinMode(left, OUTPUT);
pinMode(right, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(up, HIGH); // turn the pin on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(up, LOW); // turn the pin off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(down, HIGH); // turn the pin on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(down, LOW); // turn the pin off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(left, HIGH); // turn the pin on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(left, LOW); // turn the pin off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(right, HIGH); // turn the pin on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(right, LOW); // turn the pin off by making the voltage LOW
delay(1000); // wait for a second
}
Continued soon!
Step 4: Hacking the 5th channel
So as you know, the remote uses 4 channels to control the car: up, down, left and right. However we need to control when the powder will fall and when it won’t in order to be able to write something. So we need to have a 5th information sent from the remote. Fortunately, toy companies use standard mass manufactured radio emitter and receptor in their RC cars, and these have a 5th channel. This is sometime used as a Turbo mode or as an extra action. For most cheap cars it is just not used. Fortunately for us.
Now you’ll need to look for both emitter (Tx) and receiver (Rx) chips inside the remote and the car. Most chips have a standard pin order but if you can read the serial number of your chip, try to google it to make sure it’s the good one. Mine was a RX2/TX2 pair and I attached the diagram of the chips above. As you can see the pins we are interested are the 6 on the remote control side and 12 inside the car. These chips are tiny so take your time to get the solder right.
On the remote side, you’ll need to control this one just as the other channels you already wired, which means you need to add a transistor and a resistor to connect it to the Arduino.
Once you’re done, locate the ground on the circuit board of the car and solder a wire there. I used the ON/OFF switch because it was easy to access.
For more detail: OpenSquare – Write big with a RC car