
Board esp32 v2
sudomesh/disaster-radio
A (paused) work-in-progress long-range, low-bandwidth wireless disaster recovery mesh network powered by the sun.

Jeder Test legt die Zelle mit einer festen Nummer an. Die Nummer kommt mit einem Etikettendrucker auf die Zelle, der QR-Code darauf öffnet die Zelle später direkt in CellDoc.
CellDoc Nano is an open-source printed circuit board by mariofritzer, from the mariofritzer/CellDoc repository on GitHub, published under the MIT licence. It is a 2-layer board of 95 × 100 mm with 28 parts on 19 nets, routed with 220 tracks and 8 vias.
It is built around the AO3400 and AO3401. Its parts include 8 resistors, 4 transistors, 4 connectors, 3 ICs and 1 capacitor. It belongs with the ESP32 and RISC-V boards of this library.
Diagnose für Akkuzellen. Ein ESP32-Prüfstand, der Akkus lädt, mit konstantem Strom entlädt, dabei Kapazität, Energie und Innenwiderstand misst und am Ende eine Lebenszahl von 0 bis 100 ausgibt. Bedient wird alles über eine Weboberfläche im Browser, am Handy wie am PC.
Ausprobieren ohne Hardware: Demo im Browser (Beispielwerte) · Installieren: Webflasher
| Live | Ergebnisse | Ergebnis im Detail |
|---|---|---|
![]() | ![]() | ![]() |
| Test starten | Handbuch | Einstellungen |
|---|---|---|
![]() | ![]() | ![]() |
Fotos vom fertigen Aufbau folgen.
Jeder Test legt die Zelle mit einer festen Nummer an. Die Nummer kommt mit einem Etikettendrucker auf die Zelle, der QR-Code darauf öffnet die Zelle später direkt in CellDoc. Beim nächsten Test wird sie aus dem Bestand gewählt und automatisch mit dem ersten Test verglichen.
| Bestand | Zelle | Etikett | Pack |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
celldoc und celldoc-mini), die anderen werden als Partner eingetragen oder gesucht. Bestand und Nummern gleichen sich dann von selbst ab.3D-Ansicht des Aufbaus (Anordnungsvorschlag):
Anschlussplan mit allen Modulen und Kabelfarben:
ESP32 DevKit, 2× INA226 (Strom/Spannung), MCP4725 + LM358 + 2× IRFP250N (Konstantstromlast), TP5000 (Lader 4,2/3,6 V), 2× ADS1115 (Balancer), 3× DS18B20, zwei Relais, CPU-Kühler mit 4-Pin-Lüfter, Versorgung über USB-C (PD-Decoy auf 12 V).
Statt des ESP32 DevKit V1 geht auch ein ESP32-S3-DevKitC-1 N16R8 (mehr Speicher, RGB-Statusleuchte). Dafür gibt es eigene Schaltpläne und Firmware-Dateien mit -s3 im Namen. Der Webflasher erkennt den Chip selbst.
Schaltung, Pinbelegung, optionaler QR-Scanner und Einkaufsliste: docs/hardware.md
Die kleine Version nur für 18650 Li-Ion: laden, entladen, Kapazität, Innenwiderstand und Lebenszahl, in drei Größen mit 1, 2 oder 4 Schächten, die gleichzeitig laufen. Versorgung über USB-C, ein TP4056 und eine kleine Konstantstromlast pro Schacht (2 A bzw. 1 A bei vier Schächten), optional ein OLED mit drei Tastern. Weboberfläche und Ergebnisse sind dieselben wie beim großen CellDoc.
Schaltpläne für alle drei Varianten, Stücklisten und Bedienung: docs/mini.md · Demo Mini 4
Die kleinste Variante mit rund zwölf Teilen: ein Schacht für 18650, ein ESP32-C3 SuperMini, ein INA226, ein TP4056 und ein fester Lastwiderstand (3 Ω), den die Firmware per PWM auf Konstantstrom regelt (bis 1,2 A, empfohlen 0,8 A). Strom kommt über die USB-C-Buchse des C3, bedient wird sie über die BOOT-Taste und die LED auf dem Board oder ganz normal über die Weboberfläche. Kapazität, Innenwiderstand, Lebenszahl, Bestand, Etiketten, MQTT und Sync wie bei den großen Geschwistern.
Schaltplan, Stückliste und Bedienung: docs/nano.md · Demo Nano
Am einfachsten mit dem CellDoc Webflasher: ESP32 per USB anschließen, im Chrome oder Edge Gerät wählen (CellDoc, Mini 1, 2, 4 oder Nano), Verbinden und installieren. Er spielt immer den neuesten Stand von main auf.
Von Hand: unter Releases die Datei celldoc-factory.bin laden (Mini: celldoc-mini1-factory.bin, -mini2- oder -mini4-, Nano: celldoc-nano-factory.bin) und mit dem ESP Web Flasher von Espressif an Adresse 0x0 schreiben.
Alternativ mit PlatformIO: pio run -t upload
Unter Einstellungen → Firmware-Update die Datei celldoc-firmware.bin hochladen (Mini: celldoc-mini<n>-firmware.bin, Nano: celldoc-nano-firmware.bin). Einstellungen und Ergebnisse bleiben erhalten.
celldoc1. Verbinden, die Seite öffnet sich automatisch, sonst http://192.168.4.1 aufrufen.| Zelltyp | Gewichtung | Kapazität | Innenwiderstand |
|---|---|---|---|
| bekannt | 70 % Kapazität, 30 % Ri | 100 % Nennwert = 100 Punkte, 60 % = 0 | Neuwert = 100 Punkte, 2,5-facher Neuwert = 0 |
| unbekannt | 50 / 50 | gegen typischen Wert der Chemie | feste Grenzen pro Zelle |
Bei unbekannten Zellen zeigt CellDoc einen Bereich (z. B. „≈ 55–70 %“). Die hinterlegten Ri-Neuwerte sind Richtwerte für den DC-Innenwiderstand und lassen sich beim Start überschreiben. Die Berechnung liegt in src/soh.h und wird mit test/test_soh.cpp bei jedem Build geprüft.
pip install platformio
pio run -e esp32dev # baut Firmware und bettet web/index.html ein
pio run -e esp32dev -t upload # flasht per USB
pio run -e mini2 -t upload # CellDoc Mini mit 2 Schächten (mini1, mini2, mini4)
pio run -e nano -t upload # CellDoc Nano (ESP32-C3 SuperMini)
pio device monitor # serielle Ausgabe, 115200 BaudDie Weboberfläche ist eine einzelne Datei: web/index.html. Direkt im Browser geöffnet startet sie im Demo-Modus, praktisch zum Entwickeln ohne Gerät. Beim Bauen packt tools/embed_web.py sie komprimiert in die Firmware.
| Pfad | Inhalt |
|---|---|
src/config.h | Pins und harte Grenzwerte |
src/hal.* | Messung, Last-Regelung, Lader, Relais, Lüfter |
src/tester.* | Testablauf, Ri-Messung, Sicherheitsüberwachung |
src/profiles.h | Akkuchemien und Zelltypen |
src/soh.h | Lebenszahl und Note |
src/cells.* | Zellenbestand, Selbstentladung |
src/mqtt.* | Home Assistant über MQTT |
src/sync.* | gemeinsamer Bestand mehrerer Geräte |
src/scanner.* | QR-Scanner-Modul |
src/web_data.cpp | Bestand, Datensicherung und Uhrzeit über die REST-API |
src/web.* | WLAN, REST-API, Firmware-Update |
src/mini/ | CellDoc Mini und Nano: Schächte, OLED, eigene Web-API (hal_nano.cpp = Nano-Hardware) |
web/index.html | Weboberfläche inkl. Handbuch |
Jeder Push auf main baut die Firmware über GitHub Actions und aktualisiert die Vorabversion latest. Ein Tag v1.2.3 erzeugt ein normales Release.
Firmware und Weboberfläche sind vollständig, auf echter Hardware aber noch nicht erprobt. Vor dem ersten Test mit wertvollen Akkus bitte mit einer günstigen Zelle und kleinem Strom anfangen und die Werte mit einem Multimeter vergleichen.
Lithium-Akkus können bei Fehlern brennen. Tests mit hohen Strömen und LiPo-Packs nur auf nicht brennbarer Unterlage und nicht unbeaufsichtigt durchführen. Die Schutzfunktionen der Firmware ersetzen keine Aufsicht. Nachbau und Nutzung auf eigene Verantwortung.
MIT © 2026 Mario Fritzer. Der eingebaute QR-Leser ist jsQR (Apache-2.0).
Die Idee geht auf das ESP32 Smart Battery Dashboard von LifeTronix zurück. Hardwarekonzept, Firmware und Oberfläche von CellDoc sind eigenständig neu entwickelt.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2, R5, R8 |
| 4 | MountingHole_3.2mm_M3 | MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | AO3400 | SOT-23 | Q1, Q3, Q4 |
| 2 | 4k7 opt. | R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6, R7 |
| 1 | 100uF 10V | CP_Radial_D6.3mm_P2.50mm | C1 |
| 1 | 18650-Halter | CellDoc:18650_Halter_Kabel | BT1 |
| 1 | 1k | R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3 |
| 1 | 3 A flink 5x20 | CellDoc:Sicherungshalter_Kabel_5x20 | F1 |
| 1 | 3R 50W | CellDoc:Lastwiderstand_50W_Alu | RL |
| 1 | 4k7 | R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4 |
| 1 | AO3401 | SOT-23 | Q2 |
| 1 | DS18B20 Last opt. | TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal | J3 |
| 1 | DS18B20 Zelle | TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal | J2 |
| 1 | ESP32-C3 SuperMini | CellDoc:ESP32-C3_SuperMini | U1 |
| 1 | INA226 (Shunt R010) | CellDoc:INA226_CJMCU-226 | U2 |
| 1 | OLED opt. | PinHeader_1x04_P2.54mm_Vertical | J4 |
| 1 | QR GM861S opt. | PinHeader_1x04_P2.54mm_Vertical | J5 |
| 1 | Summer 5V | Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | TP4056 USB-C | CellDoc:TP4056_USB-C_Protected | U3 |
It measures 95 × 100 mm and has 2 copper layers, 1.6 mm thick.
28 parts, built around the AO3400 and AO3401. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the mariofritzer/CellDoc repository on GitHub, at the commit this page was made from: the board is hardware/nano-pcb/CellDoc-Nano.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

sudomesh/disaster-radio
A (paused) work-in-progress long-range, low-bandwidth wireless disaster recovery mesh network powered by the sun.
Spritetm/picframe_colepd
A WiFi picture frame allowing for remote photo uploads, using an ESP32-C3 and a 5.6" color E-ink display


ADFTech/xtec-uc-ip-main-pcb
KiCad hardware repo for the UC-IP main PCB (currently: IOB board family). This README documents the review-and-release process used to get a schematic/PCB change from an engineer's desk to fabrication.


