Clean implementation of Alex Guyver's FireLamp analogue in pure C for ESP32.
Display beautiful effects on a multiple matrices of NxN WS2812B/SK6812/APA106/SM16703 LEDs.
- ~30 very beautiful effects from different authors, each with set of parameters
- WiFi connectivity in station or access point modes (support for DHCP/static IP addressing)
- JSON HTTP API for remote controlling
- Embedded webserver for remote controlling from browser
- TODO: OTA
You will need:
- ESP32 or ESP32-S3 (ESP32-S2/ESP32-C3/ESP32-C4 and others are not supported)
- One or more WS2812B/SK6812/APA106/SM16703 LED matrices
- 4 buttons:
- Main: long press - On/Off, click - next effect
- Up/Down: brightness up/down
- Reset: long press - Reset settings to defaults
You can use the KiCad 7 project located in the hardware directory and containing an example implementation: a schematic, a simple board and ready-made Gerber files for production (compatible with JLCPCB requirements).
The LEDs in the matrix are connected in series like a snake, starting from the bottom row:
The sizes of the most common matrices:
- 8x8
- 32x8
- 16x16
You can build your own matrix with widely available WS2812B/SK6812/APA106 LED strips.
The dimensions of the matrix side are limited to the range 8..128 and number of pixels in matrix cannot be more than 1024.
I do not recommend using matrices with a large number of LEDs due to the maximum frame rate limitations: for a matrix containing 512 LEDs, this limit is 60 fps, and for a matrix of 1024 LEDs maximal fps is 30. It is better to use multiple small matrices.
To control one matrix, only one GPIO pin of the microcontroller is needed:
This configuration is the simplest supported.
You can connect up to 8 LED matrices of the same size to different GPIO pins and achieve high resolution rendering of the effect. For example:
1 block, 16x16 LEDs, 90 fps max.
2x4 blocks, each 32x16 LEDs. Total screen dimensions: 64x64, 4096 LEDs, 60 fps max.
Configure your LED layout at runtime by API or in browser ("Menu -> LEDs Settings"):
You can select GPIOs, set default WiFi config, LED layout and more in idf.py menuconfig
(*** EvLamp configuration ***
).
- Setup latest ESP-IDF master
git clone https://github.com/UncleRus/EvLamp.git
git submodule init --recursive --remote
idf.py menuconfig
idf.py build
idf.py erase-flash
(not necessary but recommended)idf.py flash
to upload firmware to ESP