Skip to the content
PCBKitNew board
2 layers36 × 25 mmMgm210l sensor, the printed circuit board in 3D

Mgm210l sensor

temonuv/dormouse2

🐭 Dormouse — a coin-cell (CR2032) Zigbee 3.0 temperature + humidity sensor on the Silicon Labs MGM210L (EFR32MG21). Firmware + KiCad hardware + Home Assistant integration.

Size
36 × 25 mm
Copper layers
2
Thickness
1.6 mm
Parts
9
Nets
7
Pads
39
Tracks, vias
47, 21
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
6 Jul 2026
Updated
7 Jul 2026

Overview

Mgm210l sensor is an open-source printed circuit board by temonuv, from the temonuv/dormouse repository on GitHub, published under the MIT licence. It is a 2-layer board of 36 × 25 mm with 9 parts on 7 nets, routed with 47 tracks and 21 vias.

It is built around the CR2032. Its parts include 3 capacitors, 2 resistors, 2 ICs and 1 connector. It belongs with the sensors and measurement and home automation and IoT boards and the Silicon Labs (EFR32, EFM) boards of this library.

Main components

1

README

hardware/README.md

Hardware — schematic + PCB

KiCad 8/9 design for Dormouse, the MGM210L CR2032 temperature + humidity sensor. The schematic (electrical connectivity) and the routed PCB are both here. (File basenames stay mgm210l_sensor.* — renaming a finalized, already-ordered KiCad project risks breaking internal references for no functional gain.)

FileWhat
mgm210l_sensor.kicad_proKiCad project — open this in KiCad.
mgm210l_sensor.kicad_schSchematic (generated by gen_sch.py).
mgm210l_sensor.kicad_pcbPCB — placement + antenna keepout + GND pours + full routing.
mgm210l_sensor.pdfRendered schematic (quick view, no KiCad needed).
mgm210l_sensor_2d_view.pngRendered PCB (top view).
mgm210l_sensor_enclosure_drawing.pdfDimensioned mechanical drawing for 3D-printed enclosure design (outline, placement, Z stack-up).
gen_sch.pyGenerator — schematic + mgm.kicad_sym are produced from this.
gen_mgm_footprint.pyGenerator — the custom MGM210L land pattern.
gen_enclosure_drawing.pyGenerator — the enclosure drawing PDF (parses the PCB directly).
mgm.kicad_symCustom symbol library (MGM210L, SHT40, SWD).
mgm.pretty/Custom footprint library (MGM210LA22JNF land pattern).
sym-lib-table / fp-lib-tableProject library tables (register Device/mgm).

Not committed (regenerable, .gitignored): the netlist (.net), text reports (-drc.rpt/-erc.rpt/_drc_violations.json), Freerouting exchange files (.dsn/.ses), and a local BOM copy — recreate them with the commands below. The canonical BOM + pick-and-place live in fab/.

Regenerate + re-export

bash
cd hardware
python3 gen_sch.py            # -> .kicad_sch, .kicad_pro, mgm.kicad_sym
python3 gen_mgm_footprint.py  # -> mgm.pretty/MGM210LA22JNF.kicad_mod
python3 gen_enclosure_drawing.py  # -> mgm210l_sensor_enclosure_drawing.pdf (from the PCB)
kicad-cli sch export pdf     -o mgm210l_sensor.pdf mgm210l_sensor.kicad_sch
kicad-cli sch export netlist -o mgm210l_sensor.net mgm210l_sensor.kicad_sch
kicad-cli sch erc  mgm210l_sensor.kicad_sch     # 0 violations
kicad-cli pcb drc  mgm210l_sensor.kicad_pcb     # 0 errors (see PCB status below)

The PCB is not regenerated by a script — it is built from the schematic with KiCad's "Update PCB from Schematic" (F8) and then edited. Do not expect gen_*.py to touch it.

Nets (verified from the exported netlist)

  • VDD — CR2032(+), MGM210L pin 13, SHT40 VDD, both 4.7 kΩ pull-ups, all three decoupling caps, SWD header VDD.
  • GND — CR2032(−), MGM210L pins 6 & 14, SHT40 VSS, all caps, SWD header GND.
  • SDA — MGM210L PC01 (pin 8), SHT40 SDA (pin 1), pull-up R1.
  • SCL — MGM210L PC00 (pin 7), SHT40 SCL (pin 2), pull-up R2.
  • SWCLK (PA01) / SWDIO (PA02) / RESETn (pin 11) — MGM210L ↔ SWD header.
  • Unused module pins (PA03/PA04, PD00/PD01, PC02–PC05, DEC pin 5, DNC pin 12) are flagged no-connect. No RF net — the antenna is integrated in the module.

Pin numbering is datasheet-accurate: MGM210L per Data Sheet Rev 1.5 Table 6.1, SHT40 per Sensirion SHT4x §5.4 (1=SDA, 2=SCL, 3=VDD, 4=VSS). The footprint pad numbers match the symbol pin numbers, so they connect correctly.

Footprints

RefFootprint
U1mgm:MGM210LA22JNF — custom, from datasheet §8.2 Table 8.1 (see below)
U2Sensor_Humidity:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPad (official)
BT1Battery:BatteryHolder_Renata_SMTU2032-LF_1x2032 (SMD coin holder)
R1,R2Resistor_SMD:R_0402_1005Metric
C1Capacitor_SMD:C_0805_2012Metric (10 µF bulk)
C2,C3Capacitor_SMD:C_0402_1005Metric (100 nF)
J1Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical

The passive/battery/header sizes are sensible defaults for a coin-cell sensor — change them in the FOOTPRINTS dict in gen_sch.py if you prefer 0603, a different coin holder, or a Tag-Connect debug pad.

MGM210LA22JNF land pattern (gen_mgm_footprint.py)

The pads are datasheet-exact (positions/sizes from the MGM210L Data Sheet Rev 1.5, §8.2 Table 8.1): three castellated edges of 6 pads each — left/bottom 1.1 × 1.6 mm at 1.71 mm pitch, right (power) 1.3 × 3.3 mm at 1.90 mm pitch. Pad numbers match the module pinout. The silk/courtyard are an approximation of the 13.0 × 15.5 mm body (documentation only), with the top edge marked as the integrated-antenna keepout and the bottom-layer VDD test-point keepout at (2.65, 6.45). Verify against the datasheet before ordering.

PCB status (routed)

  • Board: 36.0 × 25.05 mm, 2 mm corner radius, 1.6 mm FR4, 2-layer.
  • Placement: MGM210L (U1) at the top edge with its antenna toward the board edge — the antenna end of the module overhangs the top board edge by ~2.6 mm (deliberate, for antenna clearance); CR2032 holder (BT1) on the back (B.Cu); SHT40 (U2) near the bottom edge for airflow; decoupling by U1's power pads; I²C pull-ups on the bus.
  • Ventilation: a through slot (~7.2 × 0.7 mm) is milled in the board directly at the SHT40 (U2) for faster RH response.
  • Antenna keepout: the GND pours on both layers stop 8 mm short of the top edge, keeping copper/ground clear of the integrated antenna (datasheet §7).
  • Ground pours: F.Cu + B.Cu, net GND.
  • Routing: complete. All six signal/power nets (SWCLK, SWDIO, RESETn, SDA, SCL, VDD) are routed on two layers; GND returns through the pours. Autorouted with Freerouting, then the three final hops into the SHT40 were hand-finished with vias so they approach the pads from outside the sensor keepout.
  • DRC: 0 copper errors — no shorts, clearance, or keepout violations, and 0 schematic-parity errors. Remaining reports are only: 7 GND "unconnected" (they close the instant zones are filled — headless tools don't fill zones) and 3 cosmetic warnings on the placed U1 (pin-1 silk dot, back-layer note, and a lib-mismatch) — all already fixed in mgm.pretty.

To finalise in KiCad

  1. Open the board and Fill All Zones (B) — this completes the GND net and clears the 7 GND ratsnest items.
  2. Update Footprints from Library (U1) — clears the 3 cosmetic warnings by pulling the corrected mgm:MGM210LA22JNF.
  3. Optional: review trace widths vs. peak TX current; re-run DRC. (The RH vent slot at U2 is already cut into the board — see "Ventilation" above.)

Library note

fp-lib-table / sym-lib-table register the project-local mgm libraries via ${KIPRJMOD} (portable). For the headless KiCad-MCP backend to also resolve the custom footprint, mgm was additionally added to the global KiCad 9 fp-lib-table (~/.config/kicad/9.0/fp-lib-table) with an absolute path — remove that line if you relocate the project.

Parts

9
QtyValueFootprintReferences
2100nFCapacitor_SMD:C_0402_1005MetricC2, C3
24.7kResistor_SMD:R_0402_1005MetricR1, R2
110uFCapacitor_SMD:C_0805_2012MetricC1
1CR2032Battery:BatteryHolder_Renata_SMTU2032-LF_1x2032BT1
1GND RES DIO CLK VDDConnector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_VerticalJ1
1MGM210LA22JNFmgm:MGM210LA22JNFU1
1SHT40Sensor_Humidity:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPadU2

Questions

How big is the Mgm210l sensor PCB?

It measures 36 × 25 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mgm210l sensor use?

9 parts, built around the CR2032. 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 Mgm210l sensor KiCad files?

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

Can I use the Mgm210l sensor design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers333.4 × 149.9 mmOmega Mainboard, the printed circuit board in 3D

    Omega Mainboard

    skiselev/omega

    Omega Home Computer

    248 parts459GPL-3.0
  • 2 layers17.2 × 30.4 mmWeigand, the printed circuit board in 3D

    Weigand

    linklayer/BLEKey

    A Bluetooth Low Energy device for interfacing with Wiegand

    17 parts268
  • 4 layers188 × 188 mmITX Llama, the printed circuit board in 3D

    ITX Llama

    eivindbohler/itxllama

    422 parts246GPL-3.0
  • 2 layers61 × 36.8 mmKeebcard, the printed circuit board in 3D

    Keebcard

    rsheldiii/Keebcard

    Home of the KeebCard project - Kicad files, code, and more!

    15 parts112
  • 2 layers59.2 × 41 mmBluey, the printed circuit board in 3D

    Bluey

    electronut/ElectronutLabs-bluey

    Nordic nRF52832 BLE development board with sensors.

    79 parts96
  • 2 layers35 × 35 mmQron0b, the printed circuit board in 3D

    Qron0b

    qewer33/qron0b

    a sleek and low-power binary wristwatch

    35 parts62GPL-3.0
  • 2 layers90 × 89.4 mm38-04-usb sleuth, the printed circuit board in 3D

    38-04-usb sleuth

    smaroukis/usb-sleuth

    USB cable continuity tester ++

    68 parts61
  • 2 layers170.2 × 100 mmZ80-SBC, the printed circuit board in 3D

    Z80-SBC

    skiselev/zeta_sbc

    Zeta SBC is an Zilog Z80 based single board computer. It is inspired by Ampro Little Board Z80 and N8VEM project. Zeta SBC is software compatible with RomWBW Firmware

    75 parts53GPL-3.0