

Ble door sensor
KiCad project for the homesensors BLE door sensor — a custom small PCB with STM32WB09KEVx + TCS40DPR Hall sensor + active-low LED + CR2032 holder.
- Size
- 25.4 × 38.1 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 32
- Nets
- 34
- Pads
- 108
- Tracks, vias
- 182, 55
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 14 May 2026
- Updated
- 15 May 2026
Overview
Ble door sensor is an open-source printed circuit board by homesensors, from the homesensors/hardware repository on GitHub. It is a 2-layer board of 25.4 × 38.1 mm with 32 parts on 34 nets, routed with 182 tracks and 55 vias.
It is built around the MLPF-NRG-01D3, TCS40DPR,LF and 2450AT18A0100001E, with the CR2032 and NX2016SA-32M-EXS00A-CS06465 among its other parts. Its parts include 13 capacitors, 3 resistors, 3 ICs, 2 inductors and 2 crystals. It belongs with the radio and wireless and sensors and measurement boards and the STM32 boards of this library.
Main components
5MLPF-NRG-01D3
WFBGA-6-40℃~+105℃ 1.1dB 50Ω Low Pass WFBGA-6 RF Filters ROHSSTMicroelectronicsRF FiltersTCS40DPR,LF
SOT-23F-40℃~+85℃ 19uA 1mA 2.3V~5.5V 25Hz 2mT 3.4mT Push-pull SOT-23F Hall Switches ROHSToshibaHall Switches2450AT18A0100001E
12060.5dBi 1.3mm 1.6mm 100MHz 2.4GHz 2W 3.2mm 50Ω Patch Antenna 1206 Antennas ROHSJohanson DielectricsAntennasCR2032
-- Unclassified goods ROHSMaxellUncategorisedNX2016SA-32M-EXS00A-CS06465
SMD2016-4P10pF 32MHz 60Ω Crystal Oscillator ±10ppm SMD2016-4P Crystals ROHSNDKCrystals
README
door_sensor/README.mdhomesensors / hardware / door_sensor
KiCad project for the homesensors BLE door sensor — a custom small
PCB with STM32WB09KEVx + TCS40DPR Hall sensor + active-low LED + CR2032
holder. Part of the homesensors
DIY smart-home sensor kit, and the first fabricated board in the
hardware repo's board family.

