loading

PS/2/You: Go-anywhere, LED digital message board

FeaturedContest Winner
Picture of PS/2/You: Go-anywhere, LED digital message board
imm-01061870.jpg
imm-01061733.jpg
imm-01061714.jpg
imm-01061685.jpg
Combine three inexpensive LED matrix display panels, an Ardweeny microcontroller and a standard PS/2 computer keyboard into your own go-anywhere, instantly updatable 768-pixel digital message board.

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!









 
 
Remove these adsRemove these ads by Signing Up

Step 1: Materials and tools

Picture of Materials and tools
Materials:

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

Tools:
Hand saw or chop saw
Table saw (optional)
Chisel
Measuring tape
Drill and bits
Screwdriver
Soldering iron and solder
Pliers and cutters
Glue gun
FTDI serial programmer (available from sparkfun for $14.95 --  http://www.sparkfun.com/products/9716)

Step 2: Cut the frame boards

Picture of Cut the frame boards
imm-01061200.jpg
imm-01061226.jpg
There are several ways the frame could be made. I had a wood shop at my disposal, so I made something like an extra-deep picture frame, with mitred corners and a slot cut in the long sides to hold the display panels. The shape and style of the frame is not crucial, so let your creativity (and materials) have a say in the design.

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

Picture of Measure display panel width
Line the two boards up beside each other on a flat surface with their narrow edges up. Place one of the display panels face down between the boards, so that the flanges on the panel rest on the boards, with the protruding LED matrix between them. Make sure the boards are snug up against the sides of the LED matrix. Measure between the outside edges of the boards. This will be the length of the end pieces of the frame.

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

Picture of Measure and cut slot for IO ports
imm-01061237.jpg
imm-01061257.jpg
Line up your DC jack, PS/2 port and power switch atop the edge of the uncut piece you've just marked. Mark out a notch in the edge of the board just big enough for them to all fit into next to each other.

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

Picture of Cut the second display panel notch
imm-01061288.jpg
Cut the second, notched end piece as marked in step 3.

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

Picture of Assemble the frame
imm-f--01113120.jpg
Slide all three display panels onto the slots, making sure they all have the same side up (check the writing on the back of the panels to confirm this). Fit the frame ends and, holding the frame pieces in place, drill pilot holes and counter sinks for the screws which hold the frame together. It may be helpful to put the screws in to keep the frame together as you go. Ensure that your counter sinks are deep enough and don't over tighten the screws to avoid splitting the frame pieces. If you'd like, add some glue to the notched end of the frame for extra strength, but leave the other end unglued if you'd like to be able to get the display panels out.

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

Picture of Add the back cover
imm-a-01063466.jpg
imm-f--01113176.jpg
Place the assembled frame on top of the plexiglass or Lexan sheet. Using a screw or other primitive object, scratch a mark around the edge of the frame.

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

Picture of Wire the power system
imm-01061391.jpg
Wire up the two battery packs in series by soldering the positive lead of one pack to the negative lead of the other. The remaining two leads will be attached to the power switch and DC jack. Lengthen the remaining wires if necessary so that they will reach from where the battery packs are going to be (I put them on the far end from the ports) to the notch where the jack and switch are going to be. Tape or heat shrink the connections.

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

Picture of Wire the PS/2 port
PS2 port diagram.png
Cut one end off four more of your breadboard jumper wires -- one red, one black, one blue, and one white (or your equivalent). Tin and solder them onto the positive, negative, data and read/write pins on the PS/2 port (see diagram).

Step 10: Install the ports and switch

Picture of Install the ports and switch
imm-01061430.jpg
imm-01061435.jpg
Dry fit the PS/2 port, DC jack and power switch again into the notch in the end of the frame. Heat up a glue gun and dab a bit of glue on each one before quickly pressing it tightly into the notch.

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

Picture of Plug in the ribbon cables and set the panel sequence
imm-01061981.jpg
Use two of the ribbon cables that came with the LED panels to connect the adjacent ports on the three panels to each other.  Plug one end of the third cable into the port closest to the switch and power jack. Fold this ribbon up tightly and attach the free end to the inside of the frame with hot glue. The plug should face toward the back of the frame with enough room between it and the back cover for breadboard jumpers to plug into it, and enough room between it and the next port for the breadboard to fit.


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

Picture of Add the breadboard
a-imm-01064381.jpg
schematic5-crop.jpg
Plug your Ardweeny and voltage regulator into the breadboard, making sure the Ardweeny is all the way to one end, and the voltage regulator all the way to the other, preventing any pins from overlapping. Insert the 0.1 uF capacitor between the voltage regulator's input and ground legs. Put the 10 uF capacitor's positive leg in the regulator's output bus, and the negative leg into the ground bus. Now peel off the breadboard backing (very exciting) and stick it onto the flat, surface-mount Holtek chip on the back of the display panel closest to the power switch and IO ports. 

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

Picture of Wire the PS/2 port and display panels
imm-01061992.jpg
imm-01061996.jpg
Pin connections.jpg
Ribbon cable pinout-crop.jpg
Plug the PS/2 port's power wire into the power output from the regulator, or the Ardweeny's power, and the port's GND to the second GND bus, or the Ardweeny's GND bus. Plug the PS/2 port's data wire into pin D3 on the Arwdeeny and the read/write wire into the Arwdeeny's pin D7.


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

Picture of Program It
imm-f--01113181.jpg
Download the attached zip file. Unzip it and move the PS2Keyboard and MatrixDisplay folders to your Arduino libraries directory. This code is compatible with the Arduino IDE 1.0 so if you have an older version please update it before programming the sign. Open up the code in the Arduino IDE, connect your computer to the Ardweeny with the FTDI programming adapter, and upload the sketch. If all is well, a moment later the display will light up with the default text. Unplug the programmer, load some batteries into the battery packs (if you're going to be using battery power), and screw on the back cover. You're all set!

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

Further illuminations
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.
1-40 of 78Next »

Hi , when i compile the code , this error shown

( In file included from PS2You.ino:29:0:

C:\Users\MAN\Documents\Arduino\libraries\MatrixDisplay/font.h:4:35: error: variable 'myfont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

unsigned char PROGMEM myfont[92][5] = {

^

Error compiling. ) !

what the reason of the error ?

Earthling! (author)  Mahmoud-Nasef1 month ago

I'll check on this

I had the exact same issue :P

zajactom10 months ago

I know subject is nearly 2 years old - however is still so cool ;-)

I wonder if will be OK to use USB instead of PS2. I do not have PS2 keyboard USB keyboards are more popular now then PS2. I found this instructable http://www.instructables.com/id/USB-to-PS2-convertor/step1/The-Project/ and wonder if this will work? or will lead to damaging the arduino or/and LED panles.

Earthling! (author)  zajactom10 months ago

Hey there, thanks for the interest! I don't know if that will work or not. I will look into it.

Earthling

Keep on making more projects this is cool.

Did you find out if the USB to PS2 refit to USB Keyboards would go into this device as you worked it out ... Nice project .... As soon as you let me know it's able to work with a USB keyboard I'll be able to make this ...... Thank you very much for your time and patience please & thank you.

csheldon16 months ago

Really enjoyed this. Have you or do you know of any way to retrofit the cpu of an old ticker display (I have a very old Sunrise Systems EMX-2000/3 from 1996 which has a DB25 serial connector) with an arduino/raspberry pi unit instead?

Earthling! (author)  csheldon16 months ago
Hmm, I don't know about that. Thanks for the interest!
valolopez8 months ago

Hello, I wonder if this would work with an Arduino Uno, rather than the Ardweeny, and if with the UNO i would still need the FTDI breakout.

Earthling! (author)  valolopez8 months ago

I believe it would, and no, you shouldn't need the FTDI if you're using an Uno.

bonedoggie1 year ago

Anyone had any luck using a RaspberryPi to drive this?

profort1 year ago
How much would it cost to make a scrolling 1 x 3 foot sign then convert it to solar please?
Earthling! (author)  profort1 year ago
Profort: Good question -- I really don't know. I haven't investigated the pricing on panels that size, but I'm sure they exist. Let me know how it turns out.
ritzanab2 years ago
hello, great project....
do you think that my LEDs do not work, for this is the second time I have attempted to do this project and everything is in the right places and I am getting power in the ardweeny. The only thing that is not working is my LEDs they have yet to turn on. Thank you,
Anabelle
Hi Anabelle,
I am having the same problem as you. Did you ever get yours working? What did you do?
maboy2 years ago
What's the total cost?
Earthling! (author)  maboy2 years ago
That depends on how much of the supplies you have or can scrounge. If you have to buy all the stuff I'd say somewhere around 60 bucks. I hope this helps!
mwilkinson92 years ago
What voltage does this use if I am using DC mains rather than battey
Earthling! (author)  mwilkinson92 years ago
Around 9 - 12v
nyo tom2 years ago
I have a problem getting my keyboard to work. It doesn't send what I write to the display and the welcome screen just stays and says Hello, Welcome and start typing. Any suggestions?
pedro1472 years ago
Hi Earhling!, nice job there very impressive. I only have one Sure 3208 display at this stage and was wondering if the ps2 keyboard input would work with only one display (with any necessary software modifications) as opposed to the three used in this project. I would just like to make sure I can get it up and running before I commit to spending A$32 for two more displays. Thanks Pedro.
Edward_2 years ago
I have it all working perfect! Thanks for this great Instructable.

By the way, does your brother have code for a version of this that will accept SMS messages from a GSM/GPRS modem? That would be a Great followup project.
Edward_2 years ago
You've seen a message board where the text moves from right to left, and repeats, scrolling may not be the correct term. Its usually a longer message than the display is wide. Similar to this: http://www.youtube.com/watch?v=10zQRe3FpHw
Earthling! (author)  Edward_2 years ago
Ah yes, I see what you mean. Scrolling is the right word and in fact the PS/2/You display does exactly that by default.
Edward_2 years ago
Terrific project Earthling!

Do you have a scrolling version?
Earthling! (author)  Edward_2 years ago
Thanks!

What do you mean by a scrolling version?
parjok2 years ago
awesome !!!
can u help me, how if i use standard led dot matrix 8x8 with 74hc595 shift register??
can u send me the schematics and code to my email parjok21@gmailcom ?
thanks

*sorry i'm an amateur in english
markie2 years ago
Very nice instructable!! Im building this for a friend of mine, but i want to know if its possible to use these led matrix boards:

http://www.sureelectronics.net/gallery.php?id=1137&img=6076

Greetz from the Netherlands :)

Mark
1276528496696104933.jpg
Earthling! (author)  markie2 years ago
Hi Markie,
Sorry for the slow response. I asked my brother who did the code for this project and he said those boards probably wouldn't work without modification to the code. Are you having trouble finding the other ones? Good luck, E
ingkiller2 years ago
Hi! i build this led message board and it works fine!
Thanks for that!
But i'd like to use it as a time/temp meter.
Do you maby have a code that displays that?
Thanks!
JesusB2 years ago
Hi! I just followed your instructable and very detailed very nice but I have a problem! when trying to upload the code it gives me this error "MatrixDisplay does not name a type", I already built it and I'm reallynew to arduinos, please help me!
Thank you very much, I liked it. Today I have come diaplay from sure and start to ride today.

Thanks, I'll tell you
How would this work in a bright light environment. We are thinking of incorporating this into a swimming pool environment (as a display for what races are getting ready) and wonder how this would show during daylight hours?

Great project!

Earthling! (author)  iowafalconer2 years ago
Thanks, I haven't tried it much outside but my guess is that it wouldn't be that great in a bright environment.
maclee4real2 years ago
nice job, but is there a way to build the microcontroller that will work perfectly like the one?
i'm really impressed i must confess. good work once again

please email me at maclee4real@yahoo.co.uk if there is a way to build a microcontroller
thanks
maceide3 years ago
Here comes anoter one: ;)
Can one somehow integrate this with an ethernet-shield and send messages over internet to it? Fex via Txitter etc.?

