- bmp280.c: detect BME280 (chip_id 0x60) vs BMP280 (0x58) at init - bmp280.c: read humidity calibration (dig_H1–H6) from 0xA1 and 0xE1–0xE7 - bmp280.c: set ctrl_hum (0xF2, osrs_h=×16) before ctrl_meas — hardware req - bmp280.c: add bmp280_read_humidity() — float compensation (FPv5-SP FPU), returns %RH × 10; -1 if chip is BMP280 or not initialised - bmp280.h: add bmp280_read_humidity() declaration + timeout note - main.c: baro_ok → baro_chip (stores chip_id for BME280 detection) - main.c: telemetry adds t (°C×10), pa (hPa×10) for all barometers; adds h (%RH×10) for BME280 only; alt unchanged - ui/index.html: hidden TEMP/HUMIDITY/PRESSURE rows, revealed on first packet containing t/h/pa fields; values shown with 1 dp I2C hang safety: all HAL_I2C_Mem_Read/Write use 100ms timeouts, so missing hardware (NAK) returns in <1ms, not after a hang. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge pull request 'feat(bd-a2j): Sensor driver integration — RealSense D435i + RPLIDAR A1M8' (#17) from sl-perception/bd-a2j-sensor-drivers into main
Description
SaltyLab self-balancing bot firmware (STM32F722)
Languages
Python
67.1%
C
11.4%
JavaScript
9.2%
OpenSCAD
7.8%
HTML
1.5%
Other
2.9%