Tuesday, 24 July 2012

First Look at the GPIO Pins

One of the things that excites me about the Pi, is the ability to use the GPIO pins to control external devices.  Now I don't have much of an electronics background so this is all going to be pretty new to me.  I thought a good place to start was the article in the second edition of MagPi (the Raspberry Pi magazine which is an excellent read and I think compulsory reading if you are interested in the Pi).

Back in 2011 when I first got interested in the Pi project I thought I'd try and learn some basic electronics and so bought these from Amazon*:


Checking the components list I found my electronic kit had everything I needed.  All I needed now was a way to connect to the header pins on my Raspberry Pi.  According to the article I needed female to male jumper wires.  Now this was Sunday evening and I didn't want to order them off the internet and have to wait for them to arrive.  I wanted to start playing right then!  So I thought I'd go down to Radio Shack (a mere 5 minute walk from my house) and see if they had them...

Well, following my Radio Shack visit I have two pieces of advice for you.  Firstly if you want the sales assistants to leave you alone in Radio Shack then hang out in the electrical components section.  I'm sure if I had been looking at mobile phones I would have had multiple people ask if they could help me, as it was I got a pointer to the area of the store I needed as I walked in and then while I searched through draws of components for a good twenty minutes, nobody asked me if they could help.  Next time I'm in there looking at phones and someone asks if they can help me, I'm going to make sure I have a nasty electronics question ready for them.

But anyhow after twenty minutes of searching I couldn't find any jumper wires, so instead settled on these which I figured I could attach to the ends of wires I already had and then attach to the pins:


Which brings me to my second piece of Radio Shack advice: These are NOT the right parts!  As it happens I have managed to use them to hack a solution out of, which will do for now, but it's not one I'd recommend so I'm not going to go into the details of it here.  When I have a more permanent solution I will let you know.

 


I hooked up the circuit, following the digram from the magazine and fired up the RasPi.  Nothing went pop and there was no black smoke so all good so far.  Then I pressed the button and still no black smoke, but the faint shining of the LED; looks like I got it right!


Next step was to get was to install the GPIO drivers.  Now I hadn't yet connected my Pi to the internet, but no problem I just took my USB pen drive from my Pi and used my notebook to download the required file to the pen drive before returning it to the Pi. Then followed all the instructions without problem, until:

sudo python setup.py install

At which point I get an error message about not being able to download a requirement.  Looks like my Pi needs the net after all.  So I do actually have a network cable, the only issue with it is the length.  So the router gets pulled out from behind the sofa and into the middle of the room and then moving the Pi away from the monitor a bit gets the whole thing to reach.  Plugging the cable in makes some new lights light up on the Pi and then rerunning the command above works.

Next step is to create my Python program.  I manage to create the text file using the right click menu then using open with, I find my OS has a python editor pre-installed, nice!

I type in the code carefully as per the magazine, go to run it and get:

"Unexpected Indent"

What!?!  Python cares about how I lay out my code?  Python reads whitespace? Surely not?  But yes, indeed Python does care about indentations. Interesting...  I do see why this could be a good thing to enforce a standard coding style, but it worries me that there is code that I cannot see.  But removing one of the tabs from the line "<tab><tab>if mybutton == False:" fixed the problem and I had a working program which I was controlling with an external switch.

This is something I have been interested in doing for many years and have never even come close with any of my previous computers.  With the Raspberry Pi, I have a working prototype in a single evening.  Impressive stuff!