License: GPL-3.0 for both firmware and hardware (KiCad sources and Gerbers are in the same repository).
Why this exists
KompleX KapharnaüM runs digital scenography in public space with no mains power. Shows draw from a bank of 24-30 V packs that must be paralleled safely, monitored individually, and swapped during a tour without taking the installation down.
What the BMU does
- One channel per pack, up to 32 packs: voltage and current via an INA237 on a 2 mOhm shunt, plus temperature, on each channel.
- Each channel has its own MOSFET switch: a pack can be isolated from the bus in microseconds.
- Per-pack protection: under/over-voltage, over-current, imbalance detection. Auto-reconnection with exponential backoff, permanent lock (blinking red LED) after 5 faults until reboot.
- Soft-balancing by duty-cycling the switches, with opportunistic internal-resistance measurement.
- Telemetry over BLE to an iOS companion app (Victron Instant Readout and SmartShunt emulation) and over MQTT to InfluxDB/Grafana, with offline persistence and replay.
- 320x240 LVGL touchscreen with battery grid, SOH and charts. OTA updates on dual partitions with automatic rollback.
- ESP-IDF 5.4 on ESP32-S3, 26 host-side simulation tests in CI (PlatformIO sim-host + ESP-IDF host tests), no hardware required.
Hardware revisions
- BMU v1: manufactured, on the test bench (main photo).
- BMU v2: production-ready, ERC clean, 107-line BOM, JLCPCB Gerbers and assembly files in hardware/.
- 48 V variant (2026): motherboard BMU-v2-48v (INA237 at 85 V common mode, 2 mOhm shunts, LM5164 100 V buck) plus a plug-in MOSFET switch sub-board with 8x IRF5210 back-to-back per channel, for 13s Li-ion packs and 4-15 kWh banks feeding a 230 V inverter. Fabrication files ready, bench validation pending.
Source
- Firmware + hardware: https://github.com/KomplexKapharnaum/KXKM_Batterie_Parallelator
- 48 V companion design: https://git.saillant.cc/electron/Batterie_parallelator-power6tm
Clément SAILLANT