Quellcode durchsuchen

Add Melexis Contact-less Infrared Sensor - MLX90614 to Heltec V3 Sensor

Mike Cochrane vor 1 Jahr
Ursprung
Commit
9f2a77c92e

+ 23 - 0
src/helpers/sensors/EnvironmentSensorManager.cpp

@@ -53,6 +53,12 @@ static Adafruit_INA3221 INA3221;
 static Adafruit_INA219 INA219(TELEM_INA219_ADDRESS);
 #endif
 
+#if ENV_INCLUDE_MLX90614
+#define TELEM_MLX90614_ADDRESS 0x5A      // MLX90614 IR temperature sensor I2C address
+#include <Adafruit_MLX90614.h>
+static Adafruit_MLX90614 MLX90614;
+#endif
+
 #if ENV_INCLUDE_GPS && RAK_BOARD
 static uint32_t gpsResetPin = 0;
 static bool i2cGPSFlag = false;
@@ -153,6 +159,16 @@ bool EnvironmentSensorManager::begin() {
   }
   #endif
 
+  #if ENV_INCLUDE_MLX90614
+  if (MLX90614.begin(TELEM_MLX90614_ADDRESS, TELEM_WIRE)) {
+    MESH_DEBUG_PRINTLN("Found MLX90614 at address: %02X", TELEM_MLX90614_ADDRESS);
+    MLX90614_initialized = true;
+  } else {
+    MLX90614_initialized = false;
+    MESH_DEBUG_PRINTLN("MLX90614 was not found at I2C address %02X", TELEM_MLX90614_ADDRESS);
+  }
+  #endif
+
   return true;
 }
 
@@ -233,6 +249,13 @@ bool EnvironmentSensorManager::querySensors(uint8_t requester_permissions, Cayen
     }
     #endif
 
+    #if ENV_INCLUDE_MLX90614
+    if (MLX90614_initialized) {
+      telemetry.addTemperature(TELEM_CHANNEL_SELF, MLX90614.readObjectTempC());
+      telemetry.addTemperature(TELEM_CHANNEL_SELF + 1, MLX90614.readAmbientTempC());
+    }
+    #endif
+
   }
 
   return true;

+ 1 - 0
src/helpers/sensors/EnvironmentSensorManager.h

@@ -15,6 +15,7 @@ protected:
   bool INA219_initialized = false;
   bool SHTC3_initialized = false;
   bool LPS22HB_initialized = false;
+  bool MLX90614_initialized = false;
 
   bool gps_detected = false;
   bool gps_active = false;

+ 2 - 0
variants/heltec_v3/platformio.ini

@@ -157,6 +157,7 @@ build_flags =
   -D ADMIN_PASSWORD='"password"'
   -D ENV_PIN_SDA=33
   -D ENV_PIN_SCL=34
+  -D ENV_INCLUDE_MLX90614=1
   -D DISPLAY_CLASS=SSD1306Display
 ;  -D MESH_PACKET_LOGGING=1
 ;  -D MESH_DEBUG=1
@@ -166,6 +167,7 @@ build_src_filter = ${Heltec_lora32_v3.build_src_filter}
 lib_deps =
   ${Heltec_lora32_v3.lib_deps}
   ${esp32_ota.lib_deps}
+  adafruit/Adafruit MLX90614 Library @ ^2.1.5
 
 [env:Heltec_WSL3_repeater]
 extends = Heltec_lora32_v3