This project creates a digital dashboard display for Speeduino ECU using ESP32-C3 microcontroller and a 3.5 inch TFT LCD display with ILI9488 driver. The display shows real-time engine data from the Speeduino ECU including RPM, AFR, TPS, advance timing, MAP, and other sensor readings. The configuration has been optimized for ESP32-C3 pin mapping with reliable serial communication to the ECU.
Project has been successfully compiled with the latest pin configuration.
Pin mapping used for ILI9488 TFT display:
TFT_MISO = 5 // SPI MISO
TFT_MOSI = 6 // SPI MOSI
TFT_SCLK = 4 // SPI Clock
TFT_CS = 7 // Chip Select
TFT_DC = 8 // Data/Command
TFT_RST = 10 // Reset
Pin mapping used for UART communication to Speeduino ECU:
RX_PIN = 20 // Serial RX (connect to Speeduino TX)
TX_PIN = 21 // Serial TX (connect to Speeduino RX)
BAUD_RATE = 115200 // Communication speed
Note: Uses Serial1 (hardware UART) for reliable communication with Speeduino ECU.
-
TFT_eSPI Library v2.5.43 - Added to dependencies in
platformio.ini -
ILI9488 Driver - Configured for 3.5 inch display with 320x480 resolution
-
Pin Configuration - Pin mapping optimized for ESP32-C3
-
Build Flags - All required definitions added to
platformio.ini:ILI9488_DRIVER=1- Pin definitions (MISO=5, MOSI=6, SCLK=4, CS=7, DC=8, RST=10)
- Font loading configurations
- SPI frequency settings (20MHz for stable operation)
-
Font System - Changed from custom fonts to built-in TFT_eSPI fonts:
- Font 2 (16px height) for small text
- Font 4 (26px height) for large text
-
Function Declarations - Added required function declarations
platformio.ini- Added dependencies and build flagssrc/main.cpp- Fixed font loading and function declarations
Connect the ILI9488 display to ESP32-C3 according to the pin mapping above:
ILI9488 Display ESP32-C3
--------------- --------
VCC 3.3V
GND GND
CS GPIO 7
RESET/RST GPIO 10
DC/RS GPIO 8
SDI/MOSI GPIO 6
SCK/CLK GPIO 4
LED/BL 3.3V (direct connection without control)
SDO/MISO GPIO 5
Connect the Speeduino ECU serial pins to ESP32-C3:
Speeduino ECU ESP32-C3
------------- --------
TX (Serial Out) GPIO 20 (RX)
RX (Serial In) GPIO 21 (TX)
GND GND
Note:
- Backlight (LED/BL) is connected directly to 3.3V to simplify wiring and ensure the display is always on. No backlight control pin is used in this implementation.
- Serial communication uses 115200 baud rate, 8 data bits, no parity, 1 stop bit (8N1)
- Make sure to connect GND between all devices for proper communication
-
Install dependencies:
python3 -m platformio lib install
-
Build project:
python3 -m platformio run
-
Upload to ESP32-C3:
python3 -m platformio run --target upload
-
DMA Warning - ESP32-C3 does not yet support DMA for TFT_eSPI, but the library works without DMA.
-
Touch Screen - If the display has touch screen capability, uncomment the
TOUCH_CSpin in configuration. -
SPI Frequency - Configured at 20MHz for optimal performance with ILI9488 and ESP32-C3 stability.
-
Backlight Connection - Display LED/BL is connected directly to 3.3V for simplified wiring. Display will always be on without dynamic brightness control.
-
ESP32-C3 Stability - Specific platform version (6.5.0) and build flags are used for stable operation on ESP32-C3.
After uploading firmware, the display will show:
- Splash screen with firmware information
- Speedometer interface with various sensor data
- Status buttons and indicators
This project uses and references the following resources:
- Speeduino ECU - Open source engine management system
- TFT_eSPI Library - Arduino TFT graphics library for ESP32/ESP8266
- Image2CPP Tool - Online tool for converting images to C/C++ arrays for embedded displays
The project is now ready to use with the ILI9488 3.5 inch display!
For complete documentation, tutorials, and support visit: www.mazduino.com
- Setup Guides - Complete installation and configuration tutorials
- Troubleshooting - Common issues and solutions
- Feature Documentation - Detailed feature explanations
- Community Forum - Get help from other users
- Contact Support - Direct support channels
- Latest Updates - Firmware updates and new features
- 🔧 Technical Issues - Visit our troubleshooting section
- 💡 Feature Requests - Submit ideas for new features
- 🐛 Bug Reports - Report issues for quick resolution
- 📖 Documentation - Access complete user guides
- 🤝 Community - Connect with other Mazduino users
Visit www.mazduino.com for:
- Direct contact forms
- Support ticket system
- Community forums
- Live chat support
- Email support
© 2025 Mazduino Project | Visit www.mazduino.com for support