ESP32-based display system for Speeduino ECU with ST7789 TFT display (320x170). Supports both CAN bus and Serial communication protocols.
- ESP32 DOIT DEV KIT v1
- ST7789 TFT Display (320x170 pixels)
- CAN Transceiver Module (for CAN communication)
- MCP2515/TJA1050 or similar CAN transceiver
| GPIO | TFT | Description |
|---|---|---|
| 23 | SDA | MOSI Hardware SPI |
| 18 | SCK | CLK Hardware SPI |
| 15 | CS | CS |
| 2 | DC | DC |
| 4 | RES | Reset |
| 21 | BLK | 3.3V ( or PWM-Pin ) |
| VCC | 3.3V | |
| GND | GND |
| GPIO | Function | Description |
|---|---|---|
| 17 | CAN_RX | CAN Receive |
| 16 | CAN_TX | CAN Transmit |
| VCC | 3.3V/5V | |
| GND | GND |
CAN Speed: Auto-detection (1000000, 500000, 250000, 125000 bps)
| GPIO | Function | Description |
|---|---|---|
| 26 | RX | Serial Receive |
| 25 | TX | Serial Transmit |
| GND | GND |
Serial Settings: 115200 baud, 8N1
| GPIO | Function | Description |
|---|---|---|
| 32 | BL_PWM | Backlight PWM Control |
[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
monitor_speed = 115200
upload_speed = 460800- TFT_eSPI (Custom fork): https://github.com/amrikarisma/TFT_eSPI.git
- ESP32_CAN: https://github.com/amrikarisma/esp32_can.git
- can_common: https://github.com/amrikarisma/can_common.git
- 9-Panel Dynamic Layout (4 top + 5 bottom)
- 6 Indicator Lights (SYNC, FAN, REV, LCH, AC, DFCO)
- Web Configuration Interface (192.168.4.1)
- Speeduino Logo Splash Screen
- RPM, MAP, TPS, CLT, IAT
- AFR, Battery Voltage, Fuel Pressure
- Ignition Advance, VSS
- Engine Status Indicators
- CAN Bus (Haltech protocol compatible)
- Serial (Speeduino TS format)
- WiFi AP for configuration
- Connect ST7789 display according to pin table
- Connect CAN transceiver (for CAN mode) OR Serial connection (for Serial mode)
- Connect power (3.3V/5V depending on modules)
- Install PlatformIO IDE
- Clone this repository
- Open project in PlatformIO
- Build and upload to ESP32
# Build project
pio run -e esp32doit-devkit-v1
# Upload firmware
pio run -e esp32doit-devkit-v1 -t upload
# Monitor serial output
pio device monitor -p /dev/cu.wchusbserial1120- Connect to WiFi AP: "MAZDUINO_Display" (Password: "12345678")
- Navigate to: http://192.168.4.1
- Configure data sources and layout
- Save settings to EEPROM
- Top Row (4 panels): CLT, IAT, AFR, BAT
- Bottom Row (5 panels): RPM, FP, TPS, MAP, ADV
- Indicators (6 max): SYNC, FAN, REV, LCH, AC, DFCO
0x360: RPM, MAP, TPS0x361: Fuel Pressure0x362: Ignition Advance0x368: AFR (Lambda)0x369: Trigger Error Count0x370: Vehicle Speed0x372: Battery Voltage0x3E0: CLT, IAT (Temperature)0x3E4: Engine Status Indicators
- No CAN data: Check wiring, CAN speed, termination resistors
- Display not working: Verify SPI connections and power supply
- WiFi not connecting: Reset EEPROM, check AP mode
- Serial communication: Verify baud rate and pin connections
Enable serial monitoring at 115200 baud for diagnostic information.
Open source project - see LICENSE file for details.