firmware: add persistent level calibration

This commit is contained in:
2026-07-17 02:37:49 -06:00
parent fb2ca464b9
commit 4f96902068
9 changed files with 212 additions and 9 deletions
@@ -3,6 +3,7 @@
#include "imu.h"
#include "rs485_transport.h"
#include "sensor_node_config.h"
#include "calibration.h"
HardwareSerial gpsSerial(0), rs485Serial(1);
ImuState imuState;
@@ -13,16 +14,21 @@ void setup() {
Serial.begin(115200); delay(250);
Serial.println("XIAO ESP32-C6 sensor node booting");
initGps(gpsSerial); initRs485(rs485Serial);
initLevelCalibration();
imuState.online = initImu();
Serial.println(imuState.online ? "BNO086 ready" : "BNO086 not detected");
}
void loop() {
updateGps(gpsSerial, gpsState); updateImu(imuState);
pollRs485Commands(rs485Serial, imuState);
String calibrationResult;
if (updateLevelCalibration(imuState, calibrationResult)) {
publishCalibrationResult(rs485Serial, calibrationResult);
}
unsigned long now = millis();
if (now - lastTelemetryMs >= TELEMETRY_INTERVAL_MS) {
publishSensorStatus(rs485Serial, imuState, gpsState); lastTelemetryMs = now;
}
delay(1);
}