diff --git a/src/modules/Telemetry/PowerTelemetry.cpp b/src/modules/Telemetry/PowerTelemetry.cpp index 435859c91..025e6b858 100644 --- a/src/modules/Telemetry/PowerTelemetry.cpp +++ b/src/modules/Telemetry/PowerTelemetry.cpp @@ -22,7 +22,15 @@ #include "graphics/ScreenFonts.h" #include -#if __has_include() +namespace graphics +{ +extern void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const char *titleStr); +} + + +#include "Sensor/nullSensor.h" + +#if __has_include() #include "Sensor/ADS1X15Sensor.h" ADS1X15Sensor ads1x15Sensor; #else @@ -49,8 +57,8 @@ int32_t PowerTelemetryModule::runOnce() without having to configure it from the PythonAPI or WebUI. */ - // moduleConfig.telemetry.power_measurement_enabled = 1; - // moduleConfig.telemetry.power_screen_enabled = 1; + moduleConfig.telemetry.power_measurement_enabled = 1; + moduleConfig.telemetry.power_screen_enabled = 1; // moduleConfig.telemetry.power_update_interval = 45; if (!(moduleConfig.telemetry.power_measurement_enabled)) { @@ -83,6 +91,9 @@ int32_t PowerTelemetryModule::runOnce() result = max17048Sensor.isInitialized() ? 0 : max17048Sensor.runOnce(); if (ads1x15Sensor.hasSensor()) result = ads1x15Sensor.isInitialized() ? 0 : ads1x15Sensor.runOnce(); + if (!ads1x15Sensor.hasSensor()) { + LOG_INFO("ADS1X15 not found"); + } } // it's possible to have this module enabled, only for displaying values on the screen. @@ -215,6 +226,7 @@ bool PowerTelemetryModule::getPowerTelemetry(meshtastic_Telemetry *m) if (max17048Sensor.hasSensor()) valid = max17048Sensor.getMetrics(m); if (ads1x15Sensor.hasSensor()) + LOG_INFO("Getting ADS1X15 sensor"); valid = ads1x15Sensor.getMetrics(m); #endif diff --git a/src/modules/Telemetry/Sensor/ADS1X15Sensor.cpp b/src/modules/Telemetry/Sensor/ADS1X15Sensor.cpp index deaf22619..b51a574d9 100644 --- a/src/modules/Telemetry/Sensor/ADS1X15Sensor.cpp +++ b/src/modules/Telemetry/Sensor/ADS1X15Sensor.cpp @@ -1,11 +1,11 @@ #include "configuration.h" -#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include() +#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include() #include "../mesh/generated/meshtastic/telemetry.pb.h" #include "ADS1X15Sensor.h" #include "TelemetrySensor.h" -#include +#include ADS1X15Sensor::ADS1X15Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_ADS1X15, "ADS1X15") {} @@ -23,7 +23,7 @@ int32_t ADS1X15Sensor::runOnce() void ADS1X15Sensor::setup() {} -struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch) +struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(uint8_t ch) { struct _ADS1X15Measurement measurement; @@ -32,7 +32,7 @@ struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch) double voltage_range = 6.144; // Get value with full range - uint16_t value = ads.readADC_SingleEnded(ch); + uint16_t value = ads1x15.readADC_SingleEnded(ch); // Dynamic gain, to increase resolution of low voltage values // If value is under 4.096v increase the gain depending on voltage @@ -72,8 +72,7 @@ struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch) value = ads1x15.readADC_SingleEnded(ch); } - reading = (float)value / 32768 * voltage_range; - measurement.voltage = reading; + measurement.voltage = (float)value / 32768 * voltage_range; return measurement; } @@ -84,7 +83,7 @@ struct _ADS1X15Measurements ADS1X15Sensor::getMeasurements() // ADS1X15 has 4 channels starting from 0 for (int i = 0; i < 4; i++) { - measurements.measurements[i] = getMeasurement((ads1x15_ch_t)i); + measurements.measurements[i] = getMeasurement(i); } return measurements; diff --git a/src/modules/Telemetry/Sensor/ADS1X15Sensor.h b/src/modules/Telemetry/Sensor/ADS1X15Sensor.h index ca3422736..469dab945 100644 --- a/src/modules/Telemetry/Sensor/ADS1X15Sensor.h +++ b/src/modules/Telemetry/Sensor/ADS1X15Sensor.h @@ -1,16 +1,21 @@ #include "configuration.h" -#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include() +#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include() #include "../mesh/generated/meshtastic/telemetry.pb.h" #include "TelemetrySensor.h" -#include "VoltageSensor.h" -#include +#include -class ADS1X15Sensor : public TelemetrySensor, VoltageSensor +class ADS1X15Sensor : public TelemetrySensor { private: - Adafruit_ADS1015 ads1x15; + Adafruit_ADS1X15 ads1x15; + + // get a single measurement for a channel + struct _ADS1X15Measurement getMeasurement(uint8_t ch); + + // get all measurements for all channels + struct _ADS1X15Measurements getMeasurements(); protected: virtual void setup() override; @@ -21,4 +26,13 @@ class ADS1X15Sensor : public TelemetrySensor, VoltageSensor virtual bool getMetrics(meshtastic_Telemetry *measurement) override; }; +struct _ADS1X15Measurement { + float voltage; +}; + +struct _ADS1X15Measurements { + // ADS1X15 has 4 channels + struct _ADS1X15Measurement measurements[4]; +}; + #endif \ No newline at end of file