ソースを参照

* Promicro: some refactors, minor fixes for INA3221 sensors

Scott Powell 1 年間 前
コミット
8007aad7a3
3 ファイル変更12 行追加21 行削除
  1. 0 6
      src/helpers/SensorManager.h
  2. 6 14
      variants/promicro/target.cpp
  3. 6 1
      variants/promicro/target.h

+ 0 - 6
src/helpers/SensorManager.h

@@ -8,12 +8,6 @@
 
 #define TELEM_CHANNEL_SELF   1   // LPP data channel for 'self' device
 
-#define TELEM_INA3221_ADDRESS 0x42      // INA3221 3 channel current, voltage, power sensor I2C address
-#define TELEM_INA3221_SHUNT_VALUE 0.100 // most variants will have a 0.1 ohm shunts
-#define TELEM_INA3221_SETTING_CH1 "INA3221 Channel 1"
-#define TELEM_INA3221_SETTING_CH2 "INA3221 Channel 2"
-#define TELEM_INA3221_SETTING_CH3 "INA3221 Channel 3"
-
 class SensorManager {
 public:
   double node_lat, node_lon;  // modify these, if you want to affect Advert location

+ 6 - 14
variants/promicro/target.cpp

@@ -75,34 +75,26 @@ mesh::LocalIdentity radio_new_identity() {
   return mesh::LocalIdentity(&rng);  // create new random identity
 }
 
-INA3221 INA_3221(TELEM_INA3221_ADDRESS, &Wire);
+static INA3221 INA_3221(TELEM_INA3221_ADDRESS, &Wire);
 
 bool PromicroSensorManager::begin() {
   if (INA_3221.begin() ) {
-    Serial.print("Found INA3221 at address ");
-    Serial.print(INA_3221.getAddress());
-    Serial.println();
-    Serial.print(INA_3221.getDieID(), HEX);
-    Serial.print(INA_3221.getManufacturerID(), HEX);
-    Serial.print(INA_3221.getConfiguration(), HEX);
-    Serial.println();
+    MESH_DEBUG_PRINTLN("Found INA3221 at address: %02X", INA_3221.getAddress());
+    MESH_DEBUG_PRINTLN("%04X %04X %04X", INA_3221.getDieID(), INA_3221.getManufacturerID(), INA_3221.getConfiguration());
 
     for(int i = 0; i < 3; i++) {
       INA_3221.setShuntR(i, TELEM_INA3221_SHUNT_VALUE);
     }
     INA3221initialized = true;
-  }
-  else {
+  } else {
     INA3221initialized = false;
-    Serial.print("INA3221 was not found at I2C address ");
-    Serial.print(TELEM_INA3221_ADDRESS, HEX);
-    Serial.println();
+    MESH_DEBUG_PRINTLN("INA3221 was not found at I2C address %02X", TELEM_INA3221_ADDRESS);
   }
   return true;
 }
 
 bool PromicroSensorManager::querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) {
-  if (requester_permissions && TELEM_PERM_ENVIRONMENT) {
+  if (requester_permissions & TELEM_PERM_ENVIRONMENT) {
     if (INA3221initialized) {
       for(int i = 0; i < 3; i++) {
         // add only enabled INA3221 channels to telemetry

+ 6 - 1
variants/promicro/target.h

@@ -23,13 +23,18 @@ void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
 void radio_set_tx_power(uint8_t dbm);
 mesh::LocalIdentity radio_new_identity();
 
+#define TELEM_INA3221_ADDRESS 0x42      // INA3221 3 channel current, voltage, power sensor I2C address
+#define TELEM_INA3221_SHUNT_VALUE 0.100 // most variants will have a 0.1 ohm shunts
+#define TELEM_INA3221_SETTING_CH1 "INA3221-1"
+#define TELEM_INA3221_SETTING_CH2 "INA3221-2"
+#define TELEM_INA3221_SETTING_CH3 "INA3221-3"
 
 class PromicroSensorManager: public SensorManager {
   bool INA3221initialized = false;
 
   // INA3221 channels in telemetry
   int INA3221_CHANNELS[NUM_SENSOR_SETTINGS] = {TELEM_CHANNEL_SELF + 1, TELEM_CHANNEL_SELF + 2, TELEM_CHANNEL_SELF+ 3};
-  char * INA3221_CHANNEL_NAMES[NUM_SENSOR_SETTINGS] = { TELEM_INA3221_SETTING_CH1, TELEM_INA3221_SETTING_CH2, TELEM_INA3221_SETTING_CH3};
+  const char * INA3221_CHANNEL_NAMES[NUM_SENSOR_SETTINGS] = { TELEM_INA3221_SETTING_CH1, TELEM_INA3221_SETTING_CH2, TELEM_INA3221_SETTING_CH3};
   bool INA3221_CHANNEL_ENABLED[NUM_SENSOR_SETTINGS] = {true, true, true};
   
 public: