
GR ESP32-A1S
GadgetReboot/ESP32-A1S
Breakout PCB for the ESP32-A1S module including an audio amp and basic GPIO headers, USB interface

Wired, fail-safe auto top-off (ATO) for a reef system. Part of the Corallite Calyx family (wired connected devices: Calyx-Outlet, Calyx-Sense, Calyx-Level).
Calyx level carrier is an open-source printed circuit board by ballhog, from the ballhog/calyx-level repository on GitHub. It is a 2-layer board of 187 × 76 mm with 106 parts on 65 nets, routed with 704 tracks and 51 vias.
It is built around the PESD5V0S1BL, 1N4148W and SS34, with the IRLML0040, MMBT3904 and MS 2 among its other parts. Its parts include 40 resistors, 15 diodes, 15 connectors, 11 capacitors and 2 transistors.
Wired, fail-safe auto top-off (ATO) for a reef system. Part of the Corallite Calyx family (wired connected devices: Calyx-Outlet, Calyx-Sense, Calyx-Level).
Built for Joe's own tank first. Each step should be useful on its own; it becomes a product only if it proves itself.
A sensor node at the sump reads the water level and the RO reservoir, and while water is needed it keeps handing a short run permission (lease) over Ethernet to a pump node at the RO station. The pump node runs the pump only while it holds a fresh lease and stays inside its own limits (run time, off time, daily volume). Anything that breaks (cable, switch, either node, firmware) makes the lease run out and the pump stop. A hardwired high-level float cuts pump power in series, with no firmware or network in the path. Both nodes are Olimex ESP32-POE-ISO boards on a blank Arduino Uno proto shield, so off-the-shelf Uno shields plug straight in.
| Doc | What's in it |
|---|---|
| docs/design.md | How it works: roles, lease protocol, limits, sensor health, failure table, reporting |
| docs/parts.md | Parts list (bench build and per node), with what's already on hand |
| docs/schematic.md | Wiring, pin map (Uno names ↔ ESP32 GPIO), input/output circuits, power |
| docs/provisioning.md | First flash, node role and id, Coeno OTA, publishing builds |
| hardware/DESIGN.md | KiCad carrier rev A: schematic, PCB, build options, checks before ordering |
Carrier PCB rev A designed (schematic + routed board, DRC copper-clean; see hardware/DESIGN.md). No firmware yet. Coeno already serves /firmware/calyx-level/latest.json (Coeno b9fa573).
firmware/calyx-level/ and coeno/api/routes/firmware.py: the OTA server.| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R11, R21, R31, R41, R51, R61, R72, R73, R75, R77, R78 |
| 7 | 100R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R10, R20, R30, R40, R50, R60, R76 |
| 7 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R12, R22, R32, R42, R52, R62, R71 |
| 6 | 0R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R14, R24, R34, R44, R54, R64 |
| 6 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C10, C20, C30, C40, C50, C60 |
| 6 | 20k DNP | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R13, R23, R33, R43, R53, R63 |
| 6 | PESD5V0S1BL | Diode_SMD:D_SOD-323 | D10, D20, D30, D40, D50, D60 |
| 4 | M3 | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 2 | 100nF 50V | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C4 |
| 2 | 1N4148W | Diode_SMD:D_SOD-123 | D4, D71 |
| 2 | SS34 | Diode_SMD:D_SMA | D1, D6 |
| 1 | +3V3 | TestPoint:TestPoint_Pad_D1.5mm | TP5 |
| 1 | +5V | TestPoint:TestPoint_Pad_D1.5mm | TP4 |
| 1 | +VIN | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | 100mA hold | Fuse:Fuse_1812_4532Metric | F2 |
| 1 | 100uF 35V | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C3 |
| 1 | 10k DNP | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R79 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C7 |
| 1 | 10uF 50V | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1 |
| 1 | 2A | Fuse:Fuseholder_Littelfuse_Nano2_154x | F1 |
| 1 | 330R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R70 |
| 1 | 4.7k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R74 |
| 1 | 5V active | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | BLUE | LED_SMD:LED_0603_1608Metric | D70 |
| 1 | EXT1 | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J1 |
| 1 | EXT2 | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J2 |
| 1 | G5LE-1 DC24 | Relay_THT:Relay_SPDT_Omron-G5LE-1 | K1 |
| 1 | GATE | TestPoint:TestPoint_Pad_D1.5mm | TP3 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.5mm | TP6 |
| 1 | GREEN | LED_SMD:LED_0603_1608Metric | D5 |
| 1 | HIGH FLOAT | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_Horizontal | J11 |
| 1 | IRLML0040 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | LEAK | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J6 |
| 1 | LVL_A | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J3 |
| 1 | LVL_B | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J4 |
| 1 | MMBT3904 | Package_TO_SOT_SMD:SOT-23 | Q70 |
| 1 | MOTOR | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J15 |
| 1 | MS1 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP2 |
| 1 | MS2 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP3 |
| 1 | Olimex MH1 standoff | MountingHole:MountingHole_2.2mm_M2 | H5 |
| 1 | Olimex MH2 standoff | MountingHole:MountingHole_2.2mm_M2 | H6 |
| 1 | Olimex MH3 standoff | MountingHole:MountingHole_2.2mm_M2 | H7 |
| 1 | PC817 | Package_DIP:SMDIP-4_W9.53mm | U4 |
| 1 | PUMP | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J12 |
| 1 | PUMP SUPPLY | Connector_BarrelJack:BarrelJack_CUI_PJ-102AH_Horizontal | J9 |
| 1 | PUMP SUPPLY | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J10 |
| 1 | RAIL | TestPoint:TestPoint_Pad_D1.5mm | TP2 |
| 1 | RED | LED_SMD:LED_0603_1608Metric | D3 |
| 1 | RO_LOW | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J5 |
| 1 | RST-SLP | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4 |
| 1 | SENS_V | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | JP1 |
| 1 | SENS_V | TestPoint:TestPoint_Pad_D1.5mm | TP7 |
| 1 | SMAJ24CA | Diode_SMD:D_SMA | D2 |
| 1 | SPARE_IN1 | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J7 |
| 1 | SPARE_IN2 | Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_Horizontal | J8 |
| 1 | STEPSTICK L | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J13 |
| 1 | STEPSTICK R | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J14 |
| 1 | YELLOW | LED_SMD:LED_0603_1608Metric | D7 |
It measures 187 × 76 mm and has 2 copper layers, 1.6 mm thick.
106 parts, built around the PESD5V0S1BL, 1N4148W, SS34 and IRLML0040. 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 ballhog/calyx-level repository on GitHub, at the commit this page was made from: the board is hardware/calyx-level-carrier/calyx-level-carrier.kicad_pcb and its schematic hardware/calyx-level-carrier/calyx-level-carrier.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 ballhog before reusing the design.

GadgetReboot/ESP32-A1S
Breakout PCB for the ESP32-A1S module including an audio amp and basic GPIO headers, USB interface

Oleg-mk/MOST25-to-AUDIO
Passive MOST25 listener: Tang Nano 20K FPGA, ESP32 host, stereo I2S out with the head unit's volume, balance and tone





Secoh/Electronics
Educational etudes related to electronics, schematics, PCB layout, etc.
