Writing the ESP32 firmware, with all its timing critical constraints, was only half of the job, the actual image generation happens on an MQTT server (hosted on a Raspberry Pi). I've made one of my most complex flows:
It does the following things:
- Fetch the data from different sources (weather data, public transport, Bitcoin value)
- Parse the data according to selected display
- Evaluate the screen update rate (the ESP32 sends back a "heartbeat" message every time it is updated)
- Ping the matrix to make sure it is present
- Send the data to MQTT only if the pixels have changed and the matrix has been successfully pinged
- Apply a "brightness filter" to set the pixel intensity level according to the user settings
- Compress the data to a binary stream for efficient transport (as efficient as it can be made with this framework...)
- Update the Node-RED user interface
In the user interface one can:
- See the preview of what is currently displayed
- Select the matrix display
- Set the LED brightness
- Change the display every minute (selects the next one in the list)
- Turn off the LED matrix (send a black screen and then stop sending updates)
- Show the connection state (ESP32 IP ping status)
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.