Skip to the content
PCBKitNew board
4 layers65 × 56 mmKingfisher hat, the printed circuit board in 3D

Kingfisher hat

westphae/kingfisher

Go flight data recorder for a turbonormalized Beech Bonanza V35B, running on a Raspberry Pi 5

Size
65 × 56 mm
Copper layers
4
Thickness
1.59 mm
Parts
53
Nets
69
Pads
188
Tracks, vias
1,548, 232
Pours
8
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
21 May 2026
Updated
3 Nov 2026

Overview

Kingfisher hat is an open-source printed circuit board by westphae, from the westphae/kingfisher repository on GitHub. It is a 4-layer board of 65 × 56 mm with 53 parts on 69 nets, routed with 1,548 tracks and 232 vias.

It is built around the NEO-M9N-00B, BMP581 and AP2112K-3.3, with the ICM-45686, RV-3028-C7 and CR2032 among its other parts. Its parts include 11 capacitors, 10 resistors, 6 ICs, 3 diodes and 3 connectors.

Main components

8

README

hardware/hat/README.md

Kingfisher Sensor HAT (rev 0.3)

Custom HAT for the extra-tall GPIO header above the M.2 HAT+. It replaces the cabin SparkFun NEO-M9N and ICM-45686 breakouts. The schematic netlist is checked. The board is routed on JLCPCB stackup JLC04161H-7628. Gerbers and drills are in fab/. Confirm header engagement, the CR2032 against the lid, and that the GNSS antenna is active before ordering.

RefPartRole
U1ICM-45686Cabin IMU, I²C 0x68, INT1 → GPIO17
U2BMP581Extra cabin baro, I²C 0x47
U3AP2112K-3.35 V → 3.3 V for the GPS only
U4NEO-M9NGNSS, UART0 + PPS on GPIO18
U5RV-3028-C7I²C RTC at 0x52
U6LM4040-3.03.00 V clamp for the ML414H charge
BT1CR2032, Keystone 3002Replaceable cell for the RTC VBACKUP only
BT2ML414HSoldered rechargeable cell on GPS V_BCKP
D1PMEG4005EJBlocks the ML414H from the reference
D2Green LED+3V3_GPS through 1 kΩ
D3ESD0P2RF0.2 pF ESD diode, RF to ground at the U.FL
L1LQG15HS27NJ02D27 nH antenna-bias choke
J12×20 socket, bottomMates the extended Pi header. Do not move it
J2U.FLAntenna. 0.32 mm microstrip plus the bias-T stub
J31×5 headerX1200 harness: +3V3, GND, SDA, SCL, GPIO6

Outline is the official Pi HAT (65 × 56.5 mm, M2.5 on 58 × 49 mm).

The GPS circuit follows UBX-19014285 and UBX-19014286: V_USB grounded, UART pull-up on D_SEL, 33 Ω on TX/RX, ML414H directly on V_BCKP charged through an LM4040-3.0 and 34 kΩ, and a 27 nH / 100 nF bias-T into the antenna. The CR2032 does not back up the GPS and has no charge path. There is no UPS on this board. See docs/DESIGN.md.

Open in KiCad

KiCad 9 (generated against 9.0.2).

bash
kicad hardware/hat/kingfisher-hat.kicad_pro

Libraries:

  • libs/Kingfisher.kicad_sym — ICM-45686, BMP581, NEO-M9N
  • libs/Kingfisher.pretty — ICM-45686 (TDK pin numbers), BMP581, ML414H

Regenerate with system Python, not a uv venv. pcbnew comes from python3-pcbnew.

bash
python3 hardware/hat/scripts/build_libs.py
python3 hardware/hat/scripts/build_sch.py
kicad-cli sch export netlist -o /tmp/kingfisher-hat.net hardware/hat/kingfisher-hat.kicad_sch
python3 hardware/hat/scripts/check_netlist.py /tmp/kingfisher-hat.net
python3 hardware/hat/scripts/place_pcb.py
python3 hardware/hat/scripts/route_pcb.py

check_netlist.py is the schematic check. It passed for rev 0.3 (69 nets). place_pcb.py keeps the template socket and mounting holes and deletes tracks. route_pcb.py restores the route and the 4-layer stackup.

Status

Done:

  • Schematic for the GPS replica, TDK IMU land, BMP581, RV-3028, both backup cells, X1200 header, test points, and the GPS power LED
  • Netlist check against datasheet pin numbers
  • Parts placed on the HAT outline, clear of the notch, the slot, the mounting holes, and the header
  • Routed, including the 0.32 mm U.FL microstrip (bare Z0 about 50.2 Ω at the pressed 7.1 mil / Er 4.4 height). Soldermask pulls that down about 1–2 Ω
  • JLC04161H-7628 stackup filled in. Error-level DRC is clean
  • Gerbers and drills in fab/

Still to confirm on the aircraft, and still open in software:

  • Female-header engagement, lid clearance over the CR2032, pin 1 against the real extender, and whether the GNSS antenna is active
  • i2c-rtc for the RV-3028, a cabin BMP581 reader, and an AHRS mount matrix measured from this board's silk

