Skip to the content
2 layers57 × 50 mmAf4-trigger hat pre LED resistor change, the printed circuit board in 3D

Af4-trigger hat pre LED resistor change

kenbrinkman/af4-poe-trigger1

DIY replacement for the inD connect dongle: ESPHome on an ESP32-POE-ISO triggers the aF4 frozen-food feeder's 0-10V port, scheduled from Home Assistant. Includes wiring, BOM, and printable enclosure

Size
57 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
28
Nets
12
Pads
79
Tracks, vias
53, 11
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
12 Jul 2026
Updated
12 Oct 2026

Overview

Af4-trigger hat pre LED resistor change is an open-source printed circuit board by kenbrinkman, from the kenbrinkman/af4-poe-trigger repository on GitHub. It is a 2-layer board of 57 × 50 mm with 28 parts on 12 nets, routed with 53 tracks and 11 vias.

It is built around the AQY212GS, LM1117MPX-ADJ and PJ-079BH, with the SJ1-3523N, SMAJ15A and SMBJ13CA among its other parts. Its parts include 7 resistors, 5 diodes, 4 connectors, 2 capacitors and 2 ICs. It belongs with the home automation and IoT boards of this library.

Main components

7

README

README.md

aF4 Frozen Feeder — ESP32 PoE Trigger

Replaces the inD connect WiFi dongle on the inD aquatics aF4 refrigerated frozen-food feeder with an Olimex ESP32-POE-ISO running ESPHome, triggering feeds via the aF4's 0-10V port and scheduled from Home Assistant.

How it works

ESP32-POE-ISO → GPIO32 → 220Ω → AQY212GS PhotoMOS → switches the feeder's own 12V supply (regulated to ~10.4V by an on-board LM1117-ADJ) onto the 3.5mm trigger jack. Safety guardrails (20s pulse, 5-min lockout, restore-off, flash-persisted boot lockout) are baked into the ESPHome config on-device; HA is scheduler only.

All of that sits on a PCB "hat" that plugs onto the ESP32's EXT1/EXT2 headers and carries both panel connectors, assembled by PCBWay. Rev F is the board to order. Rev E is the one that was fabricated and is installed and working — same circuit, but its 12 V jack was placed facing inward and is bypassed with a panel jack. Rev F corrects that and the socket mounting face in the fab data; it has not yet been fabricated itself. The rev C hand-wired protoboard is retired.

The trigger pin is GPIO32, not GPIO13. The Olimex board has a factory 2.2 kΩ pull-up on GPIO13 that can partially turn the PhotoMOS on during boot. See docs/aF4-pcb-notes.md.

Where to start

You areRead
A person, new to this projectThis file, then STATUS.md for where it stands, then aF4-MASTER-REFERENCE.md §1 and §2
An AI session.claude/CLAUDE.md, then STATUS.md. Nothing else by default — the routing table in .claude/CLAUDE.md §7 says where each answer lives

Three documents are live. STATUS.md is the only one that describes current state; it is rewritten, never appended to. aF4-MASTER-REFERENCE.md is the deep record — it carries a section index and is meant to be grepped by §N.N, not read whole. .claude/CLAUDE.md holds the durable facts and the routing table.

Folder map

PathContents
STATUS.mdThe only live-status doc. Phase, what you may trust, open items
aF4-MASTER-REFERENCE.mdThe record. Every load-bearing claim tagged with its provenance (measured / datasheet / calculated / asserted). Section-indexed
.claude/CLAUDE.mdDurable priming for AI sessions + the routing table
.claude/settings.jsonClaude Code project settings and hooks — see docs/git-rules.md
tools/tools/section_index.py — regenerates the master reference's section index
docs/Subsystem references: feeder spec, PCB notes, BOM, assembly guide, enclosure notes, vendor-doc notes, meter test battery, and docs/git-rules.md
firmware/firmware/af4-feeder.yaml — the ESPHome config as flashed, source of truth. firmware/secrets.yaml is gitignored
hardware/enclosure/hardware/enclosure/af4_enclosure_ocp.py (parametric source, self-checking) and its STEP/STL exports — aF4-trigger-case-revF.stl for a rev F board, aF4-trigger-case.stl for the installed rev E board, one lid for both; the printable rev E hat stand-in
pcb/KiCad project, pcb/gen_pcb.py generator, the PCBWay upload package and the order record
reference/diagrams/Wiring and system SVGs
reference/vendor/Vendor CAD and PDFs — gitignored, not redistributed
archive/🚫 Not authoritative and not in the read path. Superseded handoff, the three dated reviews, rev C protoboard history. See archive/README.md

The board

