Drive RGB LED Video Wall Matrix with Only 3 GPIO

Using a few 74xx ICs, an ESP8266 can drive a video wall panel while keeping I2C and data pins free for use with Wemos shields

Similar projects worth following
Microcontrollers such as ESP8266 the GPIO is in short suppy. Driving a video wall panel (a large RGB LED matrix) typically needs a dozen or more of them. The PxMatrix library that many have used for this purpose requires that nearly every pin on the ESP8266 be connected to the matrix display, including the D1, D2, and D4. These pins are typically used by Wemos shields for sensors that use I2C or 1-Wire protocols. The use of PxMatrix is incompatible with using Wemos shields with ESP8266.

This project aims to create an improved matrix panel display driver for microcontrollers such as the ESP8266 that will only require 3 GPIO pins to transfer all the image data and control the row scanning. This driver will use only a few cheap 74xx ICs or equivalents.

  • Of course the fewest GPIO pins is one. This can be done with a matrix of ws2812 pixels. It would take a whole other microcontroller or a lot of logic to get a video wall panel to accept a neopixel signalling protocol. To keep this modification reasonably cheap there is a trade off between logic and interface simplicity. I think 3 ICs and 3 GPIO strikes a reasonable balance.
  • A commenter points out that a 74595 shift registers in series with the matrix data, clock and latch lines would be simpler. This is quite clever and something I'd also like to try. With the current approach of 7493 and 74123, I can shift in one row of pixels just once then show it on every row without further shifting of data -- easy vertical bars. Optionally adjacent pairs of rows can be arranged to show the same pixel data to free up microcontroller time to do other things. This trade-off between screen resolution and CPU cycles is what the Gigatron TTL does.

  • 1 × ESP8266 D1 Mini
  • 1 × RGB LED video wall matrix display
  • 1 × 7493 divide-by-16 counter
  • 1 × 74123 or 74122 retriggerable monostable
  • 1 × 7400 quad 2-input NAND gate

View all 8 components

  • PxMatrix vs Adafruit RGBMatrixPanel

    bornach05/12/2019 at 12:45 0 comments

    I've been reading the PxMatrix library source code. It doesn't seem to be using any bit plane based display algorithm. If I've read the code correctly, the ESP8266 makes 8 SPI transfer of pixel row data to create the illusions of a palette of 512 colours. Whereas the Adafruit RGBMatrix library shifts in 4 bit planes at differently spaced intervals to give the illusion of 4096 colours.

    I think if the ESP8266 can instead use a bitplane technique, the number of SPI transfers can be cut in half and free up microcontroller compute time to do other things like respond to WiFi, run a simple physics simulation, or process user inputs in a game.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates