

Mgm210l sensor
🐭 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
1README
hardware/README.mdHardware — 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.)
| File | What |
|---|---|
mgm210l_sensor.kicad_pro | KiCad project — open this in KiCad. |
mgm210l_sensor.kicad_sch | Schematic (generated by gen_sch.py). |
mgm210l_sensor.kicad_pcb | PCB — placement + antenna keepout + GND pours + full routing. |
mgm210l_sensor.pdf | Rendered schematic (quick view, no KiCad needed). |
mgm210l_sensor_2d_view.png | Rendered PCB (top view). |
mgm210l_sensor_enclosure_drawing.pdf | Dimensioned mechanical drawing for 3D-printed enclosure design (outline, placement, Z stack-up). |
gen_sch.py | Generator — schematic + mgm.kicad_sym are produced from this. |
gen_mgm_footprint.py | Generator — the custom MGM210L land pattern. |
gen_enclosure_drawing.py | Generator — the enclosure drawing PDF (parses the PCB directly). |
mgm.kicad_sym | Custom symbol library (MGM210L, SHT40, SWD). |
mgm.pretty/ | Custom footprint library (MGM210LA22JNF land pattern). |
sym-lib-table / fp-lib-table | Project 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 infab/.
Regenerate + re-export
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
| Ref | Footprint |
|---|---|
| U1 | mgm:MGM210LA22JNF — custom, from datasheet §8.2 Table 8.1 (see below) |
| U2 | Sensor_Humidity:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPad (official) |
| BT1 | Battery:BatteryHolder_Renata_SMTU2032-LF_1x2032 (SMD coin holder) |
| R1,R2 | Resistor_SMD:R_0402_1005Metric |
| C1 | Capacitor_SMD:C_0805_2012Metric (10 µF bulk) |
| C2,C3 | Capacitor_SMD:C_0402_1005Metric (100 nF) |
| J1 | Connector_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
- Open the board and Fill All Zones (B) — this completes the GND net and clears the 7 GND ratsnest items.
- Update Footprints from Library (U1) — clears the 3 cosmetic warnings by
pulling the corrected
mgm:MGM210LA22JNF. - 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C3 |
| 2 | 4.7k | Resistor_SMD:R_0402_1005Metric | R1, R2 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | CR2032 | Battery:BatteryHolder_Renata_SMTU2032-LF_1x2032 | BT1 |
| 1 | GND RES DIO CLK VDD | Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical | J1 |
| 1 | MGM210LA22JNF | mgm:MGM210LA22JNF | U1 |
| 1 | SHT40 | Sensor_Humidity:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPad | U2 |
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 mm

- 2 layers17.2 × 30.4 mm

- 4 layers188 × 188 mm

- 2 layers61 × 36.8 mm

- 2 layers59.2 × 41 mm

- 2 layers35 × 35 mm

- 2 layers90 × 89.4 mm

- 2 layers170.2 × 100 mm

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