MAD32 EV Mini Oled Edition for EVs on ESP32

HomeIdeasMAD32 EV Mini Oled Edition for EVs on...

 

  • Overview
  • DETAILED INFO

Add your content here…

MAD32 EVmo – User Guide | Pirate.AC

Mini Advanced Dashboard

It can’t get any smaller. For now 😉

ESP32-C3 OLED 0.42″ | VESC & BMS Monitor | Wireless Bridge

Overview
Quick Start
Flashing
Wiring
Configuration
VESC Features
BMS Features
Roadmap
📊
What is MAD32 EVmo?

MAD32 EVmo (Mini Advanced Dashboard EVmo) is a compact, wireless dashboard module designed for electric vehicles powered by VESC controllers. It features a bright OLED display showing real-time telemetry data and supports Bluetooth connectivity for both VESC Tool app and BMS monitoring.

Perfect for:

  • 🛹 Electric Skateboards & Longboards
  • 🛴 E-Scooters & Electric Kick Scooters
  • 🚲 E-Bikes & Electric Bicycles
  • 🏎️ DIY Electric Vehicles with VESC
  • ⚡ Any VESC-powered electric vehicle

🎯 Key Capabilities

📱
Wireless VESC Tool Bridge
Standard & Master Modes:
Acts as BLE server (NRF UART Service) for wireless connection to VESC Tool app on smartphone, tablet, or PC. Configure and monitor your VESC controller without cables.
📲
VESC BT Receiver
VESC BT RX Mode:
Connects to remote VESC BT module as BLE client and displays its telemetry. Perfect for dual-motor setups or monitoring a second vehicle wirelessly.
📡
ESP-NOW Wireless Link
Master/Slave Modes:
WiFi P2P communication between two modules (up to 100m range). Master sends VESC data to Slave display. Great for dual-board setups or remote monitoring.
📺
Compact OLED Display
72×40 pixel OLED:
Bright, high-contrast display with 4 customizable screens showing battery voltage, power (watts), temperature, speed, and input signals. Switch screens with onboard button.
🔋
BMS Integration
JBD/Xiaoxiang BMS Support:
Monitor battery pack via Bluetooth: state of charge (SOC%), voltage, current, power, temperature, and individual cell voltages (1-16 cells). Helps detect weak or unbalanced cells.
⚙️
5 Operating Modes
Flexible Configuration:
VESC BT – BLE client (default) | Standard – BLE server | Master – BLE + ESP-NOW TX | Slave – ESP-NOW RX | OFF – VESC disabled
🔄
Multi-Screen Display
4 VESC Screens + 3 BMS Screens:
Main (voltage + mode), Watts+Temp, Power (V+W), Inputs (ADC/PPM). Optional BMS screens show pack status, cells 1-8, and cells 9-16.
💾
Persistent Settings
Non-Volatile Storage:
All configuration (mode, BT devices, rotation, BMS settings) saved to flash memory. Survives power off and restarts. Auto-reconnects to saved devices on boot.

💡 How It Works

1. Hardware Connection

Connect ESP32-C3 to VESC via 4-wire UART (TX, RX, 3.3V, GND). Module draws power from VESC 3.3V output.

2. Configuration

Hold BOOT button (2s) to enter config menu. Select operating mode, pair BT devices, enable BMS if needed.

3. Operation

Display shows real-time telemetry. Press BOOT button briefly to cycle through screens. Module auto-connects to saved devices.

🚀
Quick Start Guide

✅ What You’ll Need

  • MAD32 EVmo module (ESP32-C3 with OLED display)
  • VESC controller with UART port (4-pin connector)
  • 4 wires for connection (TX, RX, 3.3V, GND)
  • USB-C cable for initial firmware flashing
  • Computer with NodeMCU-PyFlasher installed
  • Optional: JBD/Xiaoxiang BMS for battery monitoring

