Thursday, 27 December 2012

Adafruit LCD and Keypad Kit

I purchased one of these this week and having played with it for a few days I have to say it is a great addition to the Raspberry Pi. It is the "Adafruit RGB Negative 16x2 LCD+Keypad Kit for Raspberry Pi" available from the Adafruit website here for $25 plus postage.  Which compared to the price of the Pi seems expensive, but this seems to be an issue with all accessories, as the Pi is just so cheap. For me the extra functionality this add on brings seemed well worth the money.

As its name implies it comes in a kit form which you have to solder together yourself.  I had not done any soldering before, but the Adafruit website claims "Assembly is easy, even if you've never soldered before and the kit can be completed in 30 minutes." and I can attest that I assembled it with no problems although I think it took me more like two to three hours than the 30 minutes (I assume that is the estimated time for someone more experienced at soldering).  The kit basically consists of a circuit board which is identical in size to the Pi and assembly involves soldering all of the components onto that board.

Once completed you have a unit which sits on top of your Pi connecting to the GPIO pins on the top left corner and resting on the ethernet port on the bottom right corner.  (When the model A is released early next year I guess that Adafruit will have to add some more parts to the kit to make up the height difference for the missing ethernet port).  You get a two row text display with sixteen characters on each line and a back light which you can change the color of for the whole display via code.  There are also five input buttons in the bottom left arranged in a directional pad configuration with a select button to the one side.

 
These look like they will be great for all sorts of projects, removing the need for a full keyboard, but in combination with the screen offering a full range of interaction with your projects.  My only slight criticism (and indeed my only criticism about the whole product at all) is I think these would have been better in the bottom right corner where the board is supported by the ethernet port.  Where they are, it feels if you pressed the buttons too hard it could dislodge the board from the Pi.  But to be fair I know nothing about circuit board design and me saying "can't you just move that bit over there?" about something which might be in fact quite difficult, could well be a rather unhelpful comment.  Maybe this could be a 3D printing project for someone to build some sort of support for that corner?
 
In the bottom right of the board is a small potentiometer which once you have your board assembled and running you use to adjust the contrast (using a small screwdriver) to get the display nice and clear (apparently each LCD screen is slightly different, hence the need to manually set this.)
 
Once you have the board assembled and connected to your Pi it is time to get some code running on it.  There is some sample code to get you started on the Adafruit website here.  I found it did not work for me first time and I had a panicked moment of thinking my soldering job was not up to scratch.  But after a quick Google of the error message I found it was in fact something I could fix from the software side of things.  In fact just re-reading the instructions as I write this, I realise I missed the very first instruction:  "edit /etc/modules (sudo nano /etc/modules) and add: i2c-bcm2708 i2c-dev to the end of the file. Then save and reboot to enable the hardware I2C driver.". So if it doesn't work first try for you, try what I did not bother to do and recheck that you followed all of the instructions!  After that try a Google search on your error message and then an inspection of your solder work.
 
My first actual useful project with it was to get my Pi to display its IP address when it boots up.  Great for being able to remotely connect into it without connecting a keyboard or monitor.  When I have time I will write up a full step by step guide on how to get this working.