The LEDMATRIX interface
News: Now with lcd4linux driver
I recently purchased 10 SLM1608 (SLM1606) LED matrix display units from Ebay (you might also contact the seller directly at firstname.lastname@example.org). These are 16×16 LED matrix units with a green and a red LED per pixel allowing each pixel to be switched to either green, red, amber or off. The goal of this LEDMATRIX project was to build a 80×32 pixel display by arranging the displays in two rows with 5 displays each giving a total of 16*16*2*2*5 = 5120 LEDs to be controlled individually.
Fortunately these displays come with interated controllers and the data can be shifted into a single display using as few as 6 digital signals. By multiplexing some of the select signals all 10 displays can be controlled with a total of ten wires. Using a cheap ATmega32 microcontroller all ten displays can easily be controlled and updated in real time.
This kind of display is usually controlled via RS232. This has the disadvantage of being very slow and the display data is limited to simple text messages only with the microcontroller of the display doing the actual text drawing. Instead of doing it the same way i decided to use an ethernet interface for the LEDMATRIX display. Even the most simple ethernet interface i am using is fast enough to transfer graphics data in realtime from a PC to the display allowing to update the entire screen 50 times a second. The ethernet support of LEDMATRIX is based on the cirrus logic cs8900 chip which is e.g. supported by the free Procyon AVRlib which has been used for this project.
The LEDMATRIX additionally includes a simple speaker allowing to e.g. notify the user of a new message being displayed. Furthermore a TSOP1736 IR receiver can optionally be connected. This device receives and decodes the IR signals used by ordinary TV remote controls. By returning informtion about received IR signals to the controlling PC, the displays contents may e.g. be remotely changed using a simple spare IR remote control.
This whole project is open under the GPL. This means that you get full access to the firmware source code as well as to the schematics and the PC companion software.
After startup the display shows the LEDMATRIX splash screen with the firmware version number and the current IP address.
Once the PC is accessing the display any data can be displayed like e.g. a long transparent scroll text with some static small red hearts in the background.
The entire device could easily be built with standard wired components … if there wasn’t the cs8900 ethernet controller which is available in SMD technology only. Fortunately, some companies sell this chip ready to use on a simple pcb like e.g. this one (search for a device called easyToWeb-CS8900-16bit). This isn’t the cheapest solution but it allows the entire device to be built manually.
I mounted the ten displays in two rows with five displays each. The five displays of one row share the main control signals (red, green, bright, clock and reset) while the five columns share the select signal. Both rows have seperate red and green signals. This way i can update both displays in a column at once and one column after the other. See the image below for the wiring on the real thing.
Once of the 16×16 displays draws about 2 A if all LEDs are switched to amber. My application does not reach the limit of 3.2 A specified for the displays, since during the display update times the displays are switched off.