📝 Step-by-Step Setup

  1. Flash Firmware to ESP32-C3
    Connect ESP32-C3 to your computer via USB-C. Use NodeMCU-PyFlasher to flash the MAD32_EVmo_V1a.bin file. Settings: Baud 115200, Flash Mode DIO, Address 0x0, Erase flash: Yes.
    → See “Flashing” tab for detailed instructions
  2. Wire ESP32-C3 to VESC
    Connect 4 wires from ESP32-C3 to VESC UART port:
    3.3V → 3.3V (power) | GND → GND (ground) | GPIO21 → RX (ESP TX to VESC RX) | GPIO20 → TX (ESP RX to VESC TX)
    → See “Wiring” tab for diagram
  3. First Power-On
    Turn on VESC. The module will show splash screen:
    Pirate.AC → MAD32 EVmo → Firmware:V1a
    Then display switches to Main Screen showing mode and battery voltage.
  4. Configure Operating Mode
    Hold BOOT button for 2 seconds to enter Configuration Menu.
    Select mode: VESC BT (receive from remote VESC BT – default) | Standard (BLE bridge for VESC Tool) | Master/Slave (ESP-NOW wireless link) | OFF (VESC disabled)
    → See “Configuration” tab for mode details
  5. Optional: Enable BMS Monitoring
    In config menu, navigate to BMS Feature → ON.
    Then go to BMS Status page and hold BOOT (2s) to search for your JBD/Xiaoxiang BMS.
    Select device from list and hold BOOT again to save. Module will auto-connect on next boot.
  6. Save Settings & Exit
    Navigate to Save & Exit page in config menu.
    Hold BOOT button (2s) to save all settings and restart module. Settings are stored in flash memory and persist after power off.

🎮 Daily Operation

📱 Connect VESC Tool

1. Open VESC Tool app on phone/tablet/PC
2. Scan for Bluetooth devices
3. Connect to module (name: User1-6 or device name)
4. Configure VESC wirelessly

💡 Works in Standard and Master modes

📺 View Telemetry

1. Short press BOOT to cycle screens
2. Screen 1: Battery voltage + mode
3. Screen 2: Power (W) + Temperature
4. Screen 3: Voltage + Power (large)
5. Screen 4: ADC/PPM inputs

💡 Press rapidly to skip screens

🔋 Monitor BMS

1. Enable BMS Feature in config menu
2. Pair with JBD/Xiaoxiang BMS
3. View 3 additional screens:
• BMS Main (V, SOC%, A, W, °C)
• Cells 1-8 voltages
• Cells 9-16 voltages

💡 Helps identify weak cells

⚠️ Important Notes

  • Power: ESP32-C3 operates at 3.3V. DO NOT connect 5V to GPIO pins!
  • UART: Make sure UART is enabled in VESC Tool settings (baud rate 115200)
  • Pairing: For Master/Slave mode, both modules must have same channel name (User1-6)
  • BMS: Only JBD/Xiaoxiang protocol BMS are supported currently
  • Reset: To factory reset, hold BOOT while powering on until “Factory Reset” appears
💾
Flash Firmware with NodeMCU-PyFlasher
⬇️ Download NodeMCU-PyFlasher

Free tool for Windows and macOS – download from GitHub Releases

💻
Computer
NodeMCU-PyFlasher
📟
ESP32-C3
USB-C connection

Step-by-Step Instructions

  1. Download and Install NodeMCU-PyFlasher
    Download the latest release from GitHub. For Windows, use the .exe file. For macOS, use the .dmg file. No installation required – just run it.
  2. Connect ESP32-C3 to your Computer
    Use a USB-C cable to connect the ESP32-C3 module to your computer. Make sure it’s a data cable, not just a charging cable. The module should be recognized automatically.
  3. Select COM Port
    In NodeMCU-PyFlasher, click the Serial port dropdown and select the COM port for your ESP32. On Windows it’s usually COM3, COM4, etc. On macOS it’s /dev/cu.usbserial-xxx.
  4. Select Firmware File
    Click Browse and select the MAD32_EVmo_V1a.bin file that you received.
  5. Configure Flash Settings
    Set the parameters as shown below. These settings are critical for proper flashing!
  6. Flash the Firmware
    Click Flash NodeMCU button. Wait for the process to complete. You should see “Finished” message when done. The module will restart automatically.

