This PlatformIO built C++/Arduino ESP32 program controls a retro-style LED-matrix display, presenting various values received from an MQTT server. The primary focus is on showcasing Speeduino ECU parameters, GPS data, lap times, etc. The display is managed using the Parola library. Created as a personal project to drive an ESP32 based system in the glovebox of my project car (Golf mk2, hence the name). Currently only 2 core ESP32 is supported, as FreeRTOS task switching is used for display/mqtt control.
Note For GPS data, it currently is tested to work in pair with https://github.com/askrejans/gps-to-mqtt project. Note For Speeduino ECU data, it currently is tested to work in pair with https://github.com/askrejans/speeduino-to-mqtt project.
!NOTE! Please note, this is a work in progress, made and tested only specifically for implementation in my car project. If required, modify as needed for any implementation.
- Parola Library: Utilizes the Parola library (GitHub Link) for effective control of the LED-matrix display.
- Settings Menu: Implements a settings menu, allowing users to configure ECU data, brightness, and alignment interactively.
- WiFi Connectivity: Connects to WiFi using the WiFiManager library (GitHub Link) for hassle-free web-based configuration.
- MQTT Integration: Utilizes MQTT library (GitHub Link) for collecting data from an MQTT server. Note: MQTT is currently supported without a password.
- OTA Updates: Includes Over-The-Air (OTA) update functionality for easy firmware updates.
- User Interface: Menu controls are managed through a rotary encoder and an external switch.
- Racing Timers: Has two racing timers on secondary display - with control scheme for pause, reset and independent functionality in background using FreeRTOS tasks.
Dependency Graph |-- googletest @ 1.12.1 |-- MQTT @ 2.5.1 |-- Preferences @ 2.0.0 |-- SPI @ 2.0.0 |-- WiFi @ 2.0.0 |-- WiFiManager @ 2.0.16-rc.2 |-- MD_MAX72XX @ 3.5.1 |-- MD_Menu @ 2.1.3 |-- MD_Parola @ 3.7.1 |-- MD_REncoder @ 1.0.2 |-- MD_UISwitch @ 2.2.2 |-- LedController @ 2.0.2
- Menu Timeout: 3000 milliseconds
- MQTT Server Default: localhost
- MQTT Port Default: 1883
- LED Matrix Configuration:
- Hardware Type: MD_MAX72XX::FC16_HW
- Max Devices: 4
- CS Pin: 21
- Rotary Switch and Button:
- Rotary A Pin: 25
- Rotary B Pin: 26
- Control (CTL) Pin: 27
- Install PlatformIO IDE (if not already installed).
- Open the project in PlatformIO IDE.
- Configure the target board and other build settings in the
platformio.ini
file. - Build the project by clicking on the "Build" button in PlatformIO IDE.
- Setup hardware connections to defined pins.
- Configure WiFi using the WiFiManager library for web-based configuration. AP default password: golf1986.
- Save MQTT configuration parameters and establish a connection to the MQTT server.
Note: Ensure that the required libraries are installed using PlatformIO Library Manager.
Feel free to customize the program to suit your specific requirements and hardware setup.