Everything you need to build, wire, power, and flash your 8 XIAO ESP32-C3 remotes and ESP32 DevKit V1 Base Station.
The XIAO ESP32-C3 is ultra-compact (21ร17.5mm), has built-in LiPo/Li-Ion USB-C charging circuitry, and enters a ~44ยตA deep sleep state that wakes up instantly when any button is pressed.
| Button / Function | XIAO Pin | ESP32-C3 GPIO | Wiring Instructions |
|---|---|---|---|
| Button A (Red / True) | D0 | GPIO 2 | Switch Pin 1 to D0, Switch Pin 2 to GND (Internal Pullup) |
| Button B (Blue / False) | D1 | GPIO 3 | Switch Pin 1 to D1, Switch Pin 2 to GND (Internal Pullup) |
| Button C (Yellow) | D2 | GPIO 4 | Switch Pin 1 to D2, Switch Pin 2 to GND (Internal Pullup) |
| Button D (Green) | D3 | GPIO 5 | Switch Pin 1 to D3, Switch Pin 2 to GND (Internal Pullup) |
| Status LED / NeoPixel | D4 | GPIO 6 | NeoPixel DIN or standard LED Anode (+) through 220ฮฉ resistor to GND |
| Common Ground | GND | GND | Connect ground return of all 4 button switches here |
| 18650 / LiPo Battery (+) | BAT+ Pad | Bottom Pad | Wire through SPST slide power switch to 3.7V battery (+) |
| 18650 / LiPo Battery (-) | BAT- Pad | Bottom Pad | Wire directly to 3.7V battery (-) |
#define REMOTE_ID 1 to 2, 3, ... 8 for each remote before uploading via Arduino IDE (Board: XIAO_ESP32C3) or PlatformIO.
The Base Station connects via standard USB to your laptop or presentation PC. It listens for sub-millisecond ESP-NOW bursts, resolves fastest buzzes, sends confirmation packets back to remotes, and streams JSON data to the host browser.
| Function | DevKit V1 Pin | Description |
|---|---|---|
| USB Serial | Micro-USB Port | 115200 baud WebSerial stream to Chrome/Edge |
| Activity Blue LED | GPIO 2 | Onboard LED, blinks on packet reception |
| Piezo Buzzer (Optional) | GPIO 25 | Positive lead to GPIO 25, negative to GND |
| Manual Reset Button | GPIO 0 (BOOT) | Press onboard boot button to open/lock buzzers without laptop |