That shouldnt be to difficult, should it?
Earthling! (author)  maceide3 years ago
Hi maceide,
Thanks for your interest in the project and all the questions!

First one first: it should be fairly easy to modify the code so that it stores the messages until the next time the system is turned on. This would be nice, and is something we have talked about doing. I can let you know if we get it into the main code.

As for the other two questions, they also should be do-able. I'll ask my brother who did most of the code for me about them and we'll see what we can do. It would be good to do an update for the system and these would be fun things to include.

Cheers and thanks -- glad you are having fun with the project.
maceide3 years ago
Also I was wondering:
Is it possible to somehow make it display scandinavian characters? Like these ones: http://www.fiskeklubben.org/charcters/how-to.html
Mabye by replacing the bytes from those input on the keyboard with those letters?

Thanks alot!
maceide3 years ago
Hi,
Thanks alot for a great tutorial!!! :)
I have my version up and running now, and I enjoy it.
I was wondering about one little thing:
Is it possible to somehow make it not reset when one removes power to the Ardweeny?

Best regards
-maceide
Hello, I come from Hong Kong. I'm impressed by this great project and tried to build this with a single matrix board and Arduino Duemilanove board but failed.

Cap lock light of KB can be ON/OFF, but no display on matrix. Would you please teach me how to build up? Is it required to amend the program? Thanks a lot!
1-40 of 78Next »