The code can hold up to six lines of text with a maximum of 100 characters each. Pressing a key on the keyboard gets you to input mode. Use the up and down arrow keys to select which line to edit. ENTER puts the system back into output mode. When in output mode, each line of text will display for 1 second (you can set this in the sketch), or if the line is longer than 16 characters, it will scroll across the display before moving onto the next line.
Send some text messages:
The uses for this contraption are many. Plug the keyboard in and enjoy putting your wittiest “wiseclacks” on it in the safety of your home, shop, or office, or use the battery option to take it into the wide world. We like to leave the keyboard accessible so that passers by can add a riposte or two to the dialogue, but if monologue is more your thing you can always take it elsewhere. Here's another idea: drill a broomstick-sized hole in the bottom of the frame and add a removable handle so you can wander the streets digitally promoting your geekified political leanings. Score keeping at sports events, birthday greetings, advertising your wares at a farmers market, beaming cryptic messages to your neighbours across the street – the possibilities are endless!
Step 1: Materials and tools
Frame wood (A): 4' of 1x4 (nominal dimensions) or similar sized board, or double that length of 3/4” x 1 5/8” stock
Eight wood screws (B): #8, 1 ¼” long
Three 8x32 dot matrix LED displays from Sure Electronics (C). $12.90 ea. http://www.sureelectronics.net/goods.php?id=1118
DC power jack to match your adapter (E). Here is a standard 2.1mm one from Sparkfun for $1.25 http://www.sparkfun.com/products/119
SPDT (on-off-on) power switch (D). Digikey part#: 450-1527-ND
PS/2 port from an old computer motherboard (F) (ask a local computer shop and they will likely give you a defunct motherboard for free).
A 21” x 4” piece of 1/8” or 1/4” Lexan or Plexiglass (G) (try your local auto glass shop). I used this to make a clear back for the frame, so that you could still see the stuff going on inside. Wood paneling or plastic would work too.
2 AA battery holder (I) http://www.sparkfun.com/products/551
4 AA battery holder in a long, flat configuration (H) http://www.sparkfun.com/products/9547
A few feet of 22 AWG stranded wire (J).
Flexible breadboard jumpers (K). $6.00 at Solarbotics: http://www.solarbotics.com/products/21035/
You can use solid 22 AWG wire for this, but purpose-built breadboard jumpers are more flexible and much easier to use – well worth the expense.
Electrical tape or heat shrink tubing (L).
Mini self-adhesive breadboard (M): $3.95 at Sparkfun: http://www.sparkfun.com/products/8802 or $4.00 at MakerShed: http://www.makershed.com/ProductDetails.asp?ProductCode=MKKN1
Ardweeny microcontroller (N), from MakerShed ($9.95) http://www.makershed.com/ProductDetails.asp?ProductCode=MKSB012 or Solarbotics ($9.99) http://www.solarbotics.com/products/kardw/
The Ardweeny is an Arduino-compatible microcontroller with a tiny footprint -- just the size of the Atmega chip itself. This (and its equally diminutive cost) make it a great choice for breadboard-based projects that need to fit into small places. Unlike the Arduino, Ardweenies requires an external USB/serial programming adapter. They're pretty cheap too though: $15 from MakerShed ( http://www.makershed.com/FTDI_Friend_v1_0_p/mkad22.htm ) or Sparkfun ( http://www.sparkfun.com/products/9716 )
5v regulator (O). 7805 series regulators are cheap and plentiful ($0.29 from MakerShed: http://www.makershed.com/ProductDetails.asp?ProductCode=JM51263) but a low dropout model like the lm2937 will give you more run time on batteries, especially if you're using lower-voltage NiMH AAs ($1.50 at Solarbotics: http://www.solarbotics.com/products/lm2937/)
0.1 μF (104) ceramic capacitor (P)
10 μF electrolytic capacitor (Q)
Six small pan head screws (R) (for holding on the back cover)
9 – 12v AC/DC adaptor (S). The best place I've found to get adaptors is a Salvation Army thrift store. They usually have a large selection for about $1 a piece. If you haven't got a thrift store handy, there's one for $5.95 at Sparkfun (http://www.sparkfun.com/products/298) or $6.50 at MakerShed (http://www.makershed.com/ProductDetails.asp?ProductCode=MKSF3)
Standard PS/2 computer keyboard (T), or USB keyboard with PS/2 adapter.
For reduced hassle and time input, a kit containing the collected materials to build this project can be purchased at the Maker Shed Store: http://www.makershed.com/PS_2_You_Parts_Kit_p/msps2u.htm
Hand saw or chop saw
Table saw (optional)
Drill and bits
Soldering iron and solder
Pliers and cutters
FTDI serial programmer (available from sparkfun for $14.95 -- http://www.sparkfun.com/products/9716)
Step 2: Cut the frame boards
Cut the 1x4 in half lengthwise to make two strips that are about 3/4” x 1 3/4” (a typical “1x4” is actually around 3/4” x 3 1/2”).
Use a chop saw or hand saw to cut a 45° angle on one end of each piece, oriented so the cut goes diagonally across the narrow surface of the board. From the inward side of the angle cut, measure 18 1/4” and make another 45° angle cut. Both cuts should angle outward from the the measured length. Repeat on the second board. These will be the two long sides of the frame.
Step 3: Measure display panel width
Mark the distance you measured above in from the long end of the mitre cut on each of the remaining boards. In this case both mitres should go in from the measured length, which will be the longest dimension of each piece. Cut one of these. Mark the other, but don't cut it yet.
Step 4: Measure and cut slot for IO ports
With a chop saw or hand saw cut the two edges of the notch. Make a few cuts to the correct depth in the middle of the notch, then chisel out the rest of the wood and smooth the bottom of the notch. Try fitting the ports and switch into the notch. They should slide in easily, but without extra space.
Step 5: Cut the second display panel notch
Set the blade of your table saw to a depth of 5/16” (the size of the flanges on the display panels). Cut a notch lengthwise down the inside of each of the long frame pieces, ¼ inch in from the edge. Use a narrow kerf blade if possible. This notch should match the flanges on the display panels so that the panels will slide into the slot and be roughly flush with the front of the frame.
Step 6: Assemble the frame
The frame is now finished!
Note: If you don't have access to a shop and or table saw, there are other ways the frame can be made. One way is as follows. Cut two 1x2 boards (really 1 1/2”x 3/4”) to 18 1/4”, and two shorter lengths of 1x2 to fit on the ends. Then, rather than notching for the display flanges, use the pre-drilled holes in the flanges and screw them onto the front of the frame.
Step 7: Add the back cover
Cut out the backing with a hand saw, table saw or the cutting implement of your choice. Line up the cut piece on the back of the frame and drill six pilot holes through the backing material and into the back of the frame itself. It is now ready to be closed up once all the electronics are in place and functioning.
Step 8: Wire the power system
Cut the end off one of your black breadboard jumpers, and strip and tin the wire. Do the same with a red jumper. Solder the bare end of the one-ended black breadboard jumper and the black wire from the battery packs onto the negative terminal of your DC power jack. Solder a short chunk of red wire between the positive terminal on the DC jack and one of the outside contacts on the switch. Connect the red one-ended breadboard jumper to the switch common, and the battery positive to the third switch terminal. If all went well, you should have a power off position with the switch toggle in the middle, a battery power position to one side, and adapter power on the other.
Step 9: Wire the PS/2 port
Step 10: Install the ports and switch
This is an admittedly unorthodox way of attaching what would normally be PCB or panel-mounted components, but it has the advantage of being very strong and relatively tidy – a good substitute when there's no PCB or mountable panel nearby.
Step 11: Plug in the ribbon cables and set the panel sequence
Each of the display panels has a block of little DIP switches on the back of it labeled CS1, CS2, CS3 and CS4. These switches control how the microcontroller identifies each of the display panels. Because the point of reference for our code is the left side of the display (looking from the front of the display), we need to identify the panels as 1, 2, and 3, going left to right. Turn off all but switch 1 on the leftmost panel, all but switch 2 on the middle panel, and all but switch 3 on the right panel. (To see what these switches do, try setting them to some other sequence once you've got your display running ;)
Step 12: Add the breadboard
Check the datasheet for your voltage regulator to determine which pin is input, which is ground and which is output (typically the sequence is IN-GND-OUT, going left to right looking at the front of the regulator, but check your datasheet to be sure). Since the regulator's ground bus is probably getting a bit full by now, use a small breadboard jumper to connect it to an unused bus on the other side of the breadboard. Plug the power wire from the switch's common into the regulator's input bus and the GND wire from the DC jack into the new ground bus. Using two more jumpers (red and black) connect the voltage regulator's output and the common negative to the buses connecting to the Ardweeny's V+ and GND pins.
Step 13: Wire the PS/2 port and display panels
Get out several more breadboard jumpers. CS2, the first wire on the display ribbon (marked in pink), goes to pin D5 on the Ardweeny, CS 3, the second wire, goes to D6 on the Ardweeny. The third wire (CS 1) goes to D4. Next we have read/write and data on pins 5 and 7 of the display ribbon. Read/write goes to pin D11 on the Ardweeny and data goes to pin D10. The last two pins on the display connector are GND and power. 15 is GND and 16 is +5v. You can put them to either the voltage regulator's output and GND, or the power going into the Ardweeny.
If this seems confusing, take a look at the schematic and the pin connections diagram attached to this step.
Step 14: Program It
The code for the Ardweeny is based on two open source Arduino libraries: PS2Keyboard (http://www.arduino.cc/playground/Main/PS2KeyboardExt2), and MatrixDisplay, which started out as a thread on the Arduino forum and is now hosted at http://milesburton.com/HT1632_Arduino_%22Matrix_Display%22_Library_for_the_Sure_2416_and_0832. The code uses an interrupt routine to read the raw scan codes coming in from the keyboard and buffer them, then looks up the appropriate character in an array of font glyphs before sending pixel-specific commands to the display panels.
Step 15: Use It
There's plenty of room for improvement to the code. One obvious addition would be to use the CTRL key and other key strokes to modify how the line of text is displayed – flashing, sliding in from the top, fading in or other charming effects. Up to 4 of the display panels can be cascaded together, and Sure Electronics recently released a 8x32 panel that uses 5mm rather than 3mm LEDs, so a jumbo PS/2/You display could be a cool variation too.
Roll your own glyphs
The font for the display is contained in a large array of hexadecimal values in the font.h file. It's not user friendly for editing, but Brent Morse of Morse-Code.com has made a little free app that you can use to design your own 5x7 LED display glyphs (http://www.morse-code.com/id89.htm). Besides modifying the font, you can also use the font app to make custom smilies or any other pattern you'd like.