From 3d9633a56cbf4520c81926d9229053563123657f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 5 Nov 2022 20:12:41 +0100 Subject: [PATCH] Different Sensor access, should prevent overheating/wrong measurements. --- src/modules/Telemetry/Sensor/BME280Sensor.cpp | 9 +++++++++ src/modules/Telemetry/Sensor/BMP280Sensor.cpp | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/src/modules/Telemetry/Sensor/BME280Sensor.cpp b/src/modules/Telemetry/Sensor/BME280Sensor.cpp index 15ec18007..4b6a50091 100644 --- a/src/modules/Telemetry/Sensor/BME280Sensor.cpp +++ b/src/modules/Telemetry/Sensor/BME280Sensor.cpp @@ -16,6 +16,14 @@ int32_t BME280Sensor::runOnce() { return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS; } status = bme280.begin(nodeTelemetrySensorsMap[sensorType]); + + bme280.setSampling( Adafruit_BME280::MODE_FORCED, + Adafruit_BME280::SAMPLING_X1, // Temp. oversampling + Adafruit_BME280::SAMPLING_X1, // Pressure oversampling + Adafruit_BME280::SAMPLING_X1, // Humidity oversampling + Adafruit_BME280::FILTER_OFF, + Adafruit_BME280::STANDBY_MS_1000); + return initI2CSensor(); } @@ -23,6 +31,7 @@ void BME280Sensor::setup() { } bool BME280Sensor::getMetrics(Telemetry *measurement) { DEBUG_MSG("BME280Sensor::getMetrics\n"); + bme280.takeForcedMeasurement(); measurement->variant.environment_metrics.temperature = bme280.readTemperature(); measurement->variant.environment_metrics.relative_humidity = bme280.readHumidity(); measurement->variant.environment_metrics.barometric_pressure = bme280.readPressure() / 100.0F; diff --git a/src/modules/Telemetry/Sensor/BMP280Sensor.cpp b/src/modules/Telemetry/Sensor/BMP280Sensor.cpp index 4fecdf1a8..917c40d6f 100644 --- a/src/modules/Telemetry/Sensor/BMP280Sensor.cpp +++ b/src/modules/Telemetry/Sensor/BMP280Sensor.cpp @@ -16,6 +16,13 @@ int32_t BMP280Sensor::runOnce() { return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS; } status = bmp280.begin(nodeTelemetrySensorsMap[sensorType]); + + bmp280.setSampling( Adafruit_BMP280::MODE_FORCED, + Adafruit_BMP280::SAMPLING_X1, // Temp. oversampling + Adafruit_BMP280::SAMPLING_X1, // Pressure oversampling + Adafruit_BMP280::FILTER_OFF, + Adafruit_BMP280::STANDBY_MS_1000); + return initI2CSensor(); } @@ -23,6 +30,7 @@ void BMP280Sensor::setup() { } bool BMP280Sensor::getMetrics(Telemetry *measurement) { DEBUG_MSG("BMP280Sensor::getMetrics\n"); + bmp280.takeForcedMeasurement(); measurement->variant.environment_metrics.temperature = bmp280.readTemperature(); measurement->variant.environment_metrics.barometric_pressure = bmp280.readPressure() / 100.0F;