ESP32 LED Board Design


We’ll use a locking ribbon-cable connector for the separate six-button panel, with input protection and firmware debouncing. Should the LEDs and controller be able to operate while the battery is charging, or should charging require the device to be off?
Yes, require the device to be off while charging.
That simplifies charging and improves safety: USB-C insertion will disable the LED power stage while charging the 2S pack. Should I design both the main controller board and the separate six-button PCB, or only the main board with a ribbon-cable connector?
Yes, design both the main controller board and the separate six-button PCB.
I’ll capture the agreed requirements, then design and verify the complete two-board schematic: the ESP32-C3 power/controller board and the ribbon-connected six-button board.
Created 4 project docs

Block Diagram

View Document

Block Diagram System Architecture Assemblies
  1. Main controller/power PCB — USB-C PD input, 2S charger/protection/balancing, 5 V LED buck, 3.3 V MCU buck, ESP32-C3, level shifting, LED output, pack connector, debug/programming, and button-cable connector.
  2. Separate six-button PCB — six momentary switches and matching polarized locking ribbon connector. Allocation: six signals, two grounds, and two reserved/ground positions for return-path robustness.
Functional-Block Sourcing Plan
  • USB-C PD sink: reference search required; import exact/close standalone reference if available.
  • Balanced 2S charger: reference search required; import exact/close standalone reference if available.
  • 2S protection/balancing: reference search required; import exact/close standalone...

Project Specification

View Document

Project Specification Project Overview
Status: Draft — schematic phase. A two-PCB BLE LED controller for installation in a non-conductive tube.
Intended Use
Portable battery-powered controller for 100 Adafruit ADA2328 5 V addressable LEDs, operated by six wired buttons and BLE.
What the Device Should Do
  • Drive 100 addressable LEDs while enforcing a 20 W electrical LED-output cap.
  • Provide BLE control with Wi-Fi disabled in firmware.
  • Charge a protected/balanced 2S 18650 pack from a USB-C PD supply.
  • Positively disable LED power and normal operation whenever USB-C is inserted/charging.
  • Read six independent momentary buttons on a separate PCB.
Main Features
ESP32-C3 module; 2S pack protection/balancing; 9 V PD sink; balanced 2S charger; 5 V/4 A LED rail; efficient ...

Firmware Getting Started

View Document

Firmware Getting Started Toolchain
PlatformIO + Arduino-ESP32. platformio.ini:
Final MCU Pin Mapping Compilable Starter (src/main.cpp)
Depending on Arduino-ESP32 release, include `` and omit btStop() if it conflicts with NimBLE startup. The hardware shutdown/charge inhibit must not depend on this firmware.
Startup Sequence
  1. Confirm hardware charge inhibit is inactive.
  2. Initialize serial diagnostics.
  3. Keep Wi-Fi disabled.
  4. Configure buttons and ADC.
  5. Initialize FastLED power limiter before enabling patterns.
  6. Start BLE GATT service and advertising.

Board Bring-Up Plan

View Document

Board Bring-Up Plan Preconditions
Do not install cells until charger, protection, and regulator support circuits have been checked against final datasheets and ERC is clean. Use a current-limited bench supply and thermal camera.
Main Board
  1. Visual inspection: polarity, exposed pads, solder bridges, antenna keepout, connector pin-1 orientation.
  2. Resistance checks: GND-to-pack, GND-to-5 V, and GND-to-3.3 V must not be shorted.
  3. Power protected pack input from 6.0 V at 100 mA limit with LED load disconnected. Pass: no unexpected heating/current-limit entry.
  4. Verify 3.3 V rail within ±3%; verify EN reset behavior and programming access.
  5. Verify ESP32 boot log; flash starter firmware; confirm BLE advertising with Wi-Fi disabled.
The specification and six-button subsystem are complete. I found the first pass left the high-power charging and protection circuitry unfinished, so I’m completing that block now rather than treating an unsafe partial schematic as done.

ESP32-C3 LED Tube Controller

ESP32-C3 LED Tube Controller thumbnail