⚙️ Required Flash Settings

Baud Rate
115200
Flash Mode
DIO
Flash Address
0x0
Erase Flash
yes
⚠️

Important!

The flash address must be set to 0x0 (zero). The BIN file contains bootloader, partitions, and firmware merged together. Using wrong address will result in non-working module.

✅ Troubleshooting

  • COM port not visible? – Install CH340/CP2102 USB driver for your system
  • Connection failed? – Try holding BOOT button while connecting USB, then release
  • Flash failed? – Try lower baud rate (57600) or different USB cable
  • Module not starting? – Verify flash address is 0x0 and re-flash with “Erase flash” enabled
🔌
Wiring Diagram
⚠️

WARNING: 3.3V Logic Level!

ESP32-C3 operates at 3.3V logic. DO NOT connect 5V directly to ESP32 pins! Use 3.3V from VESC or a voltage regulator.

ESP32-C3 Mini
  • Power 3.3V
  • Ground GND
  • UART RX GPIO20
  • UART TX GPIO21
Built-in:
OLED SDA: GPIO5
OLED SCL: GPIO6
BOOT Button: GPIO9
3.3V ←
GND ←
RX ← TX
TX → RX
VESC Controller
  • 3.3V Output 3.3V
  • Ground GND
  • UART TX TX
  • UART RX RX
UART Connector:
Standard 4-pin
header on VESC board
💡 Tip: Make sure UART is enabled in VESC Tool with baud rate 115200
⚙️
Configuration Menu
👆
Short Press
Changes value / Scrolls through device list / Goes to next page
Hold 2 seconds
Enter config / Start search / Select device / Save and exit
Standard Mode WiFi disabled, BLE server only
1
VESC Mode
Std/BT/Mstr/Slv/OFF
2
Rotate
Normal / 180°
3
BMS
ON / OFF
SAVE
Restart
VESC BT RX Mode BLE client – receives from remote VESC BT
1
VESC Mode
VESC BT RX
2
VESC BT
Hold: Search
3
Rotate
Normal / 180°
4
BMS
ON / OFF
SAVE
Restart
Master / Slave Mode WiFi active, ESP-NOW enabled
1
VESC Mode
Master / Slave
2
Name
User1 – User6
3
Rotate
Normal / 180°
4
BMS
ON / OFF
SAVE
Restart
BMS Feature ON Adds BMS Status page with hold-to-search

BMS Status Page:

  • Shows saved BMS name or “add bms”
  • Hold 2s → Starts BLE scan for JBD/Xiaoxiang BMS
  • Short press → Scrolls through found devices
  • Hold 2s again → Saves selected device
  • Auto-connects on startup
  • Adds 3 extra screens: BMS Main, Cells 1-8, Cells 9-16

📝 Important Notes:

  • VESC Mode cycling: VESC BT → Standard → Master → Slave → OFF (short press to change)
  • Name/Channel: Used for pairing Master and Slave (both must have same name)
  • VESC BT Status: Shows saved device or “add VESC”, hold 2s to search
  • BMS Status: Shows saved device or “add bms”, hold 2s to search
  • Rotate: Rotates display by 180° (useful for reverse mounting)
  • Settings saved to NVS flash memory and persist after restart
  • Module automatically restarts after saving configuration
VESC Features & Monitoring

🎯 What is VESC?

VESC (Vedder Electronic Speed Controller) is an open-source motor controller designed by Benjamin Vedder. It’s widely used in electric skateboards, e-bikes, and other electric vehicles for its advanced features like FOC (Field Oriented Control), regenerative braking, and comprehensive telemetry.

🔄 Operating Modes

MAD32 EVmo offers 5 operating modes configured in the settings menu (VESC Mode option). Each mode has different connectivity and data source:

📡
Standard Mode

UART → BLE Server
• ESP32 connected via UART to local VESC
• Acts as BLE server for VESC Tool app
• Direct wired connection (TX/RX pins)
• Best for single vehicle monitoring

