Wireless LED Dot-Matrix Display

This is a joint project between Obelix and me.

Some time ago Christian Lölkes found a LED Dot-matrix display on ebay, labeled defective. So naturally he bought it and as it turns out it was not defective at all, except for the controller. So we build a new one around an ATMega328p and an TP-Link MR3020, where the ATMega328p does all the hard work pushing every line into the shit registers of the display and Multiplexing and the MR3020 takes care of network communication where it’s wireless interface comes in handy, because you only need to provide Power to the display.

For now, a PC takes care of collecting all information and rendering an image, but this will eventually be done by the MR3020 in the future, but for now, it’s more practical to do the rendering on a PC with python, where later on a C-program would do all the work on the MR3020.


While hacking together the software for the display, there are some important things to remember, when dealing with multiplexed dot-matrix displays: Be sure to use a watchdog. Because the on-time of one Row is very short, the display needs to provide high current, in order for the LED’s to shine. In case your program hangs somewhere, this high current is way to much for the mosfet’s and LEDs to handle it well, and well… you will see magic smoke…

To prevent the display from flickering, it has to be multiplexed at a very high rate. Because of this the interrupt routine for receiving data, has to be as short as possible. Otherwise there would be rows, that are brighter than others (because of the multiplexing).

See Source: https://github.com/adrianvielsack/pub/tree/master/ledScreen/avr

The display itself actually consists of 2 separate displays, each with a resolution of 128*16 Pixels. Each Line is connected to a binary decoder. Both displays have a common line select, clock pin, enable and latch, but separate data pins and data output pins, so we connected the first dataout to the second and get a virtual 256*16 pixel display.


As for now, the MR3020 only acts as a serial-network bridge. socat currently takes incoming UDP Packets and sends it to the Serial Port.


  • design a PCB with controller on board to plug onto the Matrix PCB
  • port the rendering to the MR3020 and enable standalone Mode

Leave a Reply