ESP32-PaxCounter/src/bme680read.cpp

46 lines
1.3 KiB
C++
Raw Normal View History

#ifdef HAS_BME
2018-11-17 18:30:19 +01:00
#include "bme680read.h"
// Local logging tag
static const char TAG[] = "main";
#define SEALEVELPRESSURE_HPA (1013.25)
// I2C Bus interface
Adafruit_BME680 bme;
bmeStatus_t bme_status;
2018-11-17 18:30:19 +01:00
void bme_init(void) {
// initialize BME680 sensor using default i2c address 0x77
if (bme.begin()) {
// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
ESP_LOGI(TAG, "BME680 chip found and initialized");
} else
ESP_LOGE(TAG, "BME680 chip not found on i2c bus");
}
bool bme_read(void) {
bool ret = bme.performReading();
if (ret) {
// read current BME data and buffer in global struct
bme_status.temperature = (uint16_t)(bme.temperature * 100.0);
bme_status.pressure = (uint16_t)(bme.pressure / 100.0);
bme_status.humidity = (uint8_t)bme.humidity;
bme_status.gas_resistance = (uint16_t)(bme.gas_resistance / 1000.0);
bme_status.altitude =
(uint16_t)(bme.readAltitude(SEALEVELPRESSURE_HPA / 1000.0));
ESP_LOGI(TAG, "BME680 sensor data read success");
} else {
2018-11-17 18:30:19 +01:00
ESP_LOGI(TAG, "BME680 sensor read error");
}
2018-11-17 18:30:19 +01:00
return ret;
}
#endif // HAS_BME