Skip to the content
2 layers55 × 22 mmBleriot sense, the printed circuit board in 3D

BleRiot Sense is a compact single-sensor BleRiot node built around a PY32F003L16S6TU microcontroller and a PAN2110 long-range 2.4 GHz radio. Its sensor input is configured at assembly time for one of four uses:

Size
55 × 22 mm
Copper layers
2
Thickness
1.6 mm
Parts
19
Nets
13
Pads
56
Tracks, vias
114, 68
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Aug 2026
Updated
18 Oct 2026

Overview

Bleriot sense is an open-source printed circuit board by burgrp, from the burgrp/bleriot-sense repository on GitHub. It is a 2-layer board of 55 × 22 mm with 19 parts on 13 nets, routed with 114 tracks and 68 vias.

It is built around the PAN2110P0AA, XC6206P332MR and BAT54S. Its parts include 4 capacitors, 3 ICs, 2 connectors, 2 crystals and 1 diode.

Main components

3

README

README.md

BleRiot Sense

BleRiot Sense is a compact single-sensor BleRiot node built around a PY32F003L16S6TU microcontroller and a PAN2110 long-range 2.4 GHz radio. Its sensor input is configured at assembly time for one of four uses:

  • A 10 kΩ B3950 NTC thermistor.
  • A pulse-output flow sensor such as the YF-B10.
  • A pressure sensor with a driven 0.5-5 V analog output.
  • An externally powered DS18B20 digital thermometer.

The assembly population and the firmware mode must agree. The hardware does not switch sensor modes electronically at runtime.

BleRiot Sense board front render BleRiot Sense board back with sensor-mode assembly table

Repository layout

PathDescription
board/bleriot-sense.kicad_proPY32F003L16S6TU hardware
fw/Importable Sense firmware and board-owned build profile
fw/cmd/dev/Local inventory and BleRiot CLI
ANALOG-INPUT.mdConfigurable input circuit, populations, calculations, protection, and layout
sub/hw-kicad/Shared KiCad symbols and footprints, included as a Git submodule

Sensor modes

ModeNode measurementRegistry value
NTCAveraged 12-bit ADC codeTemperature in °C
FlowRising-edge pulse countFlow in L/min with host calibration, otherwise frequency in Hz; cumulative pulse count
PressureAveraged 12-bit ADC codePressure in Pa with host calibration; otherwise sensor-output voltage in V
DS18B20Up to 20 signed Q12.4 scratchpad valuesTemperature registers in °C

See ANALOG-INPUT.md before assembling a board. It defines the required values for AR1, AR2, AR3, and AC1, including the two alternative flow-sensor output circuits.

Pressure and flow transfer functions depend on the exact sensor. Without host-only calibration, the hub exposes pressure input voltage or flow frequency. The local inventory selects flow mode for the connected ZJ-B10, publishing sense.flow in L/min and sense.pulses as a raw cumulative pulse count. It provisionally retains the earlier YF-B10 formula F = 6Q - 8; calibration against the ZJ-B10 is deferred. No pulses means zero flow. The external AR1 pull-up has been verified with an oscilloscope to produce clean 3.3 V pulses. See the firmware configuration for the calibration fields.

Firmware status

fw targets the PY32F003L16S6TU and uses PA0 for the universal sensor input. The NTC path has been verified end to end on hardware through the ADC, PAN2110 radio, MCP2210 hub dongle, BleRiot hub, conversion layer, and Registry. The single-sensor DS18B20 path has also been verified end to end through its 1-Wire bus and the same radio/Registry path; multidrop behavior still requires hardware validation. Flow and pressure support build and have host-side conversion coverage but still require mode-specific hardware tests.

DS18B20 firmware prints discovered ROM IDs over RTT at boot. A single sensor needs no configured ID; multidrop inventories map each temperature register to an explicit ID. See the firmware README for configuration and timing details.

The upstream TinyGo py32f003x6 target provides the required 1 KiB system stack. The firmware runs without a task scheduler. See the firmware README for pin assignments, first-boot option-byte handling, configuration, and memory constraints.

