2026-02-14 21:33:55 -06:00
2025-12-07 15:02:44 -06:00
2025-12-05 18:37:36 -06:00
2025-12-07 15:05:56 -06:00
2026-02-13 12:21:31 -06:00
2026-02-14 21:33:55 -06:00
2025-12-07 15:02:44 -06:00
2025-12-05 18:37:36 -06:00
2026-02-14 19:05:26 -06:00
2026-02-14 21:33:55 -06:00

WombusLED

Firmware for controlling WS2812b matrices with ESP-IDF. This embedded application is designed around the hardware described in this repository, though the goal is to broaden to other hardware targets. The primary target is the ESP32-S3 Wroom1 N4R2 module. KiCad schematic and PCB layout files can be found in the pcb directory.

Scripts are in scripts directory, named appropriately.

Development plan:

  • Create repository.
  • Build setup, get working hello-world program.
  • Develop 7-segment display driver for the soburg-v2 board, which uses 32-bit shift registers. Ensures functional hardware interaction and interface design.
  • Develop WS2812b driver, would be nice to have some kind of testing for this.
  • Develop WS2812b interface. I like the FastLed library for Arduino so might have a lot of similar functionality.
  • Implement proper app structure, with error checking and performance profiling
  • Add a couple LED effects- the random blink and rainbow sweep are easy ones.
  • Create a mock LED panel that executes natively to test LED effects outside of hardware. (SDL2 or something) Should use the same interface but a different driver (that's probably integrated into the program) Needs to be updated to support the same control interfaces implemented on hardware.
  • Add support for the aforementioned hardware control interfaces. (Dedicated control board may vary, main one not even designed yet) Buttons for switching effects, potentiometers, rotary encoders, 7 segement displays, OLED panel, etc.
  • Checkpoint at a Conway's Game of Life effect that can be modified by controls (speed, brightness, reset)
  • Design this far out is murky, anything past this point is a future ambition
  • MicroSD card for bitmap effects. Implies custom images and animations, config for which can be in a yaml or something
  • Microphone for sound-based effects like a spectrum analyzer

This is basic but hopefully can be good platform for future WS2812b projects.

Scripts:

After cloning: $ ./scripts/repo-setup # installs esp-idf, sets up target configurations
To build: $ ./scripts/build.sh
To flash: $ ./scripts/flash.sh # note: flash.sh automatically builds
To monitor: $ ./scripts/monitor.sh\

TODOs for developers

  • Move all hardware specifications to config/Kconfig.projbuild file. (things like NUM_LEDS, pins.h, ssd_digits, etc.)
  • Create an effect base class for effects to inherit from
  • Attach interrupts for hardware inputs
  • Human I/O (like from buttons, knobs) needs to be in its own io task. Other tasks will be injected with a general I/O interface
  • Investigate putting the wsled task on a separate core from io and such
  • Wsled interface needs a platform for matrix creation
Description
Firmware for controlling WS2812b matrices with ESP-IDF
Readme 944 KiB
Languages
C 46.5%
C++ 37.3%
Shell 8.6%
CMake 7.6%