pcb/gen_pcb.py is the source of truth: it generates pcb/af4-trigger-hat.kicad_pcb deterministically from named coordinates, taken directly from the Olimex Rev N KiCad source so the sockets line up by construction. Edit the script, not the board file, then re-run it, pcb/post.py (fills the copper pours, runs DRC), pcb/check_jacks.py (proves both jacks can be plugged into, against the manufacturer's 3D models) and pcb/make_package.py (Gerbers, drill, BOM, centroid, fab notes, zips).

To order a board: upload pcb/af4-trigger-hat-rev-F-GERBERS.zip to PCBWay's fabrication line item and pcb/af4-trigger-hat-BOM.xlsx + pcb/af4-trigger-hat-centroid.xlsx to the assembly line item. Print hardware/enclosure/aF4-trigger-case-revF.stl and hardware/enclosure/aF4-trigger-lid.stl. Full procedure: docs/aF4-pcb-notes.md, then docs/aF4-assembly-guide.md. The rev-E zips are the frozen record of what was fabricated.

Vendor files (not in repo)

Key trigger rules (inD 0-10V spec)

Feed triggers on ≥9V held ≥15s (inD publishes 6s/10s/15s across three guides — design to the longest); feeds ≥5 min apart; port must see ~0V for >60s to re-arm. Connecting the link port overrides the aF4's internal 24h schedule — an offline ESP32 means no feeding at all. Measured OEM dongle trigger voltage 10.37V open-circuit (don't feed raw 12V).

Parts

28
QtyValueFootprintReferences
310kR_0805_2012MetricR2, R6, R7
2M3MountingHole_3.2mm_M3_ISO7380H1, H2
1010R_1206_3216MetricF1
1100kR_0805_2012MetricR3
110V4TestPoint_Pad_D1.5mmTP2
110uF/25VCP_EIA-3528-21_Kemet-BC2
110uF/50VC_1206_3216MetricC1
1121RR_0805_2012MetricR4
112VTestPoint_Pad_D1.5mmTP1
1220RR_0805_2012MetricR1
1887RR_0805_2012MetricR5
1AQY212GSSO-4_4.4x2.3mm_P1.27mmU1
1EXT1PinSocket_1x10_P2.54mm_VerticalJ3
1EXT2PinSocket_1x10_P2.54mm_VerticalJ4
1GNDTestPoint_Pad_D1.5mmTP4
1GNDLTestPoint_Pad_D1.5mmTP5
1GRNLED_0805_2012MetricD3
1LM1117MPX-ADJSOT-223-3_TabPin2U2
1PJ-079BHBarrelJack_CUI_PJ-079BH_HorizontalJ1
1SJ1-3523NJack_3.5mm_CUI_SJ1-3523N_HorizontalJ2
1SMAJ15AD_SMAD2
1SMBJ13CAD_SMBD4
1SS14D_SMAD1
1TIPTestPoint_Pad_D1.5mmTP3
1YELLED_0805_2012MetricD5

More from kenbrinkman/af4-poe-trigger

1
  • 2 layers57 × 50 mmAf4-trigger hat, the printed circuit board in 3D

    Af4-trigger hat

    kenbrinkman/af4-poe-trigger

    DIY replacement for the inD connect dongle: ESPHome on an ESP32-POE-ISO triggers the aF4 frozen-food feeder's 0-10V port, scheduled from Home Assistant. Includes wiring, BOM, and printable enclosure

    28 parts1

Similar boards

  • 4 layers75 × 45 mmAcmeHub4, the printed circuit board in 3D

    AcmeHub4

    MaxClerkwell/kicad-workshop

    KiCon 2026 workshop: KiCad 10 Professional Workflows — staged course files for the Acme USB Hub design

    149 parts
  • 4 layers100 × 100 mmEc30-tee, the printed circuit board in 3D

    Ec30-tee

    justinpirie/ec30

    Onan EC30 Tee Board with ESP32 Control

    167 partsApache-2.0
  • 4 layers210.6 × 220 mmCMAIN PCB, the printed circuit board in 3D

    CMAIN PCB

    Arrow-air/project-caribou

    Project Caribou documentation, designs, and project artifacts.

    248 parts177CERN-OHL-S-2.0
  • 4 layers160 × 100 mmETH1CJTAG, the printed circuit board in 3D

    ETH1CJTAG

    BehrensG/ETH1CJTAG

    Low cost JTAG

    478 partsGPL-3.0
  • 8 layers160 × 100 mmETH1CLCR1, the printed circuit board in 3D

    ETH1CLCR1

    BehrensG/ETH1CLCR1

    751 parts
  • 2 layers30 × 20 mmIdeal diode, the printed circuit board in 3D

    Ideal diode

    saewoonam/kicad-ideal-diode

    ideal diode circuit

    13 parts
  • 4 layers106 × 110 mmRearCircuitBoard 10, the printed circuit board in 3D

    RearCircuitBoard 10

    ssbingo/samba-solar-track

    Samba Solar Track – Solarnachführung mit Sturmschutz: Handbuch, Platine und Gehäuse für den Nachbau (10,1-Zoll-Version)

    329 parts
  • 2 layers405 × 135 mmKeyboard, the printed circuit board in 3D

    Keyboard

    jasperhax0r/CompaqPortableKeyboard

    Mechanical Keyboard for the original Compaq Portable XT-Class

    188 parts2MIT

Questions

How big is the Af4-trigger hat pre LED resistor change PCB?

It measures 57 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Af4-trigger hat pre LED resistor change use?

28 parts, built around the AQY212GS, LM1117MPX-ADJ, PJ-079BH and SJ1-3523N. 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 Af4-trigger hat pre LED resistor change KiCad files?

From the kenbrinkman/af4-poe-trigger repository on GitHub, at the commit this page was made from: the board is pcb/af4-trigger-hat-backups/af4-trigger-hat-pre-LED-resistor-change.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Af4-trigger hat pre LED resistor change design in my own project?

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