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.

by Within Tolerance

FULL CAD BOM FIRMWARE DOCS

EnergyWorkshop

difficulty
●●●●
time
a weekend-plus
license
MIT
repo
repo ACTIVE42 stars

WHAT YOU’LL NEED

  • Electronic partsfull list with part numbers in the repo BOM
  • Dev board / microcontrollerruns the project firmware

Partner

A portfolio for your buildsShow your work on a clean portfolio site — makers get up to 55% off annual plans.Try Pixpa
1

COMPAREE VERDICT

This is not a beginner battery project. It is a multi-board custom PCB build with live firmware integration, a separate server, and a UART meter you wire in yourself. The boards work — over 500 cells have been through them — 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 understand that testing a used lithium cell is slower and less predictable than the two-hour batch time suggests, because some cells fail partway through and some take longer to charge than others. The internal resistance measurement is what separates this from a basic capacity tester, but it adds a separate eBay meter and a UART integration that you have to get right. 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.

NOT IN THE REPO

  • MIT licence, no restrictions on commercial use.
  • Full schematic, KiCad PCB files, and BOM are in the repository.
  • Firmware for the ESP32-S2 and the Python server (Goblin HQ) both present.
  • No enclosure files — the boards sit on a bench or mount however you want.
  • The YR1035 resistance meter is a specific eBay model wired over UART; alternatives exist but you will rewrite the parser.
  • First version failed on an I2C initialisation bug, not the hardware — the commit history shows the fix.

Can I build this?

Printnothing required
Buycustom PCB (Gerbers in repo), ESP32-S2 module, INA219 current sensors, MOSFETs, heat sinks, YR1035 resistance meter, TP4056 charge modules, fans, passives per BOM
Toolssoldering iron, bench PSU or 12V adapter, UART cable, multimeter, a computer to run the Python server
Skillsintermediate PCB assembly, comfortable with firmware flashing and Python server setup, understanding of lithium cell safety and charge curves
Timea weekend to build one board and test the stack; multiply by five if you want the full ten-bay setup
Cost$$ — dominated by the number of boards you build and the YR1035 meters (one per tester if you want simultaneous resistance checks)
SafetyYou are handling bare lithium cells that can dump over 100 amps into a short. The cells must not be shorted, punctured, or over-discharged. The tester manages charge and discharge, but you are responsible for not bridging terminals during setup. Heat sinks are required and the build includes temperature monitoring with Alexa warnings, but a fault during test is still a thermal event.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

A desktop 3D printer that prints in full colorPartner · Kickstarter
A desktop 3D printer that prints in full color

HeyGears G1: 10M+ colors and transparent parts in one print, plus UV printing on flat objects. Figures, parts and labels — no painting.

See how it prints

Videos

Cell Goblin testing bus cells (build by Within Tolerance)

No official video in the payload; the reel footage is from Within Tolerance but no YouTube channel or walkthrough was provided.

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 1.Read the README and the schematic (The BOM, KiCad files, and firmware are all in the root. Start with the schematic to understand the charge/discharge loop and the INA219 current sensing.)
  2. 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. 3.Set up the Python server (Goblin HQ)(The server keeps all boards in sync and logs every curve to a database. It is required, not optional.)
  4. 4.Wire in the YR1035 meter over UART(This is the internal resistance measurement. The firmware expects a specific eBay model; if you substitute another meter you will rewrite the parser.)
  5. 5.Run the full routine on a known-good cell(Charge, discharge, top-up, and resistance check. Verify the curve in the database 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.

Ultra-thin power bank that fits anywherePartner · Kickstarter
Ultra-thin power bank that fits anywhere

CORE POWER BANK S: 0.2" thin, 2.8 oz, 5000 mAh with 22.5W fast charging. Semi-solid battery, carbon fiber, IPX7 waterproof.

Learn more

KNOWN ISSUES

  • The project is built around A123 26650 LiFePO4 cells from retired buses. If you are testing a different cell chemistry or format, the charge/discharge parameters and voltage limits will be wrong.
  • The YR1035 resistance meter is a specific eBay model. It is not a calibrated lab instrument, and the UART protocol is not standardised — substituting a different meter means rewriting the firmware integration.
  • Two hours per batch is the best case for ten healthy cells. A cell that fails partway through or charges slowly will stall the whole bay unless you manually intervene.
  • The first version failed on an I2C bus initialisation bug. The fix is in the commit history, but it is a reminder that firmware integration is where this build gets hard, not the PCB.
  • 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?

The PCB is built for the holder and current levels of A123 26650 cells. You can adapt it, but you will need to change the charge/discharge parameters, the voltage limits, and possibly the current sensing range on the INA219. This is not a drop-in swap.

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?

Two hours per batch of ten is the best case. If you run five boards simultaneously that is 50 cells every two hours, so 768 cells is about 31 hours of machine time — spread over multiple days because you have to swap cells between batches.

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, two hours per batch of ten, and the whole routine logged to a database with full charge and discharge curves. If you were sorting a pile of retired cells, what would you change about the test routine?

CompareeTEAM19d agoedited

Practical notes from our verification: the repository includes the KiCad PCB files, firmware for the ESP32-S2, and the Python server (Goblin HQ) that keeps multiple boards in sync. The YR1035 resistance meter is a specific eBay model wired over UART — there is no calibration standard and the UART parser is custom to that meter, so swapping it means rewriting the integration. The first version failed on a software bug in the I2C bus initialisation, not the hardware, and the fix is in the commit history. No official video or walkthrough was provided; the reel footage is from the builder but there is no YouTube channel linked. The two-hour batch time is best case for ten healthy cells — a cell that fails partway through or charges slowly will stall the bay unless you intervene. The 52-cent-per-cell price is the builder's own purchase figure for retired bus modules and depends entirely on what surplus is available; expect a reject rate, and the cost per good cell goes up accordingly.

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.

GitHub

Star the project on GitHub

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.