Attribution

  • Outline and GPIO socket: KiCad Raspberry Pi HAT template
  • BMP581 pads: SparkFun Qwiic BMP581 hardware, CC-BY-SA 4.0
  • ML414H pads and the GPS power circuit: SparkFun NEO-M9N SMA / SparkFun-Batteries
  • NEO-M9N symbol: derived from the KiCad NEO-M8N symbol
  • ICM-45686 pad centers: IPC LGA-14. Pin numbers and axes: TDK DS-000577

Parts

53
QtyValueFootprintReferences
8100nFC_0402_1005MetricC1, C2, C3, C4, C7, C8, C10, C11
4MountingHole_2.7mm_M2.5MountingHole:MountingHole_2.7mm_M2.5MH1, MH2, MH3, MH4
31uFC_0603_1608MetricC5, C6, C9
233R_0603_1608MetricR1, R2
24.7kR_0402_1005MetricR7, R8
1+3V3TestPoint_Pad_D1.5mmTP1
1+3V3_GPSTestPoint_Pad_D1.5mmTP3
1+5VTestPoint_Pad_D1.5mmTP2
110R_0402_1005MetricR9
110kR_0402_1005MetricR3
11kR_0603_1608MetricR6
12.2kR_0402_1005MetricR10
133R_0402_1005MetricR5
134kR_0603_1608MetricR4
1AP2112K-3.3SOT-23-5_JLCU3
1BMP581BMP581U2
1CR2032BatteryHolder_Keystone_3002_1x2032BT1
1ESD0P2RFD_SOD-882D3
1GNDTestPoint_Pad_D1.5mmTP12
1GPIOConnector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_VerticalJ1
1GPS_PPSTestPoint_Pad_D1.5mmTP10
1GreenLED_0603_1608MetricD2
1ICM-45686ICM-45686U1
1IMU_INTTestPoint_Pad_D1.5mmTP11
1LM4040-3.0SOT-353_SC-70-5_JLCU6
1LQG15HS27NJ02L_0402_1005MetricL1
1ML414HML414HBT2
1NEO-M9Nublox_NEOU4
1PMEG4005EJD_SOD-323FD1
1RV-3028-C7RV3028-C7_JLCU5
1SAFEBOOTTestPoint_Pad_D1.5mmTP13
1SCLTestPoint_Pad_D1.5mmTP7
1SDATestPoint_Pad_D1.5mmTP6
1U.FLU.FL_Hirose_U.FL-R-SMT-1_VerticalJ2
1UART_RXTestPoint_Pad_D1.5mmTP9
1UART_TXTestPoint_Pad_D1.5mmTP8
1VBATTestPoint_Pad_D1.5mmTP5
1V_BCKPTestPoint_Pad_D1.5mmTP4
1X1200PinHeader_1x05_P2.54mm_HorizontalJ3

Questions

How big is the Kingfisher hat PCB?

It measures 65 × 56 mm and has 4 copper layers, 1.59 mm thick.

What parts does the Kingfisher hat use?

53 parts, built around the NEO-M9N-00B, BMP581, AP2112K-3.3 and ICM-45686. 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 Kingfisher hat KiCad files?

From the westphae/kingfisher repository on GitHub, at the commit this page was made from: the board is hardware/hat/kingfisher-hat.kicad_pcb and its schematic hardware/hat/kingfisher-hat.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Kingfisher hat design in my own project?

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

Similar boards

  • 4 layers42 × 65 mmIcarus Flight Computer, the printed circuit board in 3D

    Icarus Flight Computer

    daedalus-ind/icarus-hardware

    Hardware of the onboard flight computer for the Icarus rocket.

    106 parts2MIT
  • 6 layers82.5 × 82.5 mmGps, the printed circuit board in 3D

    Gps

    xDocka15/GNSS_geret

    Dokument popisuje zmeny/upravy v elektronike gnss-geret z 2024 tak aby vznikla jednodoskova prenostitelna verzia.

    201 parts
  • 4 layers83.7 × 61.7 mmGps, the printed circuit board in 3D

    Gps

    sonicavionics/4in-gps

    GPS Module

    88 partsMIT
  • 2 layers47.2 × 55.5 mmTinta l2, the printed circuit board in 3D

    Tinta l2

    c0de111/tinta

    Battery-powered e-paper sign: room signage, sensor graphs, home automation, or anything over Wi-Fi. Wakes by real-time clock, NFC tap, or button. Raspberry Pi Pico W firmware, custom PCB, and 3D-printed case included.

    60 parts39Apache-2.0
  • 2 layers100 × 100 mmQX25Logger real, the printed circuit board in 3D

    QX25Logger real

    takahashirenya/QX25logger

    25年度鳥人間コンテストのロガー基盤

    99 parts1
  • 4 layers50 × 100 mmStDevboard, the printed circuit board in 3D

    StDevboard

    teletype7/IRIS

    166 parts3MIT
  • 8 layersFIRM v1.1, the printed circuit board in 3D

    FIRM v1.1

    NCSU-High-Powered-Rocketry-Club/FIRM-KiCad

    Full and open hardware design for FIRM

    108 parts1MIT