HE BOUGHT 768 CELLS OUT OF RETIRED ELECTRIC BUSES FOR 52 CENTS EACH AND BUILT A MACHINE TO JUDGE THEM
768 thirteen-year-old bus cells for 52 cents each instead of 40,000 dollars — if you can tell the good ones from the junk.
EnergyWorkshop
Built withESP32
- difficulty
- ●●●●○
- time
- a weekend-plus
- license
- MIT
- repo
- repo ACTIVE68 stars
●●●●○ · a weekend-plus · MIT · 68 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
This is not a beginner battery project. It is a multi-board custom 6-layer PCB build with ESP32-S2 firmware and a separate hub server and dashboard. The boards work - over 500 cells had been through them when the video was made - but the context is someone who already bought 768 retired bus cells and has to sort them. If you are starting from zero, you do not need five boards; you need one,, and you need to accept that every batch of ten takes at least two hours, so sorting hundreds of cells takes weeks. The internal resistance measurement is what separates this from a basic capacity tester, but it is an optional add-on: the creator modified a YR1035 meter with a USB-to-UART chip and wrote a Python bridge into the hub. The real trap is not the build - it is buying retired cells without knowing what you are doing. A thirteen-year-old A123 cell that sat in a bus is not the same as a shelf-worn consumer cell; some will be perfect, some will be junk, and the only way to know is to test every single one. The tester does that job well, but it does not make bad cells good. If you already have a pile of unknown cells and need to sort them methodically, this is exactly the tool. If you are hoping to build a cheap battery pack by buying retired cells, understand that the sorting is the hard part, not the bargain.
IN THE REPO
GOOD TO KNOW
- —MIT licence, no restrictions on commercial use.
- —Gerbers for a 6-layer PCB and the EasyEDA schematic/PCB source are in the repository; the BOM folder is still a placeholder.
- —Firmware for the ESP32-S2 boards and the Goblin HQ software (a Node.js hub with SQLite history plus a Next.js web dashboard) are both present.
- —No enclosure files — the boards sit on a bench or mount however you want.
- —The optional YR1035 resistance meter connects to a computer over USB after the creator's modification (he added a CP2102 USB-to-UART chip inside it), and a Python bridge sends its readings to the hub; another meter means rewriting that bridge.
- —The published board already includes fixes over the one in the video: corrected MOSFET orientation, removed reverse-protection FETs, voltage sense before the fuse, moved fan capacitors.
Parts to buy
4 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
Videos
Cell Goblin testing bus cells (build by Within Tolerance)
The creator's own build and overview video: the Cell Goblin boards, Goblin HQ software and the 768-cell sorting run.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Read the README and the schematic (Firmware is in src/, the Goblin HQ hub and dashboard in hub/ and ui/, and the PCB as Gerbers plus EasyEDA source in hardware/. Open the EasyEDA schematic to understand the charge/discharge loop and the INA current sensing.)
- 2.Order one PCB first, not five(Gerbers are in the repo. Build and test one board with the firmware and server before committing to the full set.)
- 3.Set up Goblin HQ (Node.js hub + Next.js dashboard)(The server keeps all boards in sync and logs every curve to a database. It is required, not optional.)
- 4.Wire in the YR1035 meter over UART(Optional internal-resistance step. The Python bridge in YR1035_reader expects this specific meter (the creator added a USB-to-UART chip inside his); another meter means rewriting the bridge.)
- 5.Run the full routine on a known-good cell(The board runs charge, discharge and a final top-up; measure internal resistance separately. Verify the curve in the dashboard history before testing unknown cells.)
Resources
Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.
KNOWN ISSUES
- The project is built around the creator's A123 LiFePO4 cells from retired buses. The firmware also has an 18650 NMC profile, but any other chemistry is not covered, and the board's cell-input pads were laid out for his cells, so check that your holder fits.
- The YR1035 resistance meter is optional and not a calibrated lab instrument. The creator opened his, added a CP2102 USB-to-UART chip to an empty footprint and wrote a small Python bridge; a different meter means rewriting that bridge.
- Two hours per batch of ten cells is the minimum the creator quotes; with hundreds of cells and manual swapping between batches, sorting a big pile takes weeks.
- The board in the video had inverted MOSFETs and other faults; order the current Gerbers from the repo, not a copy of what you see on screen.
- Retired cells are a gamble. Some will be fine, some will be junk, and the tester does not make bad cells good — it just tells you which ones to throw away. If you are hoping for 768 perfect cells at 52 cents each, the reality is you will reject a percentage and the cost per good cell goes up.
- Heat sinks and fans are required. The discharge MOSFETs get hot, and the build includes temperature monitoring with Alexa warnings, but you still have to mount the heat sinks properly and ensure airflow.
Can I use this for 18650 cells or other formats?
Partly. The firmware already has a second chemistry profile for 18650 NMC cells next to the default LiFePO4 one, so the charge and cutoff voltages are covered. The board was laid out for the creator's A123 cells, though, and the README lists larger cell-input pads for broader cell-holder compatibility as a planned improvement, so check that your holder fits.
Do I need five boards, or can I start with one?
Start with one. The server supports multiple boards, but building all five at once before you have tested the firmware and the routine is a waste of money.
What does the YR1035 resistance meter actually measure?
It injects a known current and measures the voltage drop to calculate internal resistance. For an A123 cell rated around 70 amps continuous when new, resistance tells you whether the cell can still deliver that current or whether it has degraded.
How long does it actually take to test 768 cells?
At least two hours per batch, and the full five-board setup holds ten cells per batch. 768 cells is therefore 77 batches, roughly 154 hours of machine time at best - weeks of evenings, because you have to swap cells between batches. Internal resistance is measured separately with the meter.
What is the reject rate on retired bus cells?
The project does not give a percentage, and it will vary wildly depending on how the cells were stored and how hard the bus worked them. Some batches will be mostly good, some will be mostly junk. The tester tells you which is which, but it does not change the odds.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
Over 500 cells tested so far, two hours per batch of ten, and every charge and discharge curve stored in a database. If you were sorting a pile of retired cells, what would you change about the test routine?
Within Tolerance
Built Cell Goblin to sort 768 retired A123 cells from electric buses for a go-kart battery project. The tester has processed over 500 cells so far, with full charge/discharge curves logged to a database and internal resistance measured separately.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM2mo agoedited
Practical notes from our verification: the repository includes the ESP32-S2 firmware, the Goblin HQ hub (Node.js with a SQLite history), a Next.js dashboard and the PCB design as a 6-layer Gerber zip plus EasyEDA source. There are no KiCad files, and the BOM folder is still a placeholder, so plan to read parts off the EasyEDA design. The YR1035 internal resistance meter is an optional add-on: the builder found its debug UART and wrote a small Python bridge that streams readings into the hub, so a different meter means rewriting that bridge. In the build video the first boards failed because of how the second I2C bus was initialised, a software problem rather than hardware; the hardware README separately lists the board fixes made after the video. Each batch takes at least two hours for ten cells. The 52 cents per cell is what the builder paid for retired bus modules and depends entirely on what surplus you can find; expect rejects, so the cost per good cell goes up. Lithium cells can catch fire, and the README is explicit that you build at your own risk. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.