What is this?

A modular battery tester for 18650s aka FERCSA's Charger and Discharger Station with ThingSpeak support.

#Master module

Very simple, everybody can make it on a proto/perf board.

Parts list:

Please modify the schematic for your SD Card reader. My reader is a combo reader and it's not obtainable on eBay anymore. A newer variant on the last three picture.

Schematic: Download
Firmware for STM32: If you built it, send me a mail, otherwise go with the ESP32!
Firmware for ESP-01S: Same..

How to flash the STM32 dev board

How to flash the ESP-01S wifi module

How to connect to the ESP-01S wifi module

Here are some snake peek pictures and logs

A few sample pictures from the web interface

You can check out a demo here: link. Sample key: SM8 Slot0 id:227746 key:1ELXX5VKXUO61FU4 or just use your own.

A few sample log from telnet

Later there will be a ESP32 port for a more simple, more powerful master module but in the current stage with lack of ... blah-blah The ESP32 port is ready!! Later I'll publish the schematic for it, but if you're impatient drop me an email.
Also if you starting your build these days I advise you to choose the ESP32 version (DevKitC or ESP-WROOM32). Currently I'm designing a new master module around the ESP32-WROOM32, it will be a factory made PCB and includes all necessary passive components like buttons, sd card reader and etc. If you can't wait just go with the DevKitC.

#Master module w/ ESP32

Very simple, everybody can make it on a proto/perf board. Easier than the STM32.

Parts list for the DIY version:

ESP32 version includes a Telnet server and OTA update for new firmware too!

Please modify the schematic for your SD Card reader, it can be different.

Schematic: Download
Firmware for ESP32: Just send me a mail.

#Slave module

Because various reason, mostly cost I made a board with a cheap custom programmable logic chip. Communication interface: I2C.

Default address: 0x08(8). There is no address limitation! Add these boards one at a time then change the address in telnet console.

I advise 0x09(9) and up, because if you got a new one it's gonna be 0x08(8) by default, easier to config. Another tip: label your boards.

One Slave Module can handle 8 battery. Maximum daisy-chanable modules: 112 with respect of the I2C specification, otherwise all 7-bit usable which is equal to 128.

Contact me if you need one.

#Discharger module

Simple, DIYable, everybody can make it on a proto/perf board, but after a ten or twenty module you're gonna be call your jesus.

To speed things up I made a few factory made PCBs, contact me if you need some. Another advantage is you don't need jumpwires for the temp sensor(TH1).

Also you can change the power resistor from 5W to 10W then the module can handle 2.5A discharge current easily. Otherwise 1.25A top. These values are without any airflow!

You can set your discharge current in telnet console as you wish.

Schematic and PCB: Download

#Multi discharger module with 8 slot

I designed a new PCB for this, because a lot of TP4056 modules out there with clone chips and this multi module includes all the necessary components for charging and discharging 8 cells at once.

Just connect your Slave Module then it's ready to go.

#Cell holder with the TP4056s

Currently I have two design for it. One with a big proto board and one cheaper solution.

Exploiting the TP4056 Charger's enable pin: Cut pin number 8 with a side cutter then solder a wire to the truncated leg. After that connect the wire other end to the Discharger Module's P4(TP4056_EN). See the 5th picture of the previous section above.

Since I adopted to my firmware, we can detect when a cell is charged. What you need to do is simple: Remove R1 on the TP4056 charger then connect a wire from one of the pad of R1 (which is closer to pin6) to the second pin of TH1 on the Discharger Module.


There is a Grafana plugin also, just change the FCDS console output to CSV.

Then start my python script on your Raspberry or any linux box. It's act as a bridge and use influxDB as database.

More info on the forum and in my script's comment section. This plugin is a very basic example, but you can tweak it as you wish.

Grafana Python script: Download
Grafana JSON file: Download


First video is outdated, the design is changed and I added a lot more feature. More videos coming.. not my strong suit honestly. Check back later.

#Other interesting stuff

My forum topic

All pictures here are clickable.