diff --git a/lib/obp60task/OBP60Hardware.h b/lib/obp60task/OBP60Hardware.h index 64a98dc..a4d9064 100644 --- a/lib/obp60task/OBP60Hardware.h +++ b/lib/obp60task/OBP60Hardware.h @@ -12,11 +12,13 @@ // Extension Port MCP23017 #define MCP23017_I2C_ADDR 0x20 // Addr. 0 is 0x20 // BME280 - #define BME280_I2C_ADDR 0x76 // Addr. 0x76 + #define BME280_I2C_ADDR 0x76 // Addr. 0x76 (0x77) // BMP280 #define BMP280_I2C_ADDR 0x77 // Addr. 0x77 - // SHT21 - #define SHT21_I2C_ADDR 0x40 // Addr. 0x40 + // BMP085 / BMP180 + #define BMP280_I2C_ADDR 0x77 // Addr. 0x77 (fix) + // SHT21 / HUT21 + #define SHT21_I2C_ADDR 0x40 // Addr. 0x40 (fix) // SPI (E-Ink display, Extern Bus) #define OBP_SPI_CS 5 #define OBP_SPI_DC 17 diff --git a/lib/obp60task/config.json b/lib/obp60task/config.json index 32c8dfd..4c44b38 100644 --- a/lib/obp60task/config.json +++ b/lib/obp60task/config.json @@ -251,6 +251,9 @@ "off", "BME280", "BMP280", + "BMP180", + "BMP085", + "HTU21", "SHT21" ], "category": "OBP60 Hardware", diff --git a/lib/obp60task/obp60task.cpp b/lib/obp60task/obp60task.cpp index 97634a2..5991b0a 100644 --- a/lib/obp60task/obp60task.cpp +++ b/lib/obp60task/obp60task.cpp @@ -9,6 +9,7 @@ #include // Adafruit Lib for sensors #include // Adafruit Lib for BME280 #include // Adafruit Lib for BMP280 +#include // Adafruit Lib for BMP085 and BMP180 #include // Lib for SHT21/HTU21 #include // NMEA2000 #include @@ -36,15 +37,17 @@ ObpNmea0183 NMEA0183; // Fixed Lib for NMEA0183 // tNMEA0183 NMEA0183; // Old lib with problems for NMEA0183 Adafruit_BME280 bme280; // Evironment sensor BME280 -Adafruit_BMP280 bmp280; // Evironment sensor BMEP280 -HTU21D sht21(HTU21D_RES_RH12_TEMP14); // Environment sensor SHT21 identical to HTU21 +Adafruit_BMP280 bmp280; // Evironment sensor BMP280 +Adafruit_BMP085 bmp085; //Evironment sensor BMP085 and BMP180 +HTU21D sht21(HTU21D_RES_RH12_TEMP14); // Environment sensor SHT21 and HTU21 // Global vars bool initComplete = false; // Initialization complete int taskRunCounter = 0; // Task couter for loop section bool gps_ready = false; // GPS initialized and ready to use bool BME280_ready = false; // BME280 initialized and ready to use -bool BMP280_ready = false; // BMP20 initialized and ready to use +bool BMP280_ready = false; // BMP280 initialized and ready to use +bool BMP180_ready = false; // BMP180 initialized and ready to use bool SHT21_ready = false; // SHT21 initialized and ready to use double airhumidity = 0; // Air Humitity value from environment sensor double airtemperature = 0; // Air Temperature value from environment sensor @@ -218,12 +221,23 @@ void OBP60Init(GwApi *api){ BMP280_ready = true; } } - else if(String(envSensors) == "SHT21"){ - if (!sht21.begin()) { - api->getLogger()->logDebug(GwLog::ERROR,"Modul SHT21 not found, check wiring"); + else if(String(envSensors) == "BMP085" || String(envSensors) == "BMP180"){ + if (!bmp085.begin()) { + api->getLogger()->logDebug(GwLog::ERROR,"Modul BMP085/BMP180 not found, check wiring"); } else{ - api->getLogger()->logDebug(GwLog::DEBUG,"Modul SHT21 found"); + api->getLogger()->logDebug(GwLog::DEBUG,"Modul BMP085/BMP180 found"); + airtemperature = bmp085.readTemperature(); + airpressure =bmp085.readPressure()/100; + BMP180_ready = true; + } + } + else if(String(envSensors) == "HTU21" || String(envSensors) == "SHT21"){ + if (!sht21.begin()) { + api->getLogger()->logDebug(GwLog::ERROR,"Modul HTU21/SHT21 not found, check wiring"); + } + else{ + api->getLogger()->logDebug(GwLog::DEBUG,"Modul HTU21/SHT21 found"); airhumidity = sht21.readCompensatedHumidity(); airtemperature = sht21.readTemperature(); SHT21_ready = true; @@ -681,7 +695,22 @@ void OBP60Task(GwApi *api){ api->sendN2kMessage(N2kMsg); } } - else if(envsensor == "SHT21" && BME280_ready == true){ + else if((envsensor == "BMP085" || envsensor == "BMP180") && BMP180_ready == true){ + airtemperature = bmp085.readTemperature(); + commonData.data.airTemperature = airtemperature; // Data take over to page + airpressure =bmp085.readPressure()/100; + commonData.data.airPressure = airpressure; // Data take over to page + // Send to NMEA200 bus + if(!isnan(airtemperature)){ + SetN2kPGN130312(N2kMsg, 0, 0,(tN2kTempSource) TempSource, CToKelvin(airtemperature), N2kDoubleNA); + api->sendN2kMessage(N2kMsg); + } + if(!isnan(airpressure)){ + SetN2kPGN130314(N2kMsg, 0, 0, (tN2kPressureSource) mBarToPascal(PressureSource), airpressure); + api->sendN2kMessage(N2kMsg); + } + } + else if((envsensor == "SHT21" || envsensor == "HTU21") && SHT21_ready == true){ airhumidity = sht21.readCompensatedHumidity(); commonData.data.airHumidity = airhumidity; // Data take over to page airtemperature = sht21.readTemperature(); diff --git a/lib/obp60task/platformio.ini b/lib/obp60task/platformio.ini index 6be486b..b1a435c 100644 --- a/lib/obp60task/platformio.ini +++ b/lib/obp60task/platformio.ini @@ -15,6 +15,7 @@ lib_deps = sstaub/Ticker@4.4.0 adafruit/Adafruit BMP280 Library@2.6.2 adafruit/Adafruit BME280 Library@2.2.2 + adafruit/Adafruit BMP085 Library@1.2.1 enjoyneering/HTU21D@1.2.1 build_flags= -D BOARD_NODEMCU32S_OBP60