Skip to the content
2 layers64 × 50 mmSnowGauge, the printed circuit board in 3D

Low-cost, low-power snow depth logger for remote subalpine monitoring (NIR laser ToF + XIAO nRF52840 Sense)

Size
64 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
15
Pads
80
Tracks, vias
79, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Sep 2026
Updated
11 Sep 2026

Overview

SnowGauge is an open-source printed circuit board by 0kam, from the 0kam/SnowGauge repository on GitHub. It is a 2-layer board of 64 × 50 mm with 25 parts on 15 nets, routed with 79 tracks and 0 vias.

It is built around the NJU7223F50 and 2SK4017(Q). Its parts include 6 capacitors, 6 resistors, 3 connectors, 2 ICs and 2 transistors. It belongs with the nRF52 and nRF5x boards of this library.

Main components

2

README

pcb/README.md

SnowGauge PCB v1.2 (TFmini Plus / TSD20 common board)

  • Board: 64 x 50 mm, 2-layer, all through-hole. Bottom layer is a GND pour.
  • Mounting: 4x M3 (3.2mm) holes at the corners, 57 x 43 mm center spacing (3.5mm from every edge; hole centers at (3.5, 3.5) / (60.5, 3.5) / (3.5, 46.5) / (60.5, 46.5) from the board's top-left corner).
  • Fits the previous prototype enclosure (Takachi BCAP091208G, inner 66 x 96 mm) with the 50mm side across the width.
  • Battery terminal J1 exits at the bottom edge; TFmini terminal J2 exits at the right edge.
  • Generated programmatically: generate_board.py → SnowGauge.kicad_pcb (KiCad 10). DRC: 0 errors, 0 unconnected.
  • One board serves both variants: U2 = NJU7223F50 for TFmini Plus / NJU7223F33 for TSD20 (same pinout).

Ordering (JLCPCB, ~1 week to Japan)

  1. Go to jlcpcb.com → "Add gerber file" → upload SnowGauge_v1.2_gerbers.zip
  2. Settings: 2 layers, 64x50mm (auto-detected), qty 5 (or 10), 1.6mm, HASL, green — all defaults are fine
  3. Shipping: DHL or OCS Express (this is what makes it arrive in ~3-4 days; economy mail takes weeks)

Firmware pin map (matches this board — the single source of truth)

XIAO pinNetFunction
A0 (D0)ADC_NODEBattery voltage = reading x2. Divider hangs on VBAT_SW, so enable SENSOR_EN, then read A0 (v1.2: Q3/R6/D3 deleted — node is 0V during sleep, never above VDD)
D4 / D5I2C_SDA / I2C_SCLSpare I2C header J3 (future external IMU)
D6 (TX)UART_TX_MCU→ 1k (R7) → TFmini RX (white)
D7 (RX)UART_RX← TFmini TX (green)
D10SENSOR_ENHigh = sensor rail ON (Q2→Q1). Changed from D2 in the hand-wiring plan.
3V33V3_SYSPowered from U1 (NJU7223F33)

Connectors

  • J1 (screw terminal 2P, 5.08mm): battery + / − ("+"/"-" on silk)
  • J2 (4 positions at 5.08mm = two interlocked 2P blocks): TFmini, top to bottom RED +5V / BLK GND / GRN TX / WHT RX
  • J3 (pin header 1x4): SCL / SDA / GND / 3V3 spare I2C
  • A1: 2x low-profile 1x7 female headers (2.54mm) — socket for XIAO nRF52840 Sense

Extra BOM lines (in addition to spec §6)

PartQtyNote
Screw terminal block 2P, 5.08mm pitch, interlocking (TB111-2 / MKDS-1,5 type)3J1 battery; J2 = 2 blocks snapped together (4 contiguous positions)
Female pin socket 1x7, 2.54mm2XIAO socket. Holes are 0.89mm: fine for round machined tails (~0.5mm) and typical stamped tails; avoid 0.64mm square-tail types
10uF radial MLCC, 5mm lead pitch1C6. A 2.5mm-pitch part needs its leads splayed
Pin header 1x4, 2.54mm1J3 (optional)
M3 screws/standoffs4mounting holes at corners

The consolidated BOM for a whole unit (spec §6 parts + these lines, corrected counts, breadboard consumables, TSD20 variant) is docs/01_parts.md / docs/01_parts.csv.

Safety notes silkscreened on the board

  • "NO USB WHILE BATTERY CONNECTED!" — disconnect battery before plugging USB into the XIAO
  • C4 (OS-CON) polarity marked; D1 cathode marked "K"

Component orientation (U1, U2, Q1, Q2)

The KiCad TO-220 / TO-251 vertical footprints put the reference designator on the metal-tab side, so the part's marked (printed) face points the other way. With the board held "SnowGauge v1.2" up / J1 down: U1 and Q1 have the tab towards the top edge (print facing the XIAO), U2 and Q2 are rotated 180 deg (tab towards the board centre, print facing the top edge). Assembly instructions with a figure: docs/02_assembly.md B-2 (figure regenerated by docs/assets/figures/gen_component_orientation.py).

v1.2 changes (post-review)

  • Battery divider now fed from VBAT_SW (the switched rail) instead of VBAT: the ADC node sits at 0V during sleep instead of floating to ~7V through the nRF52840's clamp diode (abs-max violation found in review). Q3, R6 and the D3 GPIO are deleted. Firmware measures battery by enabling SENSOR_EN and reading A0 (x2).
  • USB corridor cleared: U1 and C1 moved to the top-left, D1 lowered — a USB-C cable now reaches the socketed XIAO for flashing.
  • TFmini wire-order legend moved where it stays visible after C4 is mounted.
  • Terminals changed to 3x 5.08mm 2P blocks; the TFmini pair interlocks into one 4P unit on contiguous 5.08mm positions (J2). Standard Akizuki TB111-class parts drop in.

Parts

25
QtyValueFootprintReferences
40.1uC_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C3, C5
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
2100kR_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4, R5
21MR_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
110kR_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
110uC_Disc_D5.0mm_W2.5mm_P5.00mmC6
11N5819D_DO-41_SOD81_P10.16mm_HorizontalD1
11kR_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR7
12SJ334TO-220-3_VerticalQ1
12SK4017TO-251-3_VerticalQ2
1BATTERY L91x4TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ1
1I2C SPAREPinHeader_1x04_P2.54mm_VerticalJ3
1NJU7223F33TO-220-3_VerticalU1
1NJU7223F50TO-220-3_VerticalU2
1OS-CON 470u/16VCP_Radial_D10.0mm_P5.00mmC4
1TFmini 2Px2TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_HorizontalJ2
1XIAO nRF52840 SenseXIAO-nRF52840-DIPA1

Similar boards

  • 2 layers68.6 × 53.3 mmShoei, the printed circuit board in 3D

    Shoei

    CALIL/openbookcamera

    高速な書影撮影システム「オープンブックカメラ」

    28 parts23MIT
  • 2 layers100 × 100 mmPico router backup, the printed circuit board in 3D

    Pico router backup

    Dudestin/tinyEtherDeveloper

    Inexpensive FPGA board-based Ethernet evaluation board project. Consists mostly of DIP components and uses Tang PriMER. It can be built for about $50.

    98 parts2
  • 2 layers60 × 45 mmDRC SLVD2025, the printed circuit board in 3D

    DRC SLVD2025

    hosh0344/CatchRobo2025_Circuits

    66 parts2
  • 2 layers110 × 100 mmESP32-S3-IO DEVICE, the printed circuit board in 3D

    ESP32-S3-IO DEVICE

    noritama-lab/esp32io-hw

    ESP32 ベースの I/O ボードのハードウェア設計をまとめたリポジトリです。 / Hardware designs for an ESP32‑based PLC‑compatible I/O board.

    85 parts2
  • 2 layers56 × 65 mmOttoPi10-RPi3A HAT, the printed circuit board in 3D

    OttoPi10-RPi3A HAT

    ytani01/OttoPi

    Otto like Robot for Raspberry Pi Zero

    51 parts2
  • 2 layers100 × 100 mmShutterClock, the printed circuit board in 3D

    ShutterClock

    0kam/ShutterClock

    Low-power BLE interval timer for fixed-point Nikon DSLR cameras (XIAO nRF52840, Zephyr, Web Bluetooth)

    61 parts
  • 2 layers68.6 × 53.3 mmYamabiko a, the printed circuit board in 3D

    Yamabiko a

    airpocket-soundman/chikuwa-flute-robot

    学習では、あらかじめ作った 1,000 曲のセット(runs/targetbank.npz、trainresiduales.py --bank 1000 で自動作成)から毎世代 8 曲を選んで使い回します。評価用の曲は別の乱数で作るので、学習用と重なりません。セットの中身は WAV と図で確認できます:

    44 parts
  • 2 layers60 × 45 mmTX improved, the printed circuit board in 3D

    TX improved

    AquaBeacon/acoustic-circuits

    初期音響回路の設計資料

    18 partsApache-2.0

Questions

How big is the SnowGauge PCB?

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

What parts does the SnowGauge use?

25 parts, built around the NJU7223F50 and 2SK4017(Q). 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 SnowGauge KiCad files?

From the 0kam/SnowGauge repository on GitHub, at the commit this page was made from: the board is pcb/SnowGauge.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the SnowGauge design in my own project?

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