@tutorial: Homemade Solar BMS 100A With ESP32 and LAN server

I’ve made a homemade and powerful solar BMS system and I want to show you how to make one, is fully open source. Solar BSMs of 100A for example could get quite expensive so maybe a homemade version with custom code is a better option. This PCB is for 6A, 100A, it has a fan for cooling, an OLED display and using WIFI you can see the data in real time.

by: ELECTRONOOBS on 2026-06-20

~Tutorial Video
~Get my PCB

To start this project you will need the design of my PCB. So get my GERBER files from below for free and with those files go to PCBWAY.com and click the quote now button. Here add the size, amount and select a color for your solder mask. Save to cart and on the next page upload the GERBERs and make the order. Is that easy to order professional PCBs from PCBWAY. 

I’ve just received the PCBs and they look awesome. We can now start.


[ESPERANDO CARGA...]

[3D_READY]
Download: BMS GERBERs files
~Code

The code has two files, one for the actual code and another file for the webpage. This HTML code will use a script to create graphs. Then, each 1000ms, it will ask for data from the ESP such as current, voltage and so on and print the values to the website. And the best part? It uses a completely retro, 80s sci-fi terminal theme, because if we are going to build advanced battery tech, it better looks like a fallout terminal. This is the page in real-time. We have the total pack voltage, current and power values and the stored mA. We also get the temperature, each cell voltage and graphs. The ESP stores the data each second in its RAM—saving the flash memory from dying an early death—and you can then view it here in real-time. On the Arduino code, we create this handle Data API and using json we pass those values to the website. It’s like a tiny, local internet of things, completely free from the clutches of cloud subscriptions.


~Scheamtic
Homemade BMS PCB Scheamtic ESP32
Homemade BMS PCB Scheamtic ESP32
~Battery Connection

Ok, now the code is uploaded but as you can see on the OLED screen or on the website, we get all zeros because the BMS is not connected to a battery pack. So let’s just do that.

All pins from B0 to B6 must be connected to the pack where B0 is the negative of the first battery and B6 is the positive of the last battery. 

On a standard BMS, P+ and B+ are internally connected, P- is a separate part of the circuit controlled by switches, and B- acts as the main system ground (GND) for the battery pack. 

So connect the pack like this schematic. 


ESP32 BMS 6S connection battery
ESP32 BMS 6S connection battery

Leave a comment

Please login in order to comment.

Comments

ADVERTISERS
ADVERTISERS
PCBWAY