mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-29 14:10:53 +00:00
environment: add DPS310 high-accuracy barometer (#6237)
* dps310: initial scan support * dps310 sensor support * new protobufs * new protobufs * address cr --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
45
src/modules/Telemetry/Sensor/DPS310Sensor.cpp
Normal file
45
src/modules/Telemetry/Sensor/DPS310Sensor.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "DPS310Sensor.h"
|
||||
#include "TelemetrySensor.h"
|
||||
#include <Adafruit_DPS310.h>
|
||||
|
||||
DPS310Sensor::DPS310Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_DPS310, "DPS310") {}
|
||||
|
||||
int32_t DPS310Sensor::runOnce()
|
||||
{
|
||||
LOG_INFO("Init sensor: %s", sensorName);
|
||||
if (!hasSensor()) {
|
||||
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
|
||||
}
|
||||
status = dps310.begin_I2C(nodeTelemetrySensorsMap[sensorType].first, nodeTelemetrySensorsMap[sensorType].second);
|
||||
|
||||
dps310.configurePressure(DPS310_1HZ, DPS310_4SAMPLES);
|
||||
dps310.configureTemperature(DPS310_1HZ, DPS310_4SAMPLES);
|
||||
dps310.setMode(DPS310_CONT_PRESTEMP);
|
||||
|
||||
return initI2CSensor();
|
||||
}
|
||||
|
||||
void DPS310Sensor::setup() {}
|
||||
|
||||
bool DPS310Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||
{
|
||||
sensors_event_t temp, press;
|
||||
|
||||
if (!dps310.getEvents(&temp, &press)) {
|
||||
LOG_DEBUG("DPS310 getEvents no data");
|
||||
return false;
|
||||
}
|
||||
|
||||
measurement->variant.environment_metrics.has_temperature = true;
|
||||
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||
measurement->variant.environment_metrics.temperature = temp.temperature;
|
||||
measurement->variant.environment_metrics.barometric_pressure = press.pressure;
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
23
src/modules/Telemetry/Sensor/DPS310Sensor.h
Normal file
23
src/modules/Telemetry/Sensor/DPS310Sensor.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "TelemetrySensor.h"
|
||||
#include <Adafruit_DPS310.h>
|
||||
|
||||
class DPS310Sensor : public TelemetrySensor
|
||||
{
|
||||
private:
|
||||
Adafruit_DPS310 dps310;
|
||||
|
||||
protected:
|
||||
virtual void setup() override;
|
||||
|
||||
public:
|
||||
DPS310Sensor();
|
||||
virtual int32_t runOnce() override;
|
||||
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user