Wednesday, January 16, 2013

Messing with a remote control car and some transistor

As per a previous post I have arranged a Raspberry Pi event (Raspberry Jam) at Gartner's offices in Egham on Sunday the 20th January.

Originally I was considering setting up my Raspberry Pi on a big screen with the Atari 2600 emulator running and a joystick for some old school nostalgia gaming but then I thought that might be a bit boring.

Since I have volunteered to run a Code Club at my kids school I thought how about something in Scratch.  Code Club uses Scratch and Raspberry Pi has  Scratch so if I did something in Scratch then I could have it at the Raspberry Jam and then also show it to the kids at a future date as an example of what is possible with Scratch.

Code Club does programming I thought maybe something with electronics and since I have an old cheap remote control car gathering dust I thought I'd try to design a switching circuit that would allow the Raspberry Pi to control the car from within Scratch.

My knowledge of Scratch, GPIO and Python are limited so it was lucky that somebody far smarter than me has developed the code to allow Scratch to control the GPIO pins. All the details at this link -  http://cymplecy.wordpress.com/2012/08/26/scratch-controlling-the-gpio-on-a-raspberrypi/
After figuring out I needed the latest image of Raspbian for this code to work I was off.
I did the obligatory flash an LED to make sure it all worked on the Raspberry Pi and it did.

Confident that Scratch could control the GPIO pins I turned my attention to the no name, small, cheap remote control.
Out with the multi-meter to check where the switches went to and how they were wired to the one IC on the board. I figured out that the pins are all held high and then go low to be actioned.
The remote from my testing old uses 0.1mA so it probably would have been safe to just attach it to the Raspberry Pi, but not sure if this was correct I decided to put in a transistor switching circuit that would hold the line high until a high is applied to the GPIO pin for that control and then it would go low. Effectively enabling that button on the remote and sending the relevant signal to the car.

I used a 2N222a NPN transistor for the circuit and again being concerned that my very rusty electronics would fail me I posted to the Raspberry Pi Forum asking if the design was OK including a small circuit diagram.(http://www.raspberrypi.org/phpBB3/viewtopic.php?f=44&t=29730) and amazingly Gert van Loo the Gertboard guy replied saying the circuit was good with a recommendation to add a 10K resistor from the GPIO to ground so the GPIO pins start in a determined state. (Yes, I'm missing a 2 in the image I'll fix it later)

With my head swelling from Gerts positive comments but still not ready to test with my precious Raspberry Pi that I needed for Sunday (plan B of Atari 2600 is still an option) I wired up the circuit to my Arduino who's pins a bit more robust.

Created a small bit of  code that set the pins high and low to see if it responded.

RESULT - the car went, forward, backwards, turned left, turned right.all controlled by the Arduino code

This means the circuit is good.  The electronics of the transistor switches works with the cheap remote  control.

So, tomorrow (Thursday) evening I will wire it to my Raspberry Pi and see if the final product works and then can I control it in Scratch.

If yes, then I will have it with me on Sunday.

Roll on tomorrow evening and roll on Sunday.