Revisions
| Tag | Status | What changed |
|---|---|---|
door_sensor-rev-a | Fabricated | Initial fab. Known issues: missing VDDA_VCAP 0.22 µF decoupling cap; no external battery-monitor divider. Both worked around by hand-rework on the prototype unit. |
door_sensor-rev-b | At fab | Folds in the VDDA_VCAP cap and the external battery-monitor divider (1 MΩ / 1 MΩ + 1 µF X7R, midpoint into PB1 = ADC1_VINP1) + JST-MX 4P expansion connector on PA8–PA11. |
The older tag names pcb-rev-a / pcb-rev-b still exist as aliases
pointing at the same commits — those were the door-sensor-only tags
from before the hardware repo grew to host multiple board projects.
New tags use the door_sensor-rev-* namespace going forward.
Check out a specific revision:
git checkout door_sensor-rev-a # or -rev-bWhat's in the repo
| Path | What |
|---|---|
ble_door_sensor.kicad_pro / .kicad_sch / .kicad_pcb | KiCad 7+ project files. |
ble_door_sensor.kicad_dru | Custom design rules. |
ble_door_sensor.csv | BOM exported from KiCad (informational). |
fab/ | (when generated) Ready-to-fab Gerber zip, drill files, pick-and-place CSV. |
bom/ | (when generated) BOM with LCSC / Mouser part numbers, suitable for direct order. |
TCS40DPR_STM32WB09_v9.kicad_sch | Legacy standalone schematic from an earlier exploration phase, kept for reference. |
Quick fab
- Tag:
git checkout door_sensor-rev-a(or whichever rev you want). - Open
ble_door_sensor.kicad_proin KiCad 7+. - PCB Editor → File → Plot → Gerber + drill files → submit to JLCPCB / PCBWay / OSH Park / Aisler.
- BOM: use
ble_door_sensor.csvwith the LCSC part numbers; most fabs will assemble in-house from this BOM directly.
The PCB is hand-solderable at 0603 / 0805 sizes but the WB09KEVx in QFN32 is best assembled by the fab.
Design notes
- MCU: STM32WB09KEVx (QFN32). On-chip 2.4 GHz BLE.
- Sensor: Toshiba TCS40DPR Hall (active-low, single-ended).
Magnet absent = sensor reads
1= door open. - LED: active-low, push-pull, on PA1, with a 510 Ω series resistor.
- BLE matching: 20 pF series cap → MLPF-NRG-01D3 → 50 Ω microstrip → chip antenna (Johanson 2450AT18A0100E or compatible).
- Battery monitor: external divider 1 MΩ / 1 MΩ + 1 µF X7R, midpoint into PB1 = ADC1_VINP1. Quiescent current ~1.5 µA. (Rev B; hand-soldered on Rev A.)
- VDDA_VCAP: 0.22 µF decoupling on pin 28. (Rev B; hand-soldered on Rev A.)
- HSE crystal: 32 MHz. Firmware sets
XTAL_StartupTimeto 800 µs.
For the long-form design history, including the bring-up gotchas (PB3
JTDO default pull-up, ADC sample-and-hold droop with too-small
reservoir cap), see the firmware repo's HANDOVER.md at
homesensors/firmware.
Bring-up / known-good checks
After fabricating a new board:
- Visual / DMM: check VDDA_VCAP cap (pin 28) is populated, no solder bridges around the QFN32, divider resistors read ~1 MΩ each.
- Power-on: cell + LED behaviour matches spec — LED blinks at ~1 Hz heartbeat in boot phase when magnet absent.
- BLE smoke: with nRF Connect or
bluetoothctl scan on, the device should appear with service-data UUID 0xFCD2. Service data byte sequence starts with44 00 …. - HA discovery: HA's BTHome integration auto-discovers the device
within seconds. Confirm an entity tree with
opening,battery,packet_id,timestamp.
License
CERN-OHL-P-2.0 — see LICENSE at the hardware-repo root. Permissive open hardware: fork the design, fab it, sell physical units, no copyleft strings. Just preserve the licence + notices.
Related repos
homesensors/sensorkit— umbrella, protocol spec, build guide.homesensors/firmware— STM32WB09 firmware.homesensors/homeassist— HA add-on.
Parts
32| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 1uF | Capacitor_SMD:C_0402_1005Metric | C4, C8, C9 |
| 2 | 10pF | Capacitor_SMD:C_0402_1005Metric | C2, C3 |
| 2 | 1M | Resistor_SMD:R_0402_1005Metric | R2, R3 |
| 2 | 4.7uF | Capacitor_SMD:C_0402_1005Metric | C6, C11 |
| 1 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C12 |
| 1 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 0.22uF | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | 100nF | Capacitor_SMD:C_0201_0603Metric | C5 |
| 1 | 100nF | Capacitor_SMD:C_0402_1005Metric | C10 |
| 1 | 10uH | KiCad:LQM21DN220N00L | L2 |
| 1 | 20pF | Capacitor_SMD:C_0201_0603Metric | C1 |
| 1 | 22nH | KiCad:LQG15WH0N7B02D | L1 |
| 1 | 2450AT18A0100001E | Antennas:2450AT18A0100001E | ANT1 |
| 1 | 32.768KHz | KiCad:NX2012SA32768KSTDMUB1 | Y2 |
| 1 | 510 | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | CR2032 | KiCad:BATHLD001THM | BT1 |
| 1 | Conn_01x04_Pin | KiCad:JST_MX_4P-1_25 | J1 |
| 1 | GND | TestPoint:TestPoint_Pad_D2.5mm | TP5 |
| 1 | LED | LED_SMD:LED_0402_1005Metric | D1 |
| 1 | MLPF-NRG-01D3 | Library:CSPG_2025 | IC1 |
| 1 | NX2016SA-32M-EXS00A-CS06465 | KiCad:NX2016SA32MEXS00ACS06465 | Y1 |
| 1 | STM32WB09KEVx | KiCad:QFN50P500X500X100-33N-D | U1 |
| 1 | SWCLK | TestPoint:TestPoint_Pad_D2.5mm | TP2 |
| 1 | SWDIO | TestPoint:TestPoint_Pad_D2.5mm | TP1 |
| 1 | TCS40DPR,LF | KiCad:SOTFL95P240X88-3N | IC2 |
| 1 | VCC | TestPoint:TestPoint_Pad_D2.5mm | TP3 |
| 1 | nRST | TestPoint:TestPoint_Pad_D2.5mm | TP4 |
Questions
How big is the Ble door sensor PCB?
It measures 25.4 × 38.1 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Ble door sensor use?
32 parts, built around the MLPF-NRG-01D3, TCS40DPR,LF, 2450AT18A0100001E and 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 Ble door sensor KiCad files?
From the homesensors/hardware repository on GitHub, at the commit this page was made from: the board is door_sensor/ble_door_sensor.kicad_pcb and its schematic carrier_ble/carrier_ble.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Ble door sensor design in my own project?
Its repository states no licence, so its author keeps all rights: ask homesensors before reusing the design.
Similar boards
- 4 layers50 × 50 mm

- 6 layers29.2 × 14.3 mm

36mm PCB
Romeo-Lorenzo/DIY_Electromechanical_SmartWatch
I decided to mìhave my own take at a quartz watch by using two Miyota 2035 watch movements and a custom made case and PCB.
92 parts1 - 2 layers200 × 100 mm

Mobo
opulo-inc/lumenpnp-archive
This repository is a public archive of the LumenPnP Pick and Place (formerly Index) source material from the beginning in mid-2020 until May 2022. The current source can be found at https://github.com/opulo-inc/lumenpnp
88 parts6GPL-3.0 - 2 layers25.4 × 86 mm

Audio jon FO1146A9E2145
manhoosbilli1/tpa6110-stereo-amp-input-router
Stereo audio amplifier (TPA6110A2) with 74AHC1G66 analog input switching and op-amp signal conditioning
52 parts - 4 layers42 × 100 mm

LockBox
researchanddesire/assembly-docs
RAD unified assembly docs — ohai.researchanddesire.com
81 parts - 2 layers272.5 × 12 mm

- 2 layers85 × 85 mm

Core64 CB
ageppert/Core-64-Interactive-Core-Memory-Badge
64 bits of core memory and LEDs to interact with directly using a magnetic wand.
51 parts17GPL-3.0 - 6 layers64.2 × 17.3 mm

OpenRX panel rev2.2
OpenDrone-hw/OpenRX
OpenRX open-source ExpressLRS receiver family hub; board sources live in four dedicated hardware repositories.
254 parts489CERN-OHL-S-2.0