esp32

The plan: 22 battery-powered lights that change color together

Part 1 of building synced LED centerpieces: the constraints, the parts, and how the shopping list went from $428 to $285 one decision at a time.

Some links in this post are Amazon affiliate links. As an Amazon Associate I earn from qualifying purchases, at no extra cost to you.

I needed 22 small light pieces for a big event: one for each of 20 tables, plus two spares. Each one sits under a 4-inch glass cube. Every one glows a single solid color, and every two minutes all of them fade to the next color at the same moment.

This is part 1 of the build log. Before any soldering or printing, here’s how the plan and the parts list came together, including the dead ends. I worked through it with an AI assistant (Claude), so you’ll see where it helped and where I made the call.

The constraints

Writing the rules down first made every later choice easier:

  • No wires between tables. The tables get moved during the event, so each unit has to be fully self-contained.
  • No Wi-Fi network. I don’t control the venue’s network, and I don’t want the show to depend on it.
  • All evening on a battery: 9–10 hours with margin, recharged between uses.
  • Small: everything fits in a base under a 4-inch glass cube.
  • Cheap and buildable: 22 copies means every dollar and every solder joint gets multiplied by 22.
One emitter board broadcasts a show clock over ESP-NOW every 5 seconds; 22 battery-powered table units listen and change color together.Emitterkeeps the show clockESP-NOW · every 5 s22 table units · same color, same moment

Decision 1: the brain

My first instinct was Adafruit parts. They’re well documented, but at 22 units the price adds up fast, so I asked for generic equivalents on Amazon instead.

That led to the RP2040-Zero, a tiny, cheap board. Then I asked the question that changed the plan: will these let all 22 units stay in sync? The honest answer was no. The RP2040 has no radio, so every unit would drift on its own clock.

So I switched to the ESP32-C3 Super Mini. It’s about the same size and price, and it has ESP-NOW built in. ESP-NOW is Espressif’s peer-to-peer radio protocol: boards talk to each other directly, with no router and no network. One board becomes the emitter and broadcasts a shared clock. The other 22 listen, and each one works out its color from that clock. I bought 24 boards: 22 table units, 1 emitter and 1 spare. Part 5 covers the sync in detail.

Decision 2: the light

I started with a 16-LED WS2812B ring. These are addressable LEDs that need just one data wire. Then I second-guessed it and compared:

  • Cut LED strip was the cheapest, at about $28 for everything, but meant about 400 solder joints.
  • Pre-made 4×4 boards were cheaper than rings, but only 3.5 cm across.
  • 8×8 panels were bigger, but more expensive, and the extra LEDs draw power even when off.

The answer that settled it was a diffuser: a thin, white 3D-printed panel a couple of centimeters above the LEDs turns the dots into one soft glow. Once the light is diffused, the board’s exact size matters much less. That gets its own post (part 2).

I briefly went with the 4×4 boards to save money. Then shipping dates got involved, and I ended up back on rings. More on that below.

Decision 3: power

The first plan used EEMB 2000 mAh LiPo batteries with JST-PH 2.0 plugs. EEMB is a well-known brand, but at about $8.30 a cell it was the biggest line on the list.

Then I remembered I already owned a charging board and a bag of pigtails for the smaller JST 1.25 connectors. Switching connector types let me use what I had, and generic 2000 mAh cells with that plug cost noticeably less. That one change saved about $86.

The AI flagged two catches that I’m glad it did:

  • Plug-compatible doesn’t mean polarity-compatible. Generic JST cells sometimes have red and black swapped. Every battery gets a quick multimeter check before it’s soldered to anything.
  • “Micro JST 1.25” and “JST-PH 2.0” look similar but don’t mate. Read the listing carefully.

I ended up with Nzzz 2100 mAh cells with JST 1.25 plugs. They have built-in protection boards, were cheaper per pack than the first generic option, and arrived in two days instead of a week. They only have a handful of reviews, so the full-evening runtime test (part 6) matters even more.

Decision 4: the switch

Each unit needs an obvious on/off that a non-technical helper can flip. A KCD11 mini rocker (10 × 15 mm) snaps into a cutout in the printed base and costs about 60 cents. Two 10-packs had nearly the same price. I picked the one with 150+ reviews over the one with a single review, for 50 cents more.

Decision 5: price vs. shipping

This is where the AI was most useful as a shopper. It checked live prices, delivery dates and review counts, then put the trade-offs side by side. The cost moved around a lot:

Parts cost for 22 units at each decision, from $427.57 down to $285.37$0$100$200$300$400First list: rings + EEMB batteries: $427.57First list: rings + EEMB batteries$428Swap rings for 4×4 LED boards: $385.28Swap rings for 4×4 LED boards$385JST 1.25 batteries (reuse my charger): $300.98JST 1.25 batteries (reuse my charger)$301Faster-shipping batteries: $289.16Faster-shipping batteries$289Back to rings for 2-day shipping: $329.16Back to rings for 2-day shipping$329Cheaper ring 6-packs (ordered): $285.37Cheaper ring 6-packs (ordered)$285
Parts cost for all 22 units as the decisions piled up. Tax, solder and wire not included.

The bump in the middle was my call. The 4×4 boards would have arrived in a week. A 5-pack of rings arrived in two days but cost $40 more. I wanted to start the prototype that weekend, so I took the rings. Then I found a 6-pack of the same rings for about $2.13 each, which brought the total below the 4×4 plan and kept the two-day shipping.

The final list

Part Pack Qty Cost
16-LED WS2812B ring 6 4 $51.16
ESP32-C3 Super Mini 3 8 $103.92
3.7 V 2100 mAh LiPo, JST 1.25 4 6 $112.32
KCD11 mini rocker switch 10 3 $17.97
Total for 22 units $285.37 (≈ $12.97 each)

Add 63/37 rosin-core solder, 26 AWG silicone wire, a cheap rechargeable multimeter, and white PLA for the printed bases.

What I’d tell myself at the start

  • Write the constraints down first. “Must sync without Wi-Fi” eliminated half the boards on its own.
  • Ask the question behind the question. “Is this board cheaper?” was the wrong question. “Can these boards stay in sync?” was the right one.
  • Use what you already own. Matching the battery plug to my existing charger saved more money than any other decision.
  • Shipping time is a real cost. Two days of waiting was worth $40 to me, until I found a way to avoid paying it.

Next up, part 2: dots vs. glow. The LED options in more detail, and how a 3D-printed diffuser turns 16 points of light into one soft color.

Some content on this site was created with the assistance of AI. All content is instigated, initiated, and directed by humans, and reviewed before posting.