
Diagral uart esp32
nicolas5000/diagral-esp32
This project permits to connect Home Assitant to your Diagral alarm system DIAG91AGFK (using the 20 pins connector on the back)

KiCad 10 schematic for a USB powered STM32C071FBP6 with one shared SPI bus. The WIZ850io W5500 module and a 3.3 V, six wire microSD SPI breakout have separate chip selects. SWD is available for first firmware bring-up.
Helix minimal is an open-source printed circuit board by flintwinters, from the flintwinters/helix-hardware repository on GitHub. It is a 2-layer board of 50 × 50 mm with 20 parts on 27 nets, routed with 174 tracks and 11 vias.
It is built around the STM32C071FBP6, WIZ850IO and AP2112K-3.3. Its parts include 6 resistors, 4 connectors, 3 capacitors and 3 ICs. It belongs with the RP2040 and STM32 boards of this library.
KiCad 10 schematic for a USB powered STM32C071FBP6 with one shared SPI bus. The WIZ850io W5500 module and a 3.3 V, six wire microSD SPI breakout have separate chip selects. SWD is available for first firmware bring-up.
Open helix_minimal.kicad_pro in KiCad. Run python3 manage.py check for label lint, ERC, and critical nets, or python3 manage.py audit for full DRC and every PCB pad net. The PCB audit records datasheet mappings and remaining risks. python3 manage.py repair fixes misplaced component reference/value fields in the existing schematic without rebuilding it. python3 manage.py build creates a schematic only when none exists. Building needs the KiCad 10 symbol library (KICAD_SYMBOL_DIR can point to it); the checked-in schematic and local symbols are self-contained.
The PCB uses pinned KiCadRoutingTools (git submodule update --init). USB D+/D− were routed manually; the other signals were autorouted around them. Board Setup specifies 0.30 mm tracks and 0.20 mm clearance for ordinary nets. The USB connector class uses 0.15 mm tracks and clearance for USB D±, CC1/CC2, and VBUS; cross-class clearance is 0.20 mm. GND has F.Cu and B.Cu pours, with no GND tracks or vias. Both pours use thermal reliefs by default: in KiCad's zone format, omitting the connect_pads mode selects thermal reliefs, while yes selects solid connections. The four mounting-hole pads remain solid for mechanical grounding. Seven crowded GND pads use explicit solid connections because thermal reliefs there left only one spoke and failed DRC.
After manually connecting /USB_DP and /USB_DM, run python3 manage.py route on a preserved board. It removes other top-level tracks and vias from a working copy while retaining the manual USB copper, footprints, and both GND zones. It refuses to start until both USB data nets have copper, excludes them and GND from every autorouter net list, and verifies that their copper geometry survives the route. It routes CC1/CC2/VBUS first at 0.15 mm width, then SWCLK and the other ordinary nets at 0.30/0.20 mm. The USB pass omits --clearance so the router honors the 0.20 mm clearance against ordinary nets. It force-reroutes SPI MISO at 0.30 mm to remove the router's multipoint narrow taper, then force-reroutes +3V3 to remove a dangling via observed in the earlier 4000 turn-cost run. All passes use --via-cost 300 --turn-cost 4000 --heuristic-weight 1.0 --same-net-pad-clearance 0.1 --grid-step 0.05 --via-size 0.4 --via-drill 0.2 --escalation off --strict-sizes --no-fix-drc-settings. The router tries direction-preference costs 1200 and 2000 (F.Cu horizontal, B.Cu vertical), then installs the completed route with the smallest sum of squared non-USB net lengths plus an off-axis penalty. The original and intermediate boards remain in .recovery/. This is candidate selection; the pinned Rust A* search itself has no quadratic-length parameter. Run python3 manage.py audit after routing.
KiCad DRC reports no signal routing or thermal-relief violations and zero schematic parity issues. Two GND connections remain for manual review; 18 text-height warnings remain. The WIZ850io module body overlaps H3, R3, and R4 in a mechanical courtyard probe; resolve its assembly height and mechanical clearance before fabrication. J6 has SWCLK where an SPI accessory would need SCK.
The current route uses a 4000 turn cost and direction-preference cost 2000. All 24 manually drawn USB data copper items were preserved exactly. Its input and intermediate boards are recoverable in .recovery/ if needed.
| Interface | STM32 pads | Connector pins |
|---|---|---|
| SPI1 SCK / MISO / MOSI | PA5 / PA6 / PA7 | WIZ850io U3.4 / U3.7 / U3.3; microSD J4.5 / J4.3 / J4.4 |
| W5500 select / interrupt / reset | PA4 / PA3 / PA0 | WIZ850io U3.5 / U3.6 / U3.8 |
| microSD select | PA8 | J4.6 |
| USB D− / D+ | PA11 / PA12 | J1 A7+B7 / A6+B6 |
| SWDIO / SWCLK / NRST | PA13 / PA14 / PF2 | J5.2 / J5.3 / J5.5 |
J4 is a project-defined jumper header, not a claimed footprint for a particular SD module: 1=GND, 2=3V3, 3=SO/MISO, 4=SI/MOSI, 5=CLK, 6=CS. Check the chosen breakout's physical pin order before wiring it. U3 combines WIZ850io J1 pins 1–6 with J2 pins 6–1 as footprint pads 1–12. Its board placement remains subject to DRC and mechanical review. Firmware should hold WIZ_RST low for at least 500 µs, then wait 50 ms after release before SPI access. Keep both CS lines high while neither device is selected.
The USB-C receptacle uses separate 5.1 kΩ CC pull-downs and a 3.3 V AP2112K regulator. C1 and C2 are the regulator's required 1 µF input/output capacitors; C3 is the MCU's 100 nF decoupling capacitor. VBUS, +3V3, and GND use KiCad power symbols connected by wires. There is no enclosure, firmware, USB ESD protection, or measured power budget. WIZ850io can draw about 141 mA by itself, so USB bus power behavior before configuration needs design review before claiming USB compliance.
| Part | Local document | Verified design facts |
|---|---|---|
| STM32C071FBP6 | Official ST PDF linked; ST download endpoint timed out here | TSSOP20 pinout, SPI1 PA5/6/7, USB PA11/12, 2–3.6 V supply |
| WIZ850io / W5500 | docs/wiz850io_schematic.pdf, docs/w5500.pdf | 3.3 V module; two 1×6 headers; reset timing; about 141 mA normal operating current |
| WIZ850io KiCad library | vendor/wiz850io/WIZ850io.lib, vendor/wiz850io/WIZ850io.kicad_sym, footprints/Helix.pretty/WIZ850io.kicad_mod | Imported 12-pad symbol/footprint; 20.32 mm row spacing and 2.54 mm pitch match the module drawing. Socket pad drill enlarged from 0.762 to 1.0 mm to match the prior KiCad pin-socket footprints; module outline moved from silk to fabrication layer for clearance. Library is third-party; verify the actual module revision and mating socket before fabrication. |
| AP2112K-3.3 | docs/ap2112.pdf | SOT-23-5, 600 mA rating, 1 µF input/output ceramic capacitors |
| GCT USB4110 | docs/usb4110.pdf | USB 2.0 Type-C receptacle footprint and contact arrangement |
| Adafruit 3 V microSD breakout guide | docs/adafruit_microsd_breakout.pdf | 3.3 V-only SPI signals; generic J4 follows signal names rather than its physical header order |
The local Helix:AP2112K-3.3 symbol is the KiCad 10 library's inherited AP2112K symbol flattened for portability. The edited STM32 pin layout is stored in symbols/STM32C071FBPx.kicad_sym. The WIZ850io symbol was converted from the linked KiCad library with kicad-cli sym upgrade; its footprint was upgraded with kicad-cli fp upgrade. Other symbols come from the installed KiCad library.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | custom_parts:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R4, R5, R6 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.5mm_Pad | H1, H2, H3, H4 |
| 2 | 1uF | custom_parts:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | C1, C2 |
| 2 | 5.1k | custom_parts:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2 |
| 1 | 100nF | custom_parts:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | C3 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | STM32C071FBP6 | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | U1 |
| 1 | SWD | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J5 |
| 1 | USB-C | Connector_USB:USB_C_Receptacle_GCT_USB4110 | J1 |
| 1 | WIZ850io | Helix:WIZ850io | U3 |
| 1 | pico hdmi | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J6 |
| 1 | sd card | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J4 |
It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.
20 parts, built around the STM32C071FBP6, WIZ850IO and AP2112K-3.3. 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 flintwinters/helix-hardware repository on GitHub, at the commit this page was made from: the board is helix_minimal.kicad_pcb and its schematic helix_minimal.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 flintwinters before reusing the design.

nicolas5000/diagral-esp32
This project permits to connect Home Assitant to your Diagral alarm system DIAG91AGFK (using the 20 pins connector on the back)


kellerkindt/bluepill_sensor
Bluepill stm31f103 ethernet sensor extension board with SW written in Rust


bablokb/pcb-datalogger-v4e
Pico Board for Data-Logging (Ethernet Version)

JoachimBose/nabby-linux
An Allwinner F1C100s / F1C200s buildroot external tree for (among others) the hardware challenge for VUCTF-2026

