
Modulo2-pa27
nodep/myAmp
Battery powered, solid state, guitar amplifier schematic and PCB

Ceiling Puck v4 - smart ceiling sensor/actuator
Ceilingpuck v3 final v0-2 is an open-source printed circuit board by nate922, from the nate922/ceilingpuck_v4 repository on GitHub. It is a 4-layer board with 115 parts on 98 nets, routed with 1,276 tracks and 94 vias.
It is built around the 74AHCT125D, PMS5003 and AP63200WU, with the OPA2134UA, TPS54560DDA and AHT20 among its other parts. Its parts include 28 capacitors, 28 resistors, 28 connectors, 7 ICs and 6 diodes.
160 mm circular ceiling-mount carrier board for an ESP32-S3-DevKitC-1, providing voice, audio, lighting, sensing, and field outputs in a single ESPHome device.
Status: active. Working board is
hardware/ceilingpuck_v4_working.kicad_pcb. v4 is the cleanup/extension of v3, adding a PCM1808 ADC input.
2026.4.5| Path | Contents |
|---|---|
hardware/ | KiCad 10 project, footprints, symbols, fab outputs, tools |
hardware/ceilingpuck_v4_working.* | Active working PCB the user is editing |
hardware/ceilingpuck_v4.* | Canonical v4 source (synced from working) |
hardware/footprints/ceilingpuck.pretty/ | Project-local footprint library |
hardware/tools/ | Strip/route/backup helpers, Freerouting jar, symbol cache |
hardware/logs_reports/ | DRC and ERC JSON reports |
firmware/ | ESPHome configuration |
firmware/ceilingpuck.yaml | Top-level ESPHome device config |
firmware/packages/ | Modular ESPHome packages (core, sensors, audio, voice, lights, outputs, ethernet) |
tests/test_properties.py | Pinmap and property regression tests |
docs/ | Design docs, pinout, jumpers, mains wiring, enclosure |
components/ | Component reference photos and datasheets |
backups/ | Timestamped file backups (auto-created by tools) |
memory.md | Active session handoff: working set, GPIO map, reroute workflow |
rerouting.md | Reproducible Freerouting strip/patch/route runbook |
ProjectLog.md | Append-only change log per AGENTS.md policy |
FIX-LIST.md | Open hardware fix tracker (some entries still v3-era) |
Start at docs/DESIGN.md and docs/PINOUT.md.
| Doc | Use for |
|---|---|
docs/DESIGN.md | v4 design scope, side allocation, KiCad tooling notes |
docs/PINOUT.md | Canonical GPIO map (PCM1808, Ethernet, sensors, lights) |
docs/option-matrix.md | Populate-time options per subsystem |
docs/incompatible-combinations.md | Combinations that conflict at populate time |
docs/JUMPERS.md | Solder jumpers still active in v4 |
docs/mains-wiring.md | Optional mains relay wiring and isolation |
docs/enclosure-openings.md | Enclosure aperture map per sensor |
hardware/ZONING.md | Radial regions and copper zoning (parts are v3-era) |
v4-detailed-plan.md | Per-agent task plan, model assignments, launch order |
v4-dependancy.md | Subsystem prerequisite map |
kicad/kicad:10.0) for headless DRC/ERC, DSN export, SES import~/Desktop/kicad/ for interactive editshardware/tools/freerouting.jar) inside eclipse-temurin:25-jrepython3 hardware/tools/backup_project_file.py <files...>Backups land in backups/ with vYYYYMMDD-HHMM timestamps. KiCad files (*.kicad_sch, *.kicad_pcb, *.kicad_pro), markdown docs, YAML, and writer scripts under tools/ are protected.
Full runbook: rerouting.md. Short version:
hardware/ceilingpuck_v4_working.kicad_pcb.strip_all_routing_v4.py for the working board).--gui.enabled=false -da -dct 0 -mp 10 -mt 3.ZONE_FILLER.hardware/logs_reports/.After every KiCad edit, before considering the task done:
# Paren balance
python3 -c "from pathlib import Path; t=Path('hardware/ceilingpuck_v4_working.kicad_pcb').read_text(); d=sum(1 if c=='(' else -1 if c==')' else 0 for c in t); assert d==0; print('OK')"
# DRC
docker run --rm --platform linux/amd64 \
-v "/home/mike/workspace/ceilingpuck_v4:/workspace" \
kicad/kicad:10.0 \
bash -c "kicad-cli pcb drc --format json \
-o /workspace/hardware/logs_reports/drc_<label>.json \
/workspace/hardware/ceilingpuck_v4_working.kicad_pcb"Update the schematic version stamp in the top-left when changing *.kicad_sch:
(at 25.4 12.7 0) → SCH YYYYMMDD-HHMM <prefix> (replace, do not stack).
ESPHome version pinned to 2026.4.5 (ghcr.io/esphome/esphome:2026.4.5). Do not pull :latest or :stable.
Top-level config: firmware/ceilingpuck.yaml. It includes packages from firmware/packages/:
| Package | Block |
|---|---|
core.yaml | ESP32-S3 base, WiFi/API |
core_ethernet.yaml | W5500 SPI Ethernet (CS=GPIO47, MISO=GPIO11, MOSI=GPIO42, SCLK=GPIO40, INT=GPIO3) |
sensors.yaml | LD2410, LD2450, AM312 PIR, PMS5003, I²C environmental sensors |
audio.yaml | I²S DAC out, AMP_MUTE, AMP_SSR |
voice.yaml | I²S mic in, PCM1808 ADC, MCLK |
lights.yaml | SK6812 channels, 24 V LED outputs, status pixel |
outputs.yaml | Remote relay, amp SSR |
Pre-OTA gate (per AGENTS.md): turn the device backlight off and set input_boolean.ota_in_progress = on in Home Assistant first.
docker run --rm \
-v "$PWD/firmware:/config" \
ghcr.io/esphome/esphome:2026.4.5 \
run /config/ceilingpuck.yaml --device <ip-or-hostname> 2>&1 | tee /tmp/esphome-ceilingpuck.logAfter OTA: clear input_boolean.ota_in_progress, review logs, disconnect after 15 minutes idle.
python3 -m pytest tests/test_properties.pyValidates pin assignments against the frozen v4 GPIO map in memory.md.
Source: memory.md. Canonical doc: docs/PINOUT.md.
| GPIO | Signal | Block |
|---|---|---|
| 0 | AMP_MUTE | outputs |
| 1 | PIR_IN (AM312) | sensors |
| 2 | SK6812_D1 | lights |
| 3 | ETH_INT | core_ethernet |
| 4 / 5 | LD2410 TX / RX | sensors |
| 6 / 7 | LD2450 TX / RX | sensors |
| 8 | I2S_SDIN2 (PCM1808 OUT) | voice |
| 11 | ETH_MISO | core_ethernet |
| 12 | I2S_MCLK | PCM1808 |
| 13 / 14 | SDA_SENS / SCL_SENS | sensors |
| 15 / 16 | I2S_BCLK / I2S_WS | audio |
| 17 / 18 | I2S_SDOUT / I2S_SDIN | audio / voice |
| 19 / 20 | reserved native USB D− / D+ | — |
| 38 | REMOTE_RLY | outputs |
| 39 | AMP_SSR | outputs |
| 40 | ETH_SCLK | core_ethernet |
| 41 / 44 | LED24_1 / LED24_2 | lights |
| 42 | ETH_MOSI | core_ethernet |
| 43 | SK6812_D2 | lights |
| 45 / 46 | PMS_TX / PMS_RX | sensors |
| 47 | ETH_CS | core_ethernet |
| 48 | STATUS_PIX | lights |
AGENTS.md (root). Smaller, evidence-driven changes; explicit backups; project log entries for approved changes./tmp/*.log via tee.backups/<rel-path>.bak.YYYYMMDD-HHMM. Cite the version as vYYYYMMDD-HHMM in chat.(Add your chosen license here.)
| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 100nF | C_0805_2012Metric | C2, C3, C4, C5, C6, C11, C13, C15, C20, C22, C31, C200, C300, C400, C401 |
| 7 | 100k | R_0805_2012Metric | R30, R33, R202, R203, R306, R309, R314 |
| 7 | 10k | R_0805_2012Metric | R1, R20, R21, R32, R311, R400, R401 |
| 7 | 10uF | C_0805_2012Metric | C1, C16, C23, C30, C201, C204, C402 |
| 4 | MTG_M3_AMP | AMP_M3_Standoff | AH1, AH2, AH3, AH4 |
| 4 | MTG_M4_GND | MountingHole_4.3mm_M4_Pad | H1, H2, H3, H4 |
| 3 | 100 | R_0805_2012Metric | R305, R308, R313 |
| 3 | NMOS | SOT-23 | Q10, Q11, Q12 |
| 2 | 1.1A | R_0805_2012Metric | R301, R304 |
| 2 | 1uF | C_0805_2012Metric | C202, C203 |
| 2 | 22uF | C_0805_2012Metric | C14, C21 |
| 2 | 24V_TVS | D_SMB | D11, D13 |
| 2 | 330 | R_0805_2012Metric | R300, R302 |
| 2 | 4.7k | R_0805_2012Metric | R100, R101 |
| 2 | 5.1k | R_0805_2012Metric | R10, R11 |
| 2 | Schottky | D_SOD-123 | D10, D12 |
| 1 | 10uH | L_6.3x6.3_H3 | L1 |
| 1 | 1N4148 | D_SOD-123 | D14 |
| 1 | 2.2nF | C_0805_2012Metric | C12 |
| 1 | 220 | R_0805_2012Metric | R312 |
| 1 | 24V_IN | TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_Horizontal | J3 |
| 1 | 24V_PWR | TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_Horizontal | J44 |
| 1 | 32k | R_0805_2012Metric | R34 |
| 1 | 4.7uH | L_Vishay_IFSC-1515AH_4x4x1.8mm | L2 |
| 1 | 470uF | CP_Radial_D10.0mm_P5.00mm_Custom | C10 |
| 1 | 52.3k | R_0805_2012Metric | R31 |
| 1 | 600R@100MHz | L_0805_2012Metric | FB1 |
| 1 | 74AHCT125 | SOIC-14_3.9x8.7mm_P1.27mm | U2 |
| 1 | AHT20 | JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J10 |
| 1 | AM312 | JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J17 |
| 1 | AMP_PWR | AMP_PinSocket_1x02_P5.00mm | J27 |
| 1 | AMP_SIG | AMP_PinSocket_1x06_P3.81mm | J26 |
| 1 | AP63200WU | SOT-23-6 | U5 |
| 1 | BH1750 | JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J11 |
| 1 | DEVKIT_GPIO_A | PinHeader_1x22_P2.54mm_Vertical | J100 |
| 1 | DEVKIT_GPIO_B | PinHeader_1x22_P2.54mm_Vertical | J101 |
| 1 | G2RL-1_24V | Relay_SPDT_Hongfa_HF3F-L-xx-1ZL2T | K1 |
| 1 | G3VM-61VY3 | DIP-8_W7.62mm_Socket | U6 |
| 1 | INMP441_1 | INMP441_PinSocket_2x03_P2.54x7.62mm | J20 |
| 1 | INMP441_2 | INMP441_PinSocket_2x03_P2.54x7.62mm | J21 |
| 1 | INMP441_3 | INMP441_PinSocket_2x03_P2.54x7.62mm | J22 |
| 1 | INMP441_4 | INMP441_PinSocket_2x03_P2.54x7.62mm | J23 |
| 1 | JP10 | SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP10 |
| 1 | JP11 | SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP11 |
| 1 | LD2410C | JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J15 |
| 1 | LD2450 | PinSocket_2x04_P2.00mm_Vertical | J16 |
| 1 | LED24_1 | TerminalBlock_Phoenix_MPT-0,5-4-2.54_1x04_P2.54mm_Horizontal | J42 |
| 1 | LED24_2 | TerminalBlock_Phoenix_MPT-0,5-4-2.54_1x04_P2.54mm_Horizontal | J43 |
| 1 | OPA2134 | DIP-8_W7.62mm_Socket | U3 |
| 1 | PCM5102 | PinSocket_1x06_P2.54mm_Vertical | J25 |
| 1 | PMS5003 | PinSocket_1x08_P2.54mm_Vertical | J14 |
| 1 | REMOTE | TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_Horizontal | J45 |
| 1 | SCD40 | JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J12 |
| 1 | SGP41 | JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J13 |
| 1 | SK6812_1 | JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J40 |
| 1 | SK6812_2 | JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J41 |
| 1 | SMBJ26A | D_SMB | D3 |
| 1 | Si2301CDS | SOT-23 | Q1 |
| 1 | TLE2426 | SOT-23-5 | U8 |
| 1 | TPS54560 | Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm | U4 |
| 1 | W5500_CTL | PinHeader_1x06_P2.54mm_Vertical | J61 |
| 1 | W5500_SPI | PinHeader_1x06_P2.54mm_Vertical | J60 |
| 1 | XVF3800_EVEN | PinSocket_1x07_P2.54mm_Vertical | J24B |
| 1 | XVF3800_ODD | PinSocket_1x07_P2.54mm_Vertical | J24 |
| 1 | XVF_SEL | SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | U7 |

nodep/myAmp
Battery powered, solid state, guitar amplifier schematic and PCB

andreapiccini/spaghettilab-community
SpaghettiLab is an open modular hardware and software ecosystem for rapid prototyping, embedded systems development, and product innovation.





mwick83/irrigation_ctrl_hw
Irrigation Controller aiming to keep (my) plants happy - hardware repository

115 parts, built around the 74AHCT125D, PMS5003, AP63200WU and OPA2134UA. 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.
From the nate922/ceilingpuck_v4 repository on GitHub, at the commit this page was made from: the board is hardware/ceilingpuck_v3_final_v0-2.kicad_pcb and its schematic hardware/ceilingpuck_v3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask nate922 before reusing the design.