Fabian Schlenz
382631d7d7
the effects to show animations that stay fluid independent of the current frame rate. |
||
---|---|---|
data | ||
docs/effects | ||
include | ||
lib | ||
src | ||
test | ||
.drone.yml | ||
.gitignore | ||
.travis.yml | ||
platformio.ini | ||
README.md |
pitrix
What is pitrix?
pitrix is a software to run on an ESP8266 microncontroller connected to a LED matrix. It will display the time and a few other nice effects and stuff.
pitrix fetches the current time via NTP, is controllable via MQTT and can be flashed over-the-air, so you don't need to disassemble your nice-looking LED matrix everytime you want to update the software.
Effects
Name | Description | Image |
---|---|---|
bell | An example for a blinking sprite. Can be used for home automation, for example. | |
big_clock | A big clock. Seconds are moving around the edge. | |
big_dynamic | Big squares appearing in sequential colors. | |
clock | The small clock at the bottom. Usually used by other effects to integrate a clock. | |
cycle | Meta effect: Cycles through some of the other effects. | - |
confetti | Random pixels lighting up in sequential colors and fading out again. | |
dvd | The bouncing-around dvd logo we all know and love. High chance of hitting cordners because of the low resolution of the LED panel. | |
fire | Fireplace-like effect. Needs more tweaking. | |
firework | Firework-like effect. Needs more work. | |
gol | Conway's Game of Life. | |
matrix | That green effect from The Matrix. | |
multi_dynamic | Space is divided in 2x2 squares which are changing their color random-sequentially. | |
pixel_clock | A clock using single pixels to display the current time. | |
rainbow_matrix | Like matrix, but not just green but displaying a rainbow across the columns. | |
random_matrix | Like matrix, but with random colors and random directions. | |
sinematrix3 | Colorful pastel images, slowly moving about. | |
single_dynamic | 2x2 squares random-sequentially changing their color one after another. | |
snake | Snake. Without self-collision detection or AI. | |
twirl | A colorful twirl. |
How to use
Checkout the code, rename include/config.sample.h
to include/config.h
and edit it to match your preferences / environment.
Then compile and flash it, preferably using PlatformIO.
Control it
Currently, control is possible via MQTT and / or HTTP REST API.
To use MQTT, you have to define MQTT_ENABLE
and configure your MQTT sever's credentials. MQTT_TOPICis set in
include/config.hand defaults to
pitrix`.
To use the HTTP REST API, you have to define HTTP_SERVER_ENABLE and set a port number to listen on (80 is set by default).
Possible commands / topics are:
MQTT_TOPIC/mode
/POST /mode
lets you select an effect to show. Seesrc/effects.cpp
for a list. Default effect iscycle
, which will cycle through some of the available effects. Another effect isoff
, which will just display black, effectively turning the display off. (pitrix stays running, so you can turn it on again by simply selecting another mode.)MQTT_TOPIC/brightness
/POST /brightness
sets the brightness of the display. Valid values are between 1 (darkest possible setting) and 255 (maximum brightness).MQTT_TOPIC/reboot
/POST /reboot
reboots pitrix. Send any value.
You can set retained values to have pitrix read them at startup, effectively
setting a default effect or brightness. (Do NOT set a retained value for
MQTT_TOPIC/reboot
unless you want pitrix to reboot all the time.)
Monitor it
The current status ("ONLINE" or "OFFLINE") of pitrix will be set at
MQTT_TOPIC/status
.
If you enabled MQTT_REPORT_METRICS
, metrics are sent via MQTT every 15
seconds:
MQTT_TOPIC/free_heap
contains the free heap memory in Bytes.MQTT_TOPIC/uptime
contains the uptime of pitrix in seconds.MQTT_TOPIC/fps
contains the currently reached frames per second.
If you enabled HTTP server, you can always make GET requests to /free_heap
, /uptime
or /fps
to get those values.
If you enabled DEBUG
, log messages will be sent to MQTT_TOPIC/log
.
Aknowledgements
Libraries
Library | Author | Link |
---|---|---|
PubSubClient | knolleary | https://pubsubclient.knolleary.net/ |
FastLED (with small modifications) | Daniel Garcia & Mark Kriegsman | https://fastled.io |
NTPClient (with modifications) | https://github.com/arduino-libraries/NTPClient | |
ESP8266WebServer | https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer | |
ErriezCRC32 | Erriez | https://github.com/Erriez/ErriezCRC32 |
ESPAsyncTCP | me-no-dev | https://github.com/me-no-dev/ESPAsyncTCP |
Inspirations and stuff
- This whole project was inspired by https://github.com/orithena/Arduino-LED-experiments/tree/master/Ribba16x16_v2_ESP32. The sinematrix3 effect was also taken from there.
- The firework effect was heavily inspired (aka copied) from https://gist.github.com/kriegsman/68929cbd1d6de4535b20
- The sines effect is based upon https://github.com/atuline/FastLED-Demos/blob/master/sinelon/sinelon.ino