/esp-rgb-led-matrix

Full RGB LED matrix, based on an ESP32 and WS2812B LEDs.

Primary LanguageC++MIT LicenseMIT

PIXELIX

PIXELIX

Full RGB LED matrix, based on an ESP32 and WS2812B LEDs.

License Repo Status Release Build Status

pixelix pixelix

Motivation

I want to have a remote display to show multiple kind of information, running 24/7 reliable. Connected over wifi to the local network, it can be controlled via REST API or websocket.

Some impressions
TimePlugin DatePlugin
IconTextLampPlugin IconTextPlugin
WifiStatusPlugin ...

Overview

Very First Startup

If the device starts the very first time, the wifi station SSID and passphrase are empty. To be able to configure them, start the device and keep the button pressed. The device will start up as wifi access point with the default SSID "pixelix" and the default password "Luke, I am your father.". The display itself will show the SSID of the webserver.

Connect to the captive portal and configure via webinterface the wifi station SSID and passphrase. Restart and voila!

User Interface

  • The user button activates always the next slot.
  • If the display is at a place, which is hard to reach, the virtual user button can be used. It is controllable via REST API and perfect for remote buttons like the Shelly Button 1.
  • If a LDR is connected, the display brightness is automatically adapted.
  • The web interface provides the possibilty to install plugins, control their duration in the slots and etc.
  • Some plugin's spawn a dedicated REST API, see the web page of the plugin or have a look to the REST API documentation.

Note, the websocket interface is currently only used as a service in the web interface.

Documentation

For more information, see the documentation.

Used Libraries

  • Arduino - ESP32 Arduino framework - Apache-2.0 License
  • NeoPixelBus - Controlling the LED matrix with hardware support (RMT) - LGPL-3.0 License
  • ESPAsyncWebServer - Webserver - LGPL-2.1 License
  • AsyncTCP - TCP library - LGPL-3.0 License
  • ArduinoJson - JSON handling - MIT License
  • StreamUtils - Stream utilities - MIT License
  • Bootstrap - CSS Framework - MIT License
  • POPPER JS - POPPER JS - MIT License
  • jQuery - Javascript librariy for DOM handling - MIT License
  • DHTesp - An Arduino library for reading the DHT family of temperature and humidity sensors. - GPL-3.0 License

FAQ

Where to change panel topology?

First adapt in ./src/HAL/Board.h the width and height according your LED matrix.

In the ./src/Gfx/LedMatrix.h file you have to change the member variable m_topo according to your physical panel topology. Take a look how your pixels are wired on the pcb and use the following page to choose the right one: https://github.com/Makuna/NeoPixelBus/wiki/Layout-objects

Issues, Ideas And Bugs

If you have further ideas or you found some bugs, great! Create a issue or if you are able and willing to fix it by yourself, clone the repository and create a pull request.

License

The whole source code is published under the MIT license. Consider the different licenses of the used third party libraries too!

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.