Skip to content

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 (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 module
  • KEY_CTRL_ENABLE (0x02) — włącz/wyłącz moduł