Barometer
Module ID: 3 (MODULE_BAROMETER)
Sensor: BMP581 (Bosch)
Moduł barometru. Dostarcza ciśnienie atmosferyczne i temperaturę. Stacja bazowa posiada 4 czujniki — reszta urządzeń 1.
Data Frame
Header
| Header (12B) | |||||
| Module ID | Flags | Frame Nr | Sample Count | Timestamp First | Timestamp Last Δ |
| 1B | 1B | 1B | 1B | 5B LE | 3B LE |
| byte 0 | byte 1 | byte 2 | byte 3 | byte 4–8 | byte 9–11 |
| Pole | Wartość |
|---|---|
| Module ID | 3 |
| Flags | Patrz sekcja Flagi |
Flagi
| Bit | Pole | Opis |
|---|---|---|
| 7 | FLAG_ERROR |
Przynajmniej jeden czujnik zwrócił błąd odczytu. Nieudane czujniki mają zerowe dane w payloadzie. |
| 1–6 | Reserved | — |
| 0 | Multi-sensor | 0 = pojedynczy czujnik, 1 = dane z 4 czujników (Base Station) |
Payload
Pojedynczy czujnik (flags bit 0 = 0)
Każda próbka składa się z 5 bajtów (3B pressure + 2B temperature):
| Pressure [cPa] | Temperature [0.01°C] | |||
| XLSB | LSB | MSB | LSB | MSB |
| 1B | 1B | 1B | 1B | 1B |
| byte 0 | byte 1 | byte 2 | byte 3 | byte 4 |
| Pole | Typ | Jednostka | Przelicznik |
|---|---|---|---|
| Pressure | uint24 LE |
cPa (centi-Pascal) | ÷ 100 → Pa |
| Temperature | int16 LE |
0.01°C | ÷ 100 → °C |
Base Station — 4 czujniki (flags bit 0 = 1)
Każda próbka składa się z 20 bajtów (4 × 5B):
| Base Station — 4 × Barometer (20B) | |||
| sensor 0 | sensor 1 | sensor 2 | sensor 3 |
| 5B | 5B | 5B | 5B |
| byte 0–4 | byte 5–9 | byte 10–14 | byte 15–19 |
Parsowanie (TypeScript)
function parsePressure(b0: number, b1: number, b2: number): number {
const cpa = b0 | (b1 << 8) | (b2 << 16);
return cpa / 100; // Pa
}
function parseTemperature(b0: number, b1: number): number {
let raw = b0 | (b1 << 8);
if (raw & 0x8000) raw -= 0x10000; // sign extend int16
return raw / 100; // °C
}
Błąd odczytu
Gdy FLAG_ERROR (bit 7 flags) jest ustawiony, przynajmniej jeden czujnik zwrócił błąd.
Nieudane czujniki mają wartości 0 w swoim slocie payloadu (0 Pa, 0°C).
Control
Klucze konfiguracyjne (uniwersalne)
Barometr obsługuje następujące klucze konfiguracji sprzętowej:
| Key | Wartość | Typ | Opis |
|---|---|---|---|
KEY_CFG_OVERSAMPLING |
0x13 |
SET/GET | Mnożnik nadpróbkowania: 1, 2, 4, 8, 16, ... (uint8_t) |
KEY_CFG_FILTER |
0x14 |
SET/GET | Siła filtra IIR: 0=Wyłączony, 1=Słaby, 2=Silny (uint8_t) |
Universal keys
KEY_CTRL_INFO(0x01) — informacje o moduleKEY_CTRL_ENABLE(0x02) — włącz/wyłącz moduł