mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-21 02:02:23 +00:00
INA3221 / Power Telemetry Payload Variant Implementation (#2916)
* INA3221 / Power Telemetry Variant Implementation modified: platformio.ini modified: src/configuration.h modified: src/detect/ScanI2C.h modified: src/detect/ScanI2CTwoWire.cpp modified: src/main.cpp modified: src/modules/Modules.cpp new file: src/modules/Telemetry/PowerTelemetry.cpp new file: src/modules/Telemetry/PowerTelemetry.h new file: src/modules/Telemetry/Sensor/INA3221Sensor.cpp new file: src/modules/Telemetry/Sensor/INA3221Sensor.h modified: src/mqtt/MQTT.cpp * ifdef for portduino / linux native modified: src/modules/Telemetry/PowerTelemetry.cpp * try #2 modified: src/modules/Modules.cpp modified: src/modules/Telemetry/PowerTelemetry.cpp deleted: variants/xiao_ble/1.0.0/libraries/SPI/SPI.cpp * try #3 modified: src/modules/Modules.cpp * try #4 modified: src/modules/Telemetry/PowerTelemetry.cpp * try #5? modified: src/modules/Telemetry/PowerTelemetry.cpp * try #6 modified: src/modules/Telemetry/PowerTelemetry.cpp --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
committed by
GitHub
parent
4a6cc8fd8c
commit
f57020412e
43
src/modules/Telemetry/Sensor/INA3221Sensor.cpp
Normal file
43
src/modules/Telemetry/Sensor/INA3221Sensor.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
#include "INA3221Sensor.h"
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "TelemetrySensor.h"
|
||||
#include "configuration.h"
|
||||
#include <INA3221.h>
|
||||
|
||||
INA3221Sensor::INA3221Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_INA3221, "INA3221"){};
|
||||
|
||||
int32_t INA3221Sensor::runOnce()
|
||||
{
|
||||
LOG_INFO("Init sensor: %s\n", sensorName);
|
||||
if (!hasSensor()) {
|
||||
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
|
||||
}
|
||||
if (!status) {
|
||||
ina3221.setAddr(INA3221_ADDR42_SDA);
|
||||
ina3221.begin();
|
||||
status = true;
|
||||
} else {
|
||||
status = true;
|
||||
}
|
||||
return initI2CSensor();
|
||||
};
|
||||
|
||||
void INA3221Sensor::setup() {}
|
||||
|
||||
bool INA3221Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||
{
|
||||
measurement->variant.environment_metrics.voltage = ina3221.getVoltage(INA3221_CH1);
|
||||
measurement->variant.environment_metrics.current = ina3221.getCurrent(INA3221_CH1);
|
||||
measurement->variant.power_metrics.ch1_voltage = ina3221.getVoltage(INA3221_CH1);
|
||||
measurement->variant.power_metrics.ch1_current = ina3221.getCurrent(INA3221_CH1);
|
||||
measurement->variant.power_metrics.ch2_voltage = ina3221.getVoltage(INA3221_CH2);
|
||||
measurement->variant.power_metrics.ch2_current = ina3221.getCurrent(INA3221_CH2);
|
||||
measurement->variant.power_metrics.ch3_voltage = ina3221.getVoltage(INA3221_CH3);
|
||||
measurement->variant.power_metrics.ch3_current = ina3221.getCurrent(INA3221_CH3);
|
||||
return true;
|
||||
}
|
||||
|
||||
uint16_t INA3221Sensor::getBusVoltageMv()
|
||||
{
|
||||
return lround(ina3221.getVoltage(INA3221_CH1) * 1000);
|
||||
}
|
||||
Reference in New Issue
Block a user