- Overview
- Where to buy
Transform your battery monitoring with this incredible $3 DIY project! 🔋 In today’s video, I’m showing off my latest custom firmware for the tiny ESP32-C3 0.42″ OLED board. This little device acts as a completely wireless mini-dashboard for JBD BMS units, pulling real-time data like voltage, current, and battery percentage directly to the built-in screen. It’s the perfect budget-friendly solution for anyone building their own power walls or e-bike batteries. Let’s dive in!”
Download from my Gdrive file ” ESP32 C3 Super Mini 0.42 BMS Dash V1a.bin ” drive.google.com/drive/folders/1JlviFcqfTiyGO7zASg27CnnW1xyqMeEu?usp=sharing Download
NodeMCU-PyFlasher: -https://github.com/marcelstoer/nodemcu-pyflasher/releases
Open NodeMCU-PyFlasher , connect esp32 , select com port, select file , flash , done.
ESP32 C3 Oled on ALI: s.click.aliexpress.com/e/_c2wHTWsR & s.click.aliexpress.com/e/_c3UrLCcf
JBD Smart BMS 8<>14S s.click.aliexpress.com/e/_c45HXOxh
JBD Smart BMS 10<>16S s.click.aliexpress.com/e/_c3A8Kcyb
🔋 MBO32 BMS V1a
Complete Setup Guide – From Flashing to Monitoring
Linux: /dev/ttyUSB0, /dev/ttyUSB1
macOS: /dev/cu.usbserial-XXXX
| Setting | Value |
|---|---|
| Serial port | Select your ESP32-C3 COM port |
| NodeMCU firmware | Browse and select firmware.bin |
| Baud rate | 460800 (use 115200 if flashing fails) |
| Flash mode | DIO |
| Erase flash | yes, wipes all data |
- Lower baud rate to 115200
- Use a different USB cable
- Hold BOOT button while connecting USB
- Try a different USB port
BMS Monitor
v1.0
Add BMS
Hold BOOT 2s
JBD-SP04S20A
XM-BMS-13S
JBD-4S-100A
JBD-SP04S20A
XM-BMS-13S
JBD-4S-100A
Connecting…
XM-BMS-13S
2:3.43V 6:3.42V
3:3.41V 7:3.40V
4:3.42V 8:3.41V
10:3.43V 14:3.42V
11:3.41V 15:3.40V
12:3.42V 16:3.41V
| Screen | Action | Result |
|---|---|---|
| Main Screen (Connected) | Short Press (1x) | Next data screen (1→2→3→1) |
| Main Screen (Not Connected) | Short Press (1x) | Stay on screen 1 |
| Any Main Screen | Long Press (2s) | Enter config menu |
| Config Screen 1 | Short Press (1x) | Go to screen 2 (Search BMS) |
| Config Screen 2 (Scanning) | Long Press (2s) | Enter selection mode |
| Config Screen 2 (Selection Mode) | Short Press (1x) | Next BMS in list |
| Config Screen 2 (Selection Mode) | Long Press (2s) | Confirm selection, go to screen 3 |
| Config Screen 3 | Short Press (1x) | Go back to screen 1 (Status) |
| Config Screen 3 | Long Press (2s) | Save configuration and exit |
- Install CH340 or CP2102 USB drivers for your OS
- Try a different USB cable (must support data transfer, not charge-only)
- Check Device Manager (Windows) or
ls /dev/tty*(Linux/Mac) to verify port - Try a different USB port on your computer
- Lower baud rate to 115200 instead of 460800
- Enable “Erase flash: yes” option before flashing
- Hold the BOOT button on ESP32 while connecting USB cable
- Press RESET button on ESP32 and try flashing again
- Ensure your BMS is powered on (battery must be connected)
- Move ESP32 closer to the BMS (within 5-10 meters)
- Verify your BMS is JBD/Xiaoxiang compatible
- Disconnect any other Bluetooth devices from the BMS
- Restart both ESP32 and BMS, then try scanning again
- Check if BMS is entering sleep mode (some BMS sleep after inactivity)
- Reduce distance between ESP32 and BMS
- Ensure there are no physical obstructions (metal boxes, walls)
- Check battery voltage – very low voltage may affect BMS Bluetooth
- Wait 10-15 seconds for initial connection to stabilize
- Verify your BMS protocol is compatible (JBD/Xiaoxiang only)
- Power cycle both devices and reconnect
- Check if BMS is in protection mode (disconnect from charger/load)
- Check if you received the correct hardware version (ESP32-C3 with OLED)
- Re-flash the firmware with “Erase flash: yes” option
- Contact hardware supplier if display never showed anything
✨ Enjoy Real-Time Battery Monitoring! 🔋
Designed by Pirate.AC
