Skip to the content
PCBKitNew board
2 layers187 × 76 mmCalyx level carrier, the printed circuit board in 3D

Calyx level carrier

ballhog/calyx-level

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).

Size
187 × 76 mm
Copper layers
2
Thickness
1.6 mm
Parts
106
Nets
65
Pads
262
Tracks, vias
704, 51
Pours
3
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
23 Oct 2026
Updated
26 Oct 2026

Overview

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.

Main components

7

README

README.md

Calyx-Level

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.

In one paragraph

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.

Docs

DocWhat's in it
docs/design.mdHow it works: roles, lease protocol, limits, sensor health, failure table, reporting
docs/parts.mdParts list (bench build and per node), with what's already on hand
docs/schematic.mdWiring, pin map (Uno names ↔ ESP32 GPIO), input/output circuits, power
docs/provisioning.mdFirst flash, node role and id, Coeno OTA, publishing builds
hardware/DESIGN.mdKiCad carrier rev A: schematic, PCB, build options, checks before ordering

Status (2026-10-26)

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).

Related

  • Corallite project docs: Corallite ATO - architecture 2026-10-22 (the decisions this repo implements), Corallite doser - E4 controller 2026-10-22, Salt swap doser - parked 2026-10-20.
  • ballhog/calyx-sense: same board family, same OTA client.
  • Coeno firmware/calyx-level/ and coeno/api/routes/firmware.py: the OTA server.

Rules that don't bend

  1. Safety lives on the boxes. Xanthe and Coeno read and alert; they never switch the pump.
  2. The high-level cutoff is hardware in series with pump power. It is never a shield input or a firmware decision.
  3. No network message ever means "run". Only a fresh lease does, and silence means stop.

Parts

106
QtyValueFootprintReferences
1110kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R21, R31, R41, R51, R61, R72, R73, R75, R77, R78
7100RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10, R20, R30, R40, R50, R60, R76
71kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR12, R22, R32, R42, R52, R62, R71
60RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R24, R34, R44, R54, R64
6100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10, C20, C30, C40, C50, C60
620k DNPResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13, R23, R33, R43, R53, R63
6PESD5V0S1BLDiode_SMD:D_SOD-323D10, D20, D30, D40, D50, D60
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
2100nF 50VCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C4
21N4148WDiode_SMD:D_SOD-123D4, D71
2SS34Diode_SMD:D_SMAD1, D6
1+3V3TestPoint:TestPoint_Pad_D1.5mmTP5
1+5VTestPoint:TestPoint_Pad_D1.5mmTP4
1+VINTestPoint:TestPoint_Pad_D1.5mmTP1
1100mA holdFuse:Fuse_1812_4532MetricF2
1100uF 35VCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC3
110k DNPResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR79
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC7
110uF 50VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1
12AFuse:Fuseholder_Littelfuse_Nano2_154xF1
1330RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR70
14.7kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR74
15V activeBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1BLUELED_SMD:LED_0603_1608MetricD70
1EXT1Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ1
1EXT2Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ2
1G5LE-1 DC24Relay_THT:Relay_SPDT_Omron-G5LE-1K1
1GATETestPoint:TestPoint_Pad_D1.5mmTP3
1GNDTestPoint:TestPoint_Pad_D1.5mmTP6
1GREENLED_SMD:LED_0603_1608MetricD5
1HIGH FLOATTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_HorizontalJ11
1IRLML0040Package_TO_SOT_SMD:SOT-23Q1
1LEAKConnector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ6
1LVL_AConnector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ3
1LVL_BConnector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ4
1MMBT3904Package_TO_SOT_SMD:SOT-23Q70
1MOTORConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ15
1MS1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2
1MS2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP3
1Olimex MH1 standoffMountingHole:MountingHole_2.2mm_M2H5
1Olimex MH2 standoffMountingHole:MountingHole_2.2mm_M2H6
1Olimex MH3 standoffMountingHole:MountingHole_2.2mm_M2H7
1PC817Package_DIP:SMDIP-4_W9.53mmU4
1PUMPTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ12
1PUMP SUPPLYConnector_BarrelJack:BarrelJack_CUI_PJ-102AH_HorizontalJ9
1PUMP SUPPLYTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ10
1RAILTestPoint:TestPoint_Pad_D1.5mmTP2
1REDLED_SMD:LED_0603_1608MetricD3
1RO_LOWConnector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ5
1RST-SLPJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP4
1SENS_VConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1
1SENS_VTestPoint:TestPoint_Pad_D1.5mmTP7
1SMAJ24CADiode_SMD:D_SMAD2
1SPARE_IN1Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ7
1SPARE_IN2Connector_Audio:Jack_3.5mm_KoreanHropartsElec_PJ-320D-4A_HorizontalJ8
1STEPSTICK LConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ13
1STEPSTICK RConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ14
1YELLOWLED_SMD:LED_0603_1608MetricD7

Questions

How big is the Calyx level carrier PCB?

It measures 187 × 76 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Calyx level carrier use?

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.

Where can I download the Calyx level carrier KiCad files?

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.

Can I use the Calyx level carrier design in my own project?

Its repository states no licence, so its author keeps all rights: ask ballhog before reusing the design.

Similar boards

  • 2 layers79.9 × 41.4 mmGR ESP32-A1S, the printed circuit board in 3D

    GR ESP32-A1S

    GadgetReboot/ESP32-A1S

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

    65 parts27
  • 2 layers123.6 × 78.9 mmMost listener, the printed circuit board in 3D

    Most listener

    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

    172 parts1CERN-OHL-S-2.0
  • 4 layers102.2 × 83 mmZorionx nivara, the printed circuit board in 3D

    Zorionx nivara

    BRYANSFM/Bryan_Fernandez_ELECTIVA_2025_C2

    132 parts
  • 4 layers98.3 × 81.2 mmJuana NIVARA, the printed circuit board in 3D

    Juana NIVARA

    Massiel96/Juana-Massiel_Cordero_Electiva-ll_2025_C2

    162 parts
  • 4 layers120 × 79.5 mmNivara PCB, the printed circuit board in 3D

    Nivara PCB

    WenerrP/WENERR_PACHECO_ELECTIVA_2025_C2

    Wenerr Valentín Pacheco Torres.

    182 parts
  • 2 layers38.1 × 38.1 mmSwitch, the printed circuit board in 3D

    Switch

    Secoh/Electronics

    Educational etudes related to electronics, schematics, PCB layout, etc.

    17 partsMIT
  • 4 layers97.8 × 99.6 mmStepper Module, the printed circuit board in 3D

    Stepper Module

    McReeii/Stepper-Module

    Smart_Stepper_Module

    171 partsMIT