This is my latest 'Work In Progress' project. It uses an ESP32 WROOM and an 8x32 WS2812b Matrix. The text is sent via a bluetooth phone app to the ESP32 and is displayed instantly, scrolling to the left. Up to 9 preset colours can also be selected using the app.
The Text length is probably unlimited although untested.
The codes sent by the phone app are 0-8 representing the preset colours and 9 indicates that text is being sent next.
When the ESP32 is powered up, it will send an ID of "BT_Text". Connect with the phone using bluetooth before opening the app. The new android update now specifically needs permission to communicate with Bluetooth and will not work otherwise. On first installation of the app an error will ask for permission. Give permission and re-open the app. If permission is not given and the app refuses to function, go into the app settings on the phone and grant permission from there.
EXPANDED TECHNICAL DETAILS
Handling Dynamic Strings
This project is built around the concept of dynamic string handling. While the project uses an ESP32 and a WS2812b matrix, the core principle is similar to using a dedicated display library like MD_Parola for MAX7219 modules. The process involves:
- The Display Buffer: The code maintains a buffer (a character array) that holds the text to be scrolled.
- The Bluetooth Intercept: The ESP32's built-in Bluetooth Classic (or the UART connected to a module like an HC-05) listens for incoming data.
- When a phone app transmits a string like
"Hello World\n", the ESP32 captures it character by character. - The newline character (
\n) acts as a delimiter, signaling the end of the transmission. - The new string is then safely copied into the display function's buffer, and the sign instantly updates to scroll the new text.
The Daisy-Chained Architecture
A single 8x8 matrix is too small for readable words. This project uses an 8x32 WS2812b Matrix, which is essentially four 8x8 panels chained together into one continuous 32-pixel wide grid. The FastLED or NeoPixel library handles the multiplexing, making the entire chain act as one seamless display.
Needed Hardware Components
- ESP32 WROOM (with integrated Bluetooth).
- 8x32 WS2812b LED Matrix Module.
- Android Smartphone running a custom Bluetooth terminal app.
A demonstration video -->