Hello again @felmue,
I came across this Adafruit video today, and I thought maybe you'd be interested?
https://youtu.be/m0XAT8V37-g?t=412
(The interesting part is between 6'52" and 13'05")
Cheers
Steph
Hello again @felmue,
I came across this Adafruit video today, and I thought maybe you'd be interested?
https://youtu.be/m0XAT8V37-g?t=412
(The interesting part is between 6'52" and 13'05")
Cheers
Steph
Well... I'm soooooo sorry... I thought I had an ENV III, but it's actually an ENV II... 😬
ENV II even has two temperature sensors, since instead of the QMP6988, it has a BMP280, which is a pressure and temperature sensor. It is, therefore, possible to perform 2 simultaneous temperature measurements!
So, this time things work better:
We still notice a difference in the temperature measurements. The SHT30 seems to get better results (which is probably why they added it).
Here, it's still 1°C above the real temperature. In the meantime, I turned on the air-conditioning, so maybe the deviation is reduced because of the ventilation? On the other hand, we can see that the temperature measured by the BMP280 is 1°C higher than the one measured by the SHT30.
But this time, I get a non-zero pressure measurement. 🙂
Here is the new version of my code for those who are interested:
#include <M5Unified.h>
#include <UNIT_ENV.h>
#include <Adafruit_BMP280.h>
constexpr uint32_t SLEEP_DURATION_US = 30 * 1000 * 1000; // 30 sec
SHT3X sht30;
Adafruit_BMP280 bmp;
// QMP6988 qmp6988; // only for ENV III
void setup() {
M5.begin();
M5.Display.setRotation(3);
M5.Display.setFont(&fonts::Font2);
Wire.begin(0, 26);
bmp.begin(0x76);
bmp.setSampling(
Adafruit_BMP280::MODE_NORMAL,
Adafruit_BMP280::SAMPLING_X16,
Adafruit_BMP280::SAMPLING_X16,
Adafruit_BMP280::FILTER_X16,
Adafruit_BMP280::STANDBY_MS_500
);
// qmp6988.init(); // only for ENV III
}
void displayMeasurement(
const uint8_t x1,
const uint8_t x2,
const uint8_t x3,
const uint8_t y,
const char* sensor,
const char* data,
const float_t value
) {
M5.Display.drawString(sensor, x1, y);
M5.Display.drawString(data, x2, y);
M5.Display.drawFloat(value, 2, x3, y);
}
void loop() {
static float_t temperature_1, temperature_2, humidity, pressure;
uint8_t fail = sht30.get();
temperature_1 = bmp.readTemperature();
temperature_2 = fail ? 0 : sht30.cTemp;
humidity = fail ? 0 : sht30.humidity;
pressure = bmp.readPressure();
// only for ENV III
// pressure = qmp6988.calcPressure();
// qmp6988.setpPowermode(QMP6988_SLEEP_MODE);
displayMeasurement(10, 70, 100, 10, "BMP280", "T1", temperature_1);
displayMeasurement(10, 70, 100, 30, "SHT30", "T2", temperature_2);
displayMeasurement(10, 70, 100, 50, "SHT30", "H", humidity);
displayMeasurement(10, 70, 100, 70, "BMP280", "P", pressure);
delay(2000);
M5.Power.deepSleep(SLEEP_DURATION_US);
}
Sorry for my confusion between ENV II and ENV III. But maybe finally the questions raised here will be useful to some readers...