BMP581 ("Pressure Sensor") Molecule — Hardware Reference
Tiny (~8×8 mm) 4-corner-pin breakout for the Bosch BMP581 barometric pressure sensor. Upstream folder is named generically (Pressure Sensor) — the IC is explicitly a BMP581 (per BOM and silk).
- Source: adom-inc/bosch-molecules/Pressure Sensor — imported 2026-04-17
- KiCad project:
Pressure Sensor.kicad_pro - Wiki page: molecules/pressure-sensor-876000 — silk/title is "Pressure Sensor" (generic — import stub from 2026-03-02), but the IC is explicitly a BMP581
- Board: 4 corner through-hole mount-pins + 1 side castellation for INT, single-sided assembly
- IC: BMP581 (Bosch QFN-10, 2.0 × 2.0 × 0.75 mm, U1)
Component summary (from Pressure Sensor/production/bom.csv)
| Ref | Part | LCSC | Function |
|---|---|---|---|
| U1 | BMP581 | C5362283 | Barometric pressure sensor |
| C1 | 100 nF 0402 | C1525 | VDD decoupling |
| D1 | LED 0603 | C2290 | Power indicator |
| R5 | 510 Ω 0402 | C25123 | LED current limit |
| R1 | 10 kΩ 0402 | C25744 | SDO pull-up → 3.3 V (→ address 0x47) |
| R3 | 10 kΩ 0402 | C25744 | CSB pull-up → 3.3 V (→ I²C mode) |
| R2 | 10 kΩ 0402 | — | DNP (would pull SDO → GND for address 0x46) |
| R4 | 10 kΩ 0402 | — | DNP (would pull CSB → GND for SPI mode) |
R1/R2 and R3/R4 are a configure-once DNP pair. On the shipped board, R1 and R3 are populated; R2 and R4 are not. Address and interface are therefore hard-set — no jumpers, no user action.
External contact map
| Ref | Silk | Net | Kind | Role |
|---|---|---|---|---|
| MP101 | 3.3V | +3.3V | mount | VDD / VDDIO (shared) |
| MP102 | GND | GND | mount | Ground |
| MP103 | SCL | SCK | mount | I²C SCL (silk uses I²C naming; net uses SPI naming — same pad, dual-protocol) |
| MP104 | SDA | SDI | mount | I²C SDA (silk uses I²C naming; net uses SPI naming — same pad, dual-protocol) |
| MC101 | INT | INT | contact | Interrupt output |
I²C address (fixed via R1/R2 DNP pair)
| R-pair populated | SDO tied to | I²C address |
|---|---|---|
| R1 fitted, R2 DNP (as shipped) | +3.3 V | 0x47 (demo firmware target ✓) |
| R2 fitted, R1 DNP | GND | 0x46 |
The demo firmware expects 0x47 — no action needed.
Interface mode (fixed via R3/R4 DNP pair)
| R-pair populated | CSB tied to | Mode |
|---|---|---|
| R3 fitted, R4 DNP (as shipped) | +3.3 V | I²C (demo target ✓) |
| R4 fitted, R3 DNP | GND | SPI (4-wire) |
Again — no action needed on the shipped board.
Power
| Rail | Voltage | Source |
|---|---|---|
| VDD / VDDIO | 1.71–3.6 V (3.3 V in demo) | Host via MP101 |
Single rail (VDD = VDDIO on this board). Typical active current 70 µA in normal mode — lowest draw of any sensor in the demo. Rail headroom is a non-issue.
Interrupt
MC101 (silk INT) is the BMP581's programmable interrupt output. Default polarity / drive mode is set at init (firmware/sensors/bmp581.c). Leave floating if unused.
Wiring to the Stationary RM2 I²C bus
BMP581 MP101 (3.3V) ──── RM2 +3V3
BMP581 MP102 (GND) ──── RM2 GND
BMP581 MP104 (SDA) ──── RM2 GPIO4 (I²C0 SDA)
BMP581 MP103 (SCL) ──── RM2 GPIO5 (I²C0 SCL)
BMP581 MC101 (INT) ──── (optional)
Gotchas for firmware bring-up
- No user-configurable jumpers on this board. Address is 0x47, mode is I²C — both set by populated-vs-DNP resistors. If you see a probe NACK at 0x47, the chip is either not powered, not connected to the bus, or a rework has changed R1/R2 or R3/R4 state. Check with a multimeter on SDO/CSB before debugging further.
- 4.7 kΩ I²C pull-ups are off-board (provided by the stationary RM2 carrier).
- 70 µA typical — the BMP581 is effectively a rounding error on the 3.3 V rail's budget.
- Silk pin labels use I²C names (
SDA,SCL), but the underlying nets are named in SPI terms (SDI,SCK) because the QFN-10 pads are dual-protocol. Don't let that confuse you.

