

Lights
ESP32 firmware project built with PlatformIO + ESP-IDF.
- Size
- 125 × 68 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 27
- Nets
- 56
- Pads
- 142
- Tracks, vias
- 203, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 22 Feb 2026
- Updated
- 15 Oct 2026
Overview
Lights is an open-source printed circuit board by aarusso-nyx, from the aarusso-nyx/Luce repository on GitHub. It is a 2-layer board of 125 × 68 mm with 27 parts on 56 nets, routed with 203 tracks and 0 vias.
It is built around the AM2302. Its parts include 7 resistors, 5 capacitors, 5 connectors, 4 ICs and 3 diodes. It belongs with the ESP32 boards of this library.
Main components
1README
README.mdLuce Firmware
ESP32 firmware project built with PlatformIO + ESP-IDF.
scripts/luce.shrefreshes PlatformIO discovery, including sourcing your~/.zshrcenvironment when required.
Build/Flash/Monitor
Use the repository scripts for deterministic local workflows:
source ~/.zshrc
./scripts/luce.sh build # build all environments
./scripts/luce.sh upload --env default # flash a specific environment
./scripts/luce.sh monitor --env default # serial monitor with timestamps
./scripts/luce.sh test --layers all --env net1 --host https://<device-ip> --http-token <token> --tcp-token <cli-token>You can also call PlatformIO directly when preferred. Use pio when available; use python3 -m platformio only when the module is installed in the active Python.
For Python contract-test dependencies, use a local virtual environment:
python3 -m venv .venv
.venv/bin/python -m pip install -r tests/requirements.txtSerial Ports and Runtime Iteration
Operational serial port policy for Luce CORE/NET workflows:
- Flash/upload port:
/dev/cu.usbserial-0001 - Mirror monitor/console port:
/dev/cu.usbserial-40110
Use the following exact commands unless the port assignment is changed intentionally:
pio run -e default -t upload --upload-port /dev/cu.usbserial-0001
pio device monitor -p /dev/cu.usbserial-40110
pio run -e net0 -t upload --upload-port /dev/cu.usbserial-0001Autonomous firmware iteration:
source ~/.zshrc
./scripts/luce.sh build --env <env>
./scripts/luce.sh upload --env <env> --upload-port /dev/cu.usbserial-0001
./scripts/luce.sh monitor --env <env> --monitor-port /dev/cu.usbserial-40110For net0, run CLI commands (help, status, nvs_dump, i2c_scan, mcp_read, relay_set, relay_mask, buttons, lcd_print, reboot) and collect the first 80 monitor lines after reset.
Monitor fallback (if termios fails on this host):
python3 - <<'PY'
import sys, serial
with serial.Serial('/dev/cu.usbserial-40110', 115200, timeout=0.2) as ser:
for _ in range(80):
line = ser.readline()
if line:
sys.stdout.write(line.decode('utf-8', errors='replace'))
PYFeature flags
LUCE_NET_* selects network feature groups in build_flags.
default— noLUCE_NET_*flags (baseline): NVS, I2C, LCD, CLInet0—-DLUCE_NET_CORE=1: baseline + Wi-Fi + NTP + mDNS + TCP CLInet1—-DLUCE_NET_CORE=1 -DLUCE_NET_MQTT=1 -DLUCE_NET_HTTP=1 -DLUCE_NET_OTA=1: net0 + MQTT + HTTP + OTA
In scripts/luce.sh build, LUCE_ENV can optionally build a single env. If unset, all declared envs are built.
Default PlatformIO environment is default.
Canonical SDK config is a single file: sdkconfig (shared across all envs).
Ports used by bootstrap scripts:
Upload: /dev/cu.usbserial-0001
Monitor: /dev/cu.usbserial-40110Documentation Locations
- Product/architecture/operations docs:
docs/user/ - Governance evidence:
docs/governance/audit/,docs/governance/health/,docs/governance/compliance/ - Scratch investigation/diagnostics/plans:
docs/work/inv/,docs/work/diag/,docs/work/plan/
Parts
27| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C2, C3, C5 |
| 3 | 470 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R5, R6, R7 |
| 3 | LED | LED_THT:LED_D3.0mm | D1, D2, D3 |
| 3 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3 |
| 2 | 100k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R1, R2 |
| 2 | 100µF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1, C4 |
| 1 | 47k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R3 |
| 1 | AM2302 | Sensor:ASAIR_AM2302_P2.54mm_Vertical | U1 |
| 1 | BSS138_4ch | BSS138:BSS138 | U3 |
| 1 | BUTTONS | Connector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_Vertical | J2 |
| 1 | CJMCU-2317 | MCP23017:MCP23017 | U2 |
| 1 | ESP32-DEVKIT-V1 | ESP32-DEVKIT-V1:MODULE_ESP32_DEVKIT_V1 | U4 |
| 1 | I2C | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J4 |
| 1 | Jack-DC | Connector_BarrelJack:BarrelJack_Horizontal | J5 |
| 1 | LDR07 | OptoDevice:R_LDR_5.1x4.3mm_P3.4mm_Vertical | R4 |
| 1 | Relays | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J1 |
| 1 | UART | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3 |
Questions
How big is the Lights PCB?
It measures 125 × 68 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Lights use?
27 parts, built around the AM2302. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Lights KiCad files?
From the aarusso-nyx/Luce repository on GitHub, at the commit this page was made from: the board is data/pcb/Lights.kicad_pcb and its schematic data/pcb/Lights.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Lights design in my own project?
Its repository states no licence, so its author keeps all rights: ask aarusso-nyx before reusing the design.
Similar boards
- 4 layers101.6 × 141.7 mm

- 2 layers46.5 × 38.1 mm

Mainboard smd
OpenHumidistat/hardware
KiCAD design files for PCBs for the OpenHumidistat humidity controller
30 parts4 - 2 layers

Mars rover navigation system
tjiuce/rover
Rover Navigation Optimization System (R-NOS): An ESP32-powered autonomous robotic prototype designed for real-time environmental monitoring.
4 parts4 - 2 layers

Weather balloon V1.0
Launchpad-Incubator/weather-balloon
The research repository for Launchpad's flat-packed weather balloons.
3 parts2 - 2 layers

Priject 2 ESP32 build
Aanuoluwap/555blinker
This repository contains electronics design projects created using KiCad.
12 parts1MIT - 2 layers100 × 100 mm

GasGuard
pasinduh2002/GasGuard
IoT and ML-based LPG monitoring system with ESP32 leak detection, automatic valve shutoff, real-time mobile alerts and refill prediction. Built with React Native, Firebase and Python.
14 parts1MIT - 2 layers94 × 68.5 mm

- 2 layers
