From 77cbdf47b981d41876b27592e8e533186bf7138c Mon Sep 17 00:00:00 2001 From: Cedric Girard Date: Thu, 2 May 2019 15:59:42 +0200 Subject: [PATCH] Add readings from BME280 sensor --- .gitmodules | 3 +++ esp32-env-monitor.ino | 45 ++++++++++++++++++++++++++++++++++++++++++- libraries/BME280 | 1 + 3 files changed, 48 insertions(+), 1 deletion(-) create mode 160000 libraries/BME280 diff --git a/.gitmodules b/.gitmodules index cbf8a57..b7655a4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "libraries/U8g2_Arduino"] path = libraries/U8g2_Arduino url = https://github.com/olikraus/U8g2_Arduino +[submodule "libraries/BME280"] + path = libraries/BME280 + url = https://github.com/finitespace/BME280.git diff --git a/esp32-env-monitor.ino b/esp32-env-monitor.ino index 8ba3d22..996e9cc 100644 --- a/esp32-env-monitor.ino +++ b/esp32-env-monitor.ino @@ -9,11 +9,16 @@ #include #endif +#include +#include + U8X8_SSD1327_EA_W128128_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +BME280I2C bme; // Default : forced mode, standby time = 1000 ms + // Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off, + // setup the terminal (U8X8LOG) and connect to u8g2 for automatic refresh of the display // The size (width * height) depends on the display - #define U8LOG_WIDTH 16 #define U8LOG_HEIGHT 12 uint8_t u8log_buffer[U8LOG_WIDTH*U8LOG_HEIGHT]; @@ -49,12 +54,50 @@ void setup() { u8x8log.print("\n"); u8x8log.print("\n"); + //Init BME280 sensor + Wire.begin(); + + while(!bme.begin()) + { + u8x8log.print("Could not find BME280 sensor!\n"); + delay(1000); + } + + switch(bme.chipModel()) + { + case BME280::ChipModel_BME280: + u8x8log.print("Found BME280 sensor! Success.\n"); + break; + case BME280::ChipModel_BMP280: + u8x8log.print("Found BMP280 sensor! No Humidity available.\n"); + break; + default: + u8x8log.print("Found UNKNOWN sensor! Error!\n"); + } + } void loop() { //Clear screen u8x8log.print("\f"); + + float temp(NAN), hum(NAN), pres(NAN); + BME280::TempUnit tempUnit(BME280::TempUnit_Celsius); + BME280::PresUnit presUnit(BME280::PresUnit_Pa); + + bme.read(pres, temp, hum, tempUnit, presUnit); + + u8x8log.print("Temp: "); + u8x8log.print(temp); + u8x8log.print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F')); + u8x8log.print("\nHumidity: "); + u8x8log.print(hum); + u8x8log.print("% RH"); + u8x8log.print("\nPressure: "); + u8x8log.print(pres); + u8x8log.print("Pa\n"); + delay(10000); } diff --git a/libraries/BME280 b/libraries/BME280 new file mode 160000 index 0000000..7a211f0 --- /dev/null +++ b/libraries/BME280 @@ -0,0 +1 @@ +Subproject commit 7a211f03aa3ac5567b14e2cbc12ac21e185b6e0b