Getting started

Initialize the shared KiCad library after cloning:

sh
git submodule update --init --recursive

Open the hardware project in KiCad:

sh
kicad board/bleriot-sense.kicad_pro

Configure sensorMode in fw/cmd/dev/main.go, then test and build the firmware:

sh
go -C fw test ./...
go -C fw run ./cmd/dev node build --name sense

Flash with a supported SWD probe:

sh
go -C fw run ./cmd/dev node build --name sense --flash --rtt

With a Registry server running, start the hub in a separate terminal:

sh
go -C fw run ./cmd/dev hub --registry http://localhost:8080 --diagnostics rf

For an NTC-configured node, read live temperatures:

bash
export REGISTRY=http://localhost:8080
reg get sense.temperature --stay

Toolchain

  • KiCad 10 for the hardware projects.
  • Go 1.25.2 or newer for the firmware inventory, generator, tests, and hub.
  • TinyGo with the Puya py32f003x6 target.
  • pyOCD with the Puya CMSIS pack and a supported SWD probe.
  • An MCP2210/PAN2110 BleRiot hub dongle for RF operation.
  • The reg Registry service and CLI.

Parts

19
QtyValueFootprintReferences
41uCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C6
3100nCapacitor_SMD:C_0805_2012MetricAC1, C4, C7
110kResistor_SMD:R_0805_2012MetricAR1
116MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
14.02kResistor_SMD:R_0805_2012MetricAR2
16.49kResistor_SMD:R_0805_2012MetricAR3
1Antenna_ShieldRF_Antenna:Texas_SWRA117D_2.4GHz_LeftA1
1BAT54SPackage_TO_SOT_SMD:SOT-23D1
1INPUTConnector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ2
1PAN2110P0AAPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1POWERConnector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_2-G_1x02_P5.00mm_HorizontalJ1
1PY32F003L1xSxPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1SWDDrake:SWDX1
1XC6206P332MRPackage_TO_SOT_SMD:SOT-23-3U1

Similar boards

  • 2 layers40 × 16 mmDongle mcp2210, the printed circuit board in 3D

    Dongle mcp2210

    burgrp/bleriot

    BleRiot is a compact request/response protocol for reading and writing named integer registers on low-power RF nodes. A Linux hub polls the nodes and bridges their registers to an external Registry service.

    22 parts
  • 2 layers40 × 42 mmBleriot rs485, the printed circuit board in 3D

    Bleriot rs485

    burgrp/bleriot-rs485

    DIN rail mounted RS485 to WiFi bridge

    21 parts1
  • 2 layers60 × 62 mmCPG, the printed circuit board in 3D

    CPG

    burgrp/bleriot-CPG

    CPG is a mains-powered BleRiot node for controlling a circulation pump and a motorized 3-way or 4-way valve in floor-heating and radiator-heating circuits.

    39 parts
  • 2 layers314 × 27 mmBleriot REG6, the printed circuit board in 3D

    Bleriot REG6

    burgrp/bleriot-REG6

    REG6 is a six-channel solid-state-relay controller built around a PY32F030 and PAN2110. This repository contains the KiCad hardware and a standalone TinyGo/BleRiot module under fw/ that exposes one integer percentage…

    85 parts
  • 2 layers150 × 48 mmSSR5A, the printed circuit board in 3D

    SSR5A

    burgrp/bleriot-SSR5A

    10 channel mains switch

    66 parts
  • 2 layers77 × 51 mmAt32f455-bob, the printed circuit board in 3D

    At32f455-bob

    burgrp/hw-at32f455-bob

    66 parts
  • 2 layers50 × 35 mmFan switch, the printed circuit board in 3D

    Fan switch

    burgrp/hw-fan-switch

    12V DC Fan switch based on ESP8266

    23 parts

Questions

How big is the Bleriot sense PCB?

It measures 55 × 22 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bleriot sense use?

19 parts, built around the PAN2110P0AA, XC6206P332MR and BAT54S. 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 Bleriot sense KiCad files?

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

Can I use the Bleriot sense design in my own project?

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