a small pixel wall element project
I used an WS2812B LED Strip (5m, 60LEDs/m) to created an 16x16 Pixel Matrix. It is currently driven by an ESP32 Development Board, which I will replace with an "raw" ESP32-WROOM Module in the future. This code is the initial prototype of the API to drive this controller. The data line is wired in a zig-zag schematic.
Currently we have only 1 Endpoint, /api/matrix
on port 80
. It only accepts JSON (needs to be explictly marked via Content-Type: application/json
header). It accepts the following data:
{
"brightness": <value from 0 to 255>,
"pixels: [
[<color>, <color>, ...],
....
]
}
The brightness value will be directly put into FastLED.setBrightness
as an uint8_t
.
Each color is accepted as r << 16 | b << 8 | g
combined into an uint32_t
with each color part being uint8_t
. You can send as many pixels, as your matrix supports, which means less
pixels is possible. Currently there is no error handling included.
In the first half of src/main.cpp
you will currently find the configuration options:
// some general matrix configuration
#define MATRIX_ORIENTATION MATRIX_ROT_180 // this can be MATRIX_ROT_180 or MATRIX_ROT_0
#define MATRIX_PIN 6 // the data in to the matrix
#define MATRIX_ROWS 16
#define MATRIX_COLUMNS 16
// some wifi settings
#define WIFI_SSID "bacon_palace"
#define WIFI_PASS "baconbacon"
Platform IO Stuff. Just make sure you have the correct settings in your platformio.ini
.
NOTE: Documentation is still work-in-progress.
The models can be found in the 3dcase
file, which includes the main stl, the cut stl into 4 pieces and the original Fusion 360 file. The whole piece is 272mmx272mm big. I recommend to make the height of the whole for the LED strip a little bit higher, for easier installation. The photos of the board front and back can be found here in the wiki.
Hack it until you have what you want. MIT.