mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-21 04:22:22 +00:00

* 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>
43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#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);
|
|
} |