https://github.com/unclerus/evlamp
FireLamp in pure C with ESP-IDF and ESP32
https://github.com/unclerus/evlamp
esp-idf esp32 firelamp guyverlamp neopixel ws2812b
Last synced: about 1 month ago
JSON representation
FireLamp in pure C with ESP-IDF and ESP32
- Host: GitHub
- URL: https://github.com/unclerus/evlamp
- Owner: UncleRus
- License: mit
- Created: 2021-04-27T15:58:48.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-11-28T12:24:35.000Z (almost 2 years ago)
- Last Synced: 2025-03-16T19:20:05.702Z (8 months ago)
- Topics: esp-idf, esp32, firelamp, guyverlamp, neopixel, ws2812b
- Language: C
- Homepage:
- Size: 5.8 MB
- Stars: 20
- Watchers: 3
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EvLamp
Clean implementation of Alex Guyver's FireLamp analogue in pure C for ESP32.
## What it does
Display beautiful effects on a multiple matrices of NxN WS2812B/SK6812/APA106/SM16703 LEDs.
### Features
- ~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](API.md)
- Embedded webserver for remote controlling from browser
- *TODO: OTA*
## Hardware
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](hardware) and containing
an example implementation: a schematic, a simple board and ready-made Gerber files for production
(compatible with JLCPCB requirements).
### LED matrix
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.
### Single matrix configuration
To control one matrix, only one GPIO pin of the microcontroller is needed:

This configuration is the simplest supported.
### Multiple LED matrices (blocks) configuration
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:

### Minimal recommended configuration
1 block, 16x16 LEDs, 90 fps max.
### Maximal recommended configuration
2x4 blocks, each 32x16 LEDs.
Total screen dimensions: 64x64, 4096 LEDs, 60 fps max.
### Changing LED layout
Configure your LED layout at runtime by API or in browser ("Menu -> LEDs Settings"):

## Changing default settings
You can select GPIOs, set default WiFi config, LED layout and more in `idf.py menuconfig`
(`*** EvLamp configuration ***`).
## How to build firmware
- 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