📲
VESC BT RX Mode

BLE Client → Remote VESC BT
• ESP32 connects to remote VESC BT module
• No UART wiring required (100% wireless)
• Receives data via Bluetooth BLE
• Perfect for wireless monitoring or 2nd vehicle

🚀
Master Mode

UART + ESP-NOW Transmitter
• Connected via UART to local VESC
• Broadcasts data via ESP-NOW (WiFi P2P)
• Sends to Slave module(s) wirelessly
• Dual display setup (handlebar + wrist)

📻
Slave Mode

ESP-NOW Receiver
• Receives data from Master via ESP-NOW
• No UART wiring (receives wirelessly)
• Perfect as secondary/remote display
• Mount on wrist, helmet, or remote location

OFF Mode

VESC Functionality Disabled
• No UART, BLE server, or ESP-NOW
• Device can work as BMS-only monitor
• Saves power and resources
• Shows “Turn On FEATURES” if BMS also OFF

💡 Mode Comparison:
Standard vs VESC BT RX: Standard = wired UART to local VESC. VESC BT RX = wireless BLE to remote VESC BT module
Master vs Slave: Master reads from local VESC via UART and broadcasts. Slave receives data wirelessly via ESP-NOW
BLE vs ESP-NOW: BLE (VESC BT RX) connects to VESC modules. ESP-NOW (Master/Slave) is WiFi peer-to-peer between ESP32 devices
OFF Mode: Completely disables VESC functionality (UART, BLE server, ESP-NOW). Device can still monitor BMS if enabled
BMS Support: All modes support BMS monitoring simultaneously (BMS always uses Bluetooth BLE)

📊 Real-Time Telemetry

⚡ Power Monitoring

Real-time power consumption in watts, battery voltage, and input current. Essential for range estimation and efficiency optimization.

🌡️ Temperature Monitoring

MOSFET and motor temperature tracking. Prevents overheating and thermal damage to your controller.

🎮 Input Monitoring

ADC1, ADC2, and PPM signal monitoring. Debug throttle issues and verify remote control signals.

📺 Display Screens (3 screens)

Screen cycling:
• Standard/Master/VESC BT modes: Main → Watts+Temp → Inputs
• Slave mode: Watts+Temp → Main → Inputs

Button: Short press to cycle through screens

Master BT:1
42.5
V
MAIN Main Screen
Operating mode / user name, BT status or RSSI, battery voltage (large font)
850
W
42.1V 45C
WATTS+TEMP Power & Temperature
Current power in watts (top), voltage (bottom left), VESC temperature (bottom right)
INPUTS
ADC1: 1.65V
ADC2: 0.00V
PPM: 1500us
INPUTS Input Signals
ADC1 and ADC2 voltages (0-3.3V), PPM pulse width in microseconds
🔋
BMS Features & Battery Monitoring

🎯 What is BMS?

BMS (Battery Management System) protects your battery pack from overcharge, over-discharge, overcurrent, and cell imbalance. MAD32 EVmo supports JBD/Xiaoxiang BMS via Bluetooth for real-time battery monitoring and cell balancing verification.

📊 Battery Pack Telemetry

📊 Pack Status

Total voltage, state of charge (SOC%), current flow (charge/discharge), power output, and pack temperature.

🔬 Individual Cell Voltages

Monitor each cell (1-16) separately. Identify weak cells, detect imbalance issues, and verify proper balancing.

⚡ Charge/Discharge Info

Current direction indicator (+ charging / – discharging), power in watts, and remaining capacity estimation.

✅ Supported BMS Models

  • JBD/Xiaoxiang BMS: SP04S, SP05S, SP10S, SP12S, SP13S, SP14S, SP15S, SP16S, SP20S, SP21S
  • Protocol: Xiaoxiang/Overkill Solar BMS (Bluetooth BLE)
  • Cell count: 3S to 16S configurations supported
  • Connection: Wireless via Bluetooth (no additional wiring needed)

📺 Display Screens (3 screens)

Additional screens when BMS Feature ON:
• Screen 5: BMS Main (pack voltage, SOC%, current, power, temperature)
• Screen 6: Cells 1-8 (individual cell voltages)
• Screen 7: Cells 9-16 (individual cell voltages, shows “–” for unused)

Access: Cycle through VESC screens first, then BMS screens appear

BMS
50.4V 85%
-12.5A 630W
28C
BMS BMS Main
Battery voltage, state of charge %, current (+ charging / – discharging), power, temperature
CELLS 1-8
1:4.20V 2:4.19V 3:4.18V 4:4.20V 5:4.19V 6:4.18V 7:4.20V 8:4.19V
CELLS 1-8 Cell Voltages 1-8
Individual voltage for each cell (1-8). Helps identify weak or unbalanced cells.
CELLS 9-16
9:4.18V 10:4.20V 11:4.19V 12:4.18V 13:– 14:– 15:– 16:–
CELLS 9-16 Cell Voltages 9-16
Individual voltage for each cell (9-16). Shows “–” for unused cells (e.g., 12S pack).
🚀
Future Features Roadmap

🔮 What’s Coming Next

MAD32 EVmo is under continuous development. Below is our roadmap of planned features that will expand the dashboard’s capabilities. These features are in various stages of planning and development. Stay tuned for updates!

✨ Coming Soon

🛰️
GPS Speed Tracking
External GPS Module Integration
Real-time speed tracking from GPS module connected to ESP32. Accurate speed measurement independent of motor RPM. Perfect for comparing actual vs calculated speed.
Status: In Development
📱
External Display Support
Larger Display Options
Mirror telemetry to external displays:
ST7789 76×284 super-wide color LCD
Transparent OLED 128×64 for HUD applications
Enable in config menu for dual-screen setup with simultaneous display on both screens.
Status: In Development
💡
LED Light Control
ESP-NOW Wireless Lighting
Control vehicle lighting via ESP-NOW:
• Turn headlights/taillights ON/OFF
• Control LED strips (WS2812B, etc.)
• Change colors and brightness
• Custom lighting patterns
Status: Planned
🔄
Smart Turn Signals
Gyroscope-Based Indicators
Helmet-mounted gyroscope detects head turning direction and automatically activates turn signals. Wireless communication via ESP-NOW to vehicle lighting system. Enhances safety for night riding.
Status: Planned
❤️
Heart Rate Monitoring
Fitness Tracking Integration
Connect Magene heart rate sensor via Bluetooth. Display real-time heart rate on dashboard screen. Track fitness levels during rides and monitor cardiovascular performance.
Status: Researching
🌡️
Environmental Monitoring
ENS160 + AHT21 Sensor Module
Monitor air quality, temperature, and humidity:
• Air Quality Index (AQI)
• Temperature and humidity
• VOC (Volatile Organic Compounds) detection
• CO2 equivalent (eCO2) levels
Status: Researching
🚲
KT Controller Integration
E-Bike Controller Support
Support for KT (Kunteng) bicycle controllers used in e-bike conversion kits. Read telemetry data via UART/serial communication. Expands MAD32 EVmo beyond VESC to e-bike market.
Status: Researching
🔧
And Much More…
Continuous Innovation
We’re constantly exploring new features and improvements based on community feedback. Have an idea? Let us know! The roadmap evolves with user needs.
Status: Ideas Welcome!

📅 Development Timeline

In Development

Active coding and testing phase. Expected in next major release.

Planned

Feature design complete. Scheduled for future development cycle.

Researching

Exploring feasibility, hardware compatibility, and implementation approaches.

💬 Want to Contribute?

MAD32 EVmo welcomes community contributions! Whether it’s feature suggestions, bug reports, or code contributions – your input helps shape the future of this project.

  • Feature Requests: Share your ideas for new features
  • Bug Reports: Help us improve stability and reliability
  • Hardware Testing: Test with different VESC models and BMS types
  • Documentation: Improve guides, translations, and tutorials

Random posts

Leave a reply

Please enter your comment!
Please enter your name here