From b8282537c04fafef6f0bac5c53e5bb7e04acd0e4 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 14 Sep 2017 14:30:55 +0200 Subject: [PATCH 01/41] Add files via upload --- extras/sht3x/README.md | 206 +++++++++++++++++++++++++ extras/sht3x/component.mk | 9 ++ extras/sht3x/sht3x.c | 308 ++++++++++++++++++++++++++++++++++++++ extras/sht3x/sht3x.h | 179 ++++++++++++++++++++++ 4 files changed, 702 insertions(+) create mode 100644 extras/sht3x/README.md create mode 100644 extras/sht3x/component.mk create mode 100644 extras/sht3x/sht3x.c create mode 100644 extras/sht3x/sht3x.h diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md new file mode 100644 index 0000000..5369d48 --- /dev/null +++ b/extras/sht3x/README.md @@ -0,0 +1,206 @@ +# Driver for SHT3x digital temperature and humity sensor + +This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). + +Please note: The driver supports multiple sensor connected to different I2C with differen addresses. + +## About the sensor + +SHT3x is a digital temperature and humity sensor that uses I2C interface as slave with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data aquisition mode* and the *periodic data aquisition mode*. + +### Single shot data aquisition mode + +In this mode one issued measurement command triggers the acquisition of one data pair. Each data pair +consists of temperature and humidity as 16 bit decimal values. + +Repeatability setting influences the measurement duration as well as the current consumption of the sensor. The measuerment takes 3 ms at low repeatability, 5 ms at low repeatability, and 13.5 ms at high respectively. Average current consumption while sensor is measuring at lowest repeatability is 800 uA. That is, the higher repeatability level is, the longer the measurement takes and the higher the power consumption is. In standby the sensor consumes only 0.2 uA. + +### Periodic data aquisition mode + +In this mode one issued measurement command yields a stream of data pairs. Each data pair +consists of temperature and humidity as 16 bit decimal values. Once the measurement command is sent to the sensor, it executes measurements periodically by itself with a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read by a fetch command at the same rate. + +As in single shot data aquisition mode, the repeatability setting influences the measurement duration as well as the current consumption of the sensor, see above. + +## How the driver works + +To avoid blocking of user tasks during the measurements, a seperate task running in background is created for each connectd SHT3x sensor using the function *sht3x_create_sensor*. The background task realizes the measurement procedure which is executed periodically at a rate that can be defined by the user using function *sht3x_set_measurement_period* (default period is 1000 ms). + +### Measurement + +Since predefined rates of *periodic data aquisition mode* of the sensor itself are normally not compatible with user requirements, the measurement procedure is realized in *single shot data aquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data aquisition mode* is more power efficient than using *periodic data aquisition mode* in most use cases. + +However, using the *single shot data aquisition mode* produces a delay of 20 ms for each measurement. This is the time needed from issuing the measurement command until measured sensor data are available and can be read. Since the delay is realized using *vTaskDelay* function in the background task, neither the system nor any user task is blocked during the measurement. + +Please note: Since each measurement produces a delay of 20 ms, the minimum period that can be defined with function *sht3x_set_measurement_period* is 20 ms. Therefore, a maximum measurement rate of 50 mps could be reached. + +### Measured data + +At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from measuered data pairs. Temerature is given in °C as well in °F. Humiditiy is given in percent. Based on these *actual sensor values* the background task also computes *average sensor values* successive at each measurement using the exponential moving average + + Average[k] = W * Value + (1-W) * Average [k-1] + +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user (default W is 0.2) using function *sht3x_set_average_weight*. + +### Getting results. + +To get measured values by a user task, there are two possibilities, the defining a callback function or calling function *sht3x_get_values*. + +#### Using callback function + +For each connected SHT3 sensor, the user can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called after each measurement by the background task to pass the *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results automatically with same rate as the periodic measurement is executed. + +Using the callback function is the easiest way to get the results. + +#### Using function sht3x_get_values + +If there is no callback function registered, the user has to use function *sht3x_get_values* explicitly to get *actual sensor values* and *average sensor values*. To ensure that these values are up-to-date, the rate of periodic measurement in background task should be at least the same as the rate of using function *sht3x_get_values* + +## Usage + +Before using the sht3x driver, function *sht3x_init* needs to be called to setup each I2C interface. + +``` +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define SHT3x_ADDR 0x45 + +... +i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)) +... +``` + +Next, the SHT3x driver itself has to be initialized using function *sht3x_init*. + +``` +sht3x_init(); +``` + +If SHT3x driver initialisation was successful, function *sht3x_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with slave address, to check its availability and to start a background task for measurments. + +``` +sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR); +``` + +This function returns the id of the sensor between 0 and *SHT3x_MAX_SENSORS* on success or -1 on error. This id is used to identify the sensor in all other functions used later. + +If you want to use a callback function defined like following + +``` +static void my_callback_function (uint32_t sensor, + sht3x_value_set_t actual, + sht3x_value_set_t average) +{ + ... +} +``` + +you have to register it using *sht3x_set_callback_function* + +``` +sht3x_set_callback_function (sensor, &my_callback_function); +``` + +Optionally, you could set the measurement period using function *sht3x_set_measurement_period* or the weight (smoothing factor) for exponential moving average computation using function *sht3x_set_average_weight*. + +``` +sht3x_set_measurement_period (sensor, 1000); +sht3x_set_average_weight (sensor, 0.2); +``` + +All functions return a boolean that allows effecitve error handling. + + +## Full Example + +``` +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include "FreeRTOS.h" + +// include SHT3x driver + +#include "sht3x/sht3x.h" + +// define I2C interface at which SHTx3 sensor is connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define SHT3x_ADDR 0x45 + +static uint32_t sensor; + +static void my_callback_function (uint32_t sensor, + sht3x_value_set_t actual, + sht3x_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.c_temperature, average.c_temperature, + actual.f_temperature, average.f_temperature, + actual.humidity, average.humidity); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + + // Give the UART some time to settle + sdk_os_delay_us(500); + + // Init I2C bus interface at which SHT3x sensor is connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init SHT3x driver + if (!sht3x_init()) + { + // error message + return; + } + + // Create sensors + if ((sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR)) < 0) + { + // error message + return; + } + + // Set the callback function + if (!sht3x_set_callback_function (sensor, &my_callback_function)) + { + // error message + return; + } + + /* + // Optional: Set the period of measurements (default 1000 ms) + if (!sht3x_set_measurement_period (sensor, 1000)) + { + // error message + return; + } + + // Optional: Set the weight for expontial moving average (default 0.2) + if (!sht3x_set_average_weight (sensor, 0.2)) + { + // error message + return; + } + */ + + // That's it. +} +``` + +## Further Examples + +For further examples see [Examples directory](../../examples/sht3x/README.md) + + + diff --git a/extras/sht3x/component.mk b/extras/sht3x/component.mk new file mode 100644 index 0000000..9c36296 --- /dev/null +++ b/extras/sht3x/component.mk @@ -0,0 +1,9 @@ +# Component makefile for extras/sht3x + +# expected anyone using bmp driver includes it as 'sht3x/sht3x.h' +INC_DIRS += $(sht3x_ROOT).. + +# args for passing into compile rule generation +sht3x_SRC_DIR = $(sht3x_ROOT) + +$(eval $(call component_compile_rules,sht3x)) diff --git a/extras/sht3x/sht3x.c b/extras/sht3x/sht3x.c new file mode 100644 index 0000000..0d8787e --- /dev/null +++ b/extras/sht3x/sht3x.c @@ -0,0 +1,308 @@ +#include + +#include "sht3x.h" + +#include "FreeRTOS.h" +#include "queue.h" +#include "task.h" + +#include "espressif/esp_common.h" +#include "espressif/sdk_private.h" + +#define SHT3x_CB_TASK_PRIORITY 9 + +#define SHT3x_STATUS_CMD 0xF32D +#define SHT3x_CLEAR_STATUS_CMD 0x3041 +#define SHT3x_RESET_CMD 0x30A2 +#define SHT3x_MEASURE_ONE_SHOT_CMD 0x2C06 +#define SHT3x_MEASURE_PERIODIC_1_CMD 0x2130 +#define SHT3x_MEASURE_PERIODIC_2_CMD 0x2236 +#define SHT3x_MEASURE_PERIODIC_4_CMD 0x2434 +#define SHT3x_MEASURE_PERIODIC_10_CMD 0x2737 +#define SHT3x_FETCH_DATA_CMD 0xE000 + +#ifdef SHT3x_DEBUG +#define DEBUG_PRINTF0(s) printf(s); +#define DEBUG_PRINTF1(s,a) printf(s,a); +#define DEBUG_PRINTF2(s,a,b) printf(s,a,b); +#define DEBUG_PRINTF3(s,a,b,c) printf(s,a,b,c); +#else +#define DEBUG_PRINTF0(s) +#define DEBUG_PRINTF1(s,a) +#define DEBUG_PRINTF2(s,a,b) +#define DEBUG_PRINTF3(s,a,b,c) +#endif + + +sht3x_sensor_t sht3x_sensors[SHT3x_MAX_SENSORS]; + + +static bool sht3x_send_command(uint32_t id, uint16_t cmd) +{ + uint8_t data[2] = { cmd / 256, cmd % 256 }; + + DEBUG_PRINTF2("%s: Send MSB command byte %0x\n", __FUNCTION__, data[0]); + DEBUG_PRINTF2("%s: Send LSB command byte %0x\n", __FUNCTION__, data[1]); + + taskENTER_CRITICAL(); + int error = i2c_slave_write(sht3x_sensors[id].bus, sht3x_sensors[id].addr, 0, data, 2); + taskEXIT_CRITICAL(); + + if (error) + { + printf("%s: Error %d on write command %0x to i2c slave on bus %d with addr %0x.\n", + __FUNCTION__, error, cmd, sht3x_sensors[id].bus, sht3x_sensors[id].addr); + return false; + } + + return true; +} + + +static bool sht3x_read_data(uint32_t id, uint8_t *data, uint32_t len) +{ + taskENTER_CRITICAL(); + int error = i2c_slave_read(sht3x_sensors[id].bus, sht3x_sensors[id].addr, 0, data, len); + taskEXIT_CRITICAL(); + + if (error) + { + printf("%s: Error %d on read %d byte from i2c slave on bus %d with addr %0x.\n", + __FUNCTION__, error, len, sht3x_sensors[id].bus, sht3x_sensors[id].addr); + return false; + } + +# ifdef SHT3x_DEBUG + printf("%s: Read following bytes: ", __FUNCTION__); + for (int i=0; i < len; i++) + printf("%0x ", data[i]); + printf("\n"); +# endif + + return true; +} + + +static bool sht3x_is_available (uint32_t sensor) +{ + uint8_t data[3]; + + if (!sht3x_send_command(sensor, SHT3x_STATUS_CMD)) + return false; + + if (!sht3x_read_data(sensor, data, 3)) + return false; + + return true; +} + + +static bool sht3x_valid_sensor (uint32_t sensor, const char* function) +{ + if (sensor < 0 || sensor > SHT3x_MAX_SENSORS) + { + DEBUG_PRINTF2("%s: Wrong sensor id %d.\n", function, sensor); + return false; + } + + if (!sht3x_sensors[sensor].active) + { + DEBUG_PRINTF2("%s: Sensor with id %d is not active.\n", function, sensor); + return false; + } + + return true; +} + + +static void sht3x_compute_values (uint8_t id, uint8_t* data) +{ + sht3x_value_set_t act; + sht3x_value_set_t avg = sht3x_sensors[id].average; + float w = sht3x_sensors[id].average_weight; + + act.c_temperature = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45; + act.f_temperature = ((((data[0] * 256.0) + data[1]) * 347) / 65535.0) - 49; + act.humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0); + + if (sht3x_sensors[id].first_measurement) + { + sht3x_sensors[id].first_measurement = false; + + avg = act; + } + else + { + avg.c_temperature = w * act.c_temperature + (1-w) * avg.c_temperature; + avg.f_temperature = w * act.f_temperature + (1-w) * avg.f_temperature; + avg.humidity = w * act.humidity + (1-w) * avg.humidity; + } + + sht3x_sensors[id].actual = act; + sht3x_sensors[id].average = avg; +} + + +static void sht3x_callback_task (void *pvParameters) +{ + uint8_t data[6]; + uint32_t sensor = (uint32_t)pvParameters; + + while (1) + { + // DEBUG_PRINTF3("%.3f Sensor %d: %s\n", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); + + if (sht3x_send_command(sensor, SHT3x_MEASURE_ONE_SHOT_CMD)) + { + vTaskDelay (20 / portTICK_PERIOD_MS); + + if (sht3x_read_data(sensor, data, 6)) + { + sht3x_compute_values(sensor, data); + + // DEBUG_PRINTF3("%.2f C, %.2f F, %.2f \n", + // sht3x_sensors[sensor].actual.c_temperature, + // sht3x_sensors[sensor].actual.f_temperature, + // sht3x_sensors[sensor].actual.humidity); + + if (sht3x_sensors[sensor].cb_function) + sht3x_sensors[sensor].cb_function(sensor, + sht3x_sensors[sensor].actual, + sht3x_sensors[sensor].average); + + } + vTaskDelay((sht3x_sensors[sensor].period-20) / portTICK_PERIOD_MS); + } + else + vTaskDelay(sht3x_sensors[sensor].period / portTICK_PERIOD_MS); + } +} + + +bool sht3x_init() +{ + for (int id=0; id < SHT3x_MAX_SENSORS; id++) + sht3x_sensors[id].active = false; + + return true; +} + + +uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) +{ + static uint32_t id; + static char cb_task_name[20]; + + // search for first free sensor data structure + for (id=0; id < SHT3x_MAX_SENSORS; id++) + { + DEBUG_PRINTF3("%s: id=%d active=%d\n", __FUNCTION__, id, sht3x_sensors[id].active); + if (!sht3x_sensors[id].active) + break; + } + DEBUG_PRINTF2("%s: id=%d\n", __FUNCTION__, id); + + if (id == SHT3x_MAX_SENSORS) + { + DEBUG_PRINTF1("%s: No more sensor data structures available.\n", __FUNCTION__); + return -1; + } + + // init sensor data structure + sht3x_sensors[id].bus = bus; + sht3x_sensors[id].addr = addr; + sht3x_sensors[id].period = 1000; + sht3x_sensors[id].first_measurement = true; + sht3x_sensors[id].average_weight = 0.2; + sht3x_sensors[id].cb_function = NULL; + sht3x_sensors[id].cb_task = NULL; + + // check whether sensor is available + if (!sht3x_is_available(id)) + return -1; + + // clear sensor status register + if (!sht3x_send_command(id, SHT3x_CLEAR_STATUS_CMD)) + return -1; + + snprintf (cb_task_name, 20, "sht3x_cb_task_%d", id); + + if (xTaskCreate (sht3x_callback_task, cb_task_name, 256, (void*)id, + SHT3x_CB_TASK_PRIORITY, + &sht3x_sensors[id].cb_task) != pdPASS) + { + vTaskDelete(sht3x_sensors[id].cb_task); + printf("%s: Could not create task %s\n", __FUNCTION__, cb_task_name); + return false; + } + + sht3x_sensors[id].active = true; + + return id; +} + + +bool sht3x_delete_sensor(uint32_t sensor) +{ + if (!sht3x_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (sht3x_sensors[sensor].cb_task) + vTaskDelete(sht3x_sensors[sensor].cb_task); + + if (memset(&sht3x_sensors[sensor], 1, sizeof(sht3x_sensor_t)) == NULL) + { + DEBUG_PRINTF2("%s: Could not initialize memory for sensor with id %d.\n", __FUNCTION__, sensor); + return false; + } + + return true; +} + + +bool sht3x_set_measurement_period (uint32_t sensor, uint32_t period) +{ + if (!sht3x_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (period < 20) + DEBUG_PRINTF3("%s: Period of %d ms is less than the minimum period of 20 ms for sensor with id %d.\n", __FUNCTION__, period, sensor); + + sht3x_sensors[sensor].period = period; + + return true; +} + + +bool sht3x_set_callback_function (uint32_t sensor, sht3x_cb_function_t user_function) +{ + if (!sht3x_valid_sensor(sensor, __FUNCTION__)) + return false; + + sht3x_sensors[sensor].cb_function = user_function; + + DEBUG_PRINTF1("%s: Set callback mode done.\n", __FUNCTION__); + + return false; +} + + +bool sht3x_get_values(uint32_t sensor, sht3x_value_set_t *actual, sht3x_value_set_t *average) +{ + if (!sht3x_valid_sensor(sensor, __FUNCTION__)) + return false; + + *actual = sht3x_sensors[sensor].actual; + *average = sht3x_sensors[sensor].average; + + return true; +} + +bool sht3x_set_average_weight (uint32_t sensor, float weight) +{ + sht3x_sensors[sensor].first_measurement = true; + sht3x_sensors[sensor].average_weight = weight; + + return true; +} + diff --git a/extras/sht3x/sht3x.h b/extras/sht3x/sht3x.h new file mode 100644 index 0000000..fbfa7ea --- /dev/null +++ b/extras/sht3x/sht3x.h @@ -0,0 +1,179 @@ +/* + * Driver for Sensirion SHT3x digital temperature and humity sensor + * connected to I2C + * + * Part of esp-open-rtos + * Copyright (C) 2017 Gunar Schorcht (https://github.com/gschorcht) + * BSD Licensed as described in the file LICENSE + */ + +#ifndef DRIVER_SHT3x_H_ +#define DRIVER_SHT3x_H_ + +#include "stdint.h" +#include "stdbool.h" + +#include "FreeRTOS.h" +#include "queue.h" + +#include "i2c/i2c.h" + +// Uncomment to enable debug output +#define SHT3x_DEBUG + +// Change this if you need more than 3 SHT3x sensors +#define SHT3x_MAX_SENSORS 3 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + float c_temperature; + float f_temperature; + float humidity; +} sht3x_value_set_t; + +typedef void (*sht3x_cb_function_t)(uint32_t sensor, + sht3x_value_set_t actual, + sht3x_value_set_t average); + +// SHT3x sensor data structure +typedef struct { + + bool active; + bool first_measurement; + + uint8_t bus; + uint8_t addr; + + uint32_t period; + + sht3x_value_set_t actual; + sht3x_value_set_t average; + + float average_weight; + + sht3x_cb_function_t cb_function; + TaskHandle_t cb_task; + +} sht3x_sensor_t; + + +/** + * Initialize the SHT3x driver. This function must be called only once at the + * beginning. + * + * @return true on success, false on error + */ +bool sht3x_init (); + + +/** + * Initialize the SHT3x sensor connected to a certain bus with slave + * address, check its availability and start a background task for + * measurments. + * + * The background task carries out measurements periodically using SHT3x's + * single shot data aquisition mode with a default period of 1000 ms. + * This period be changed using function @set_measurment_period. + * + * At each measurement, actual sensor values are determined and exponential + * moving average values are computed. The weight (smoothing factor) for this + * average computation is 0.2 by default. It can be changed using function + * @sht3x_set_average_weight. + * + * If a callback method is registered using function + * @sht3x_set_callback_function, it is called after each measurement to pass + * measurement results to user tasks. Otherwise, user tasks have to use + * function @sht3x_get_values explicitly to get the results. + * + * @param bus I2C bus at which SHT3x sensor is connected + * @param addr I2C addr of the SHT3x sensor + * + * @return id of the sensor (0 or greater on success or -1 on error) + */ +uint32_t sht3x_create_sensor (uint8_t bus, uint8_t addr); + + +/** + * Set the period of the background measurement task for a certain sensor. + * + * Please note the minimum period is 20 ms since the measurement takes + * about 20 ms. + * + * @param sensor id of the sensor + * @param period Measurement period in ms (default 1000 ms) + * + * @return true on success, false on error + */ +bool sht3x_set_measurement_period (uint32_t sensor, uint32_t period); + + +/** + * Set the callback function for the background measurement task for a certain + * sensor. + * + * If a callback method is registered, it is called after each measurement to + * pass measurement results to user tasks. Thus, callback function is executed + * at the same rate as measurements. + * + * @param sensor id of the sensor + * @param function user function called after each measurement + * (NULL to delete it for the sensor) + * + * @return true on success, false on error + */ +bool sht3x_set_callback_function (uint32_t sensor, + sht3x_cb_function_t user_function); + + +/** + * Deletes the SHT3x sensor given by its id. + * + * @param sensor id of the sensor + * + * @return true on success, false on error + */ +bool sht3x_delete_sensor (uint32_t sensor); + + +/** + * Returns actual and average sensor values of last measurement. + * + * This function is only needed, if there is no callback function registered + * for the sensor. + * + * @param sensor id of the sensor + * @param actual pointer to a data structure for actual sensor values + * @param average pointer to a data structure for average sensor values + * + * @return true on success, false on error + */ +bool sht3x_get_values (uint32_t sensor, + sht3x_value_set_t *actual, + sht3x_value_set_t *average); + +/** + * At each measurement carried out by the background task, actual + * sensor values are determined and exponential moving avarage values are + * computed accoroding to following equation + * + * Average[k] = W * Value + (1-W) * Average [k-1] + * + * where coefficient W represents the degree of weighting decrease, a + * constant smoothing factor between 0 and 1. A higher W discounts older + * observations faster. + * + * @param sensor id of the sensor + * @param weight coefficient W (default is 0.2) + * + * @return true on success, false on error + */ +bool sht3x_set_average_weight (uint32_t sensor, float weight); + +#ifdef __cplusplus +} +#endif + +#endif /* DRIVER_SHT3x_H_ */ From a0bb27da91aeeb60dd380982b6a3cfdb5f645008 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 14 Sep 2017 14:32:43 +0200 Subject: [PATCH 02/41] Add files via upload --- examples/sht3x/README.md | 7 ++ .../sht3x/sht3x_callback_one_sensor/Makefile | 3 + .../sht3x_callback_one_sensor.c | 92 +++++++++++++++++++ .../sht3x/sht3x_callback_two_sensors/Makefile | 3 + .../sht3x_callback_two_sensors.c | 85 +++++++++++++++++ examples/sht3x/sht3x_task_one_sensor/Makefile | 3 + .../sht3x_task_one_sensor.c | 81 ++++++++++++++++ .../sht3x/sht3x_timer_one_sensor/Makefile | 3 + .../sht3x_periodic_timer.c | 80 ++++++++++++++++ 9 files changed, 357 insertions(+) create mode 100644 examples/sht3x/README.md create mode 100644 examples/sht3x/sht3x_callback_one_sensor/Makefile create mode 100644 examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c create mode 100644 examples/sht3x/sht3x_callback_two_sensors/Makefile create mode 100644 examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c create mode 100644 examples/sht3x/sht3x_task_one_sensor/Makefile create mode 100644 examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c create mode 100644 examples/sht3x/sht3x_timer_one_sensor/Makefile create mode 100644 examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c diff --git a/examples/sht3x/README.md b/examples/sht3x/README.md new file mode 100644 index 0000000..47ce3a1 --- /dev/null +++ b/examples/sht3x/README.md @@ -0,0 +1,7 @@ +# SHT3x Driver Examples + +This example references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [sht3x](https://github.com/gschorcht/esp-open-rtos/extras/sht3x), which are provided in the `../../extras` folder. + +If you plan to use one or both of this drivers in your own projects, please check the main development pages for updated versions or reported issues. + +To run this example connect the SHT3x SCL to GPIO5 and SDA to GPIO4. diff --git a/examples/sht3x/sht3x_callback_one_sensor/Makefile b/examples/sht3x/sht3x_callback_one_sensor/Makefile new file mode 100644 index 0000000..7f15752 --- /dev/null +++ b/examples/sht3x/sht3x_callback_one_sensor/Makefile @@ -0,0 +1,3 @@ +PROGRAM=SHT3x_Reader +EXTRA_COMPONENTS = extras/i2c extras/sht3x +include ../../../common.mk diff --git a/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c b/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c new file mode 100644 index 0000000..45e6a02 --- /dev/null +++ b/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c @@ -0,0 +1,92 @@ +/** + * Simple example with one sensor using SHT3x driver using callback function + * to get the results. + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include "FreeRTOS.h" + +// include SHT3x driver + +#include "sht3x/sht3x.h" + +// define I2C interface at which SHTx3 sensor is connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define SHT3x_ADDR 0x45 + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * SHT3x driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ +static void my_callback_function (uint32_t sensor, + sht3x_value_set_t actual, + sht3x_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.c_temperature, average.c_temperature, + actual.f_temperature, average.f_temperature, + actual.humidity, average.humidity); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + + // Give the UART some time to settle + sdk_os_delay_us(500); + + // Init I2C bus interface at which SHT3x sensor is connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init SHT3x driver + if (!sht3x_init()) + { + // error message + return; + } + + // Create sensors + if ((sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR)) < 0) + { + // error message + return; + } + + // Set the callback function + if (!sht3x_set_callback_function (sensor, &my_callback_function)) + { + // error message + return; + } + + /* + // Optional: Set the period of measurements (default 1000 ms) + if (!sht3x_set_measurement_period (sensor, 1000)) + { + // error message + return; + } + + // Optional: Set the weight for expontial moving average (default 0.2) + if (!sht3x_set_average_weight (sensor, 0.2)) + { + // error message + return; + } + */ + + // That's it. +} diff --git a/examples/sht3x/sht3x_callback_two_sensors/Makefile b/examples/sht3x/sht3x_callback_two_sensors/Makefile new file mode 100644 index 0000000..7f15752 --- /dev/null +++ b/examples/sht3x/sht3x_callback_two_sensors/Makefile @@ -0,0 +1,3 @@ +PROGRAM=SHT3x_Reader +EXTRA_COMPONENTS = extras/i2c extras/sht3x +include ../../../common.mk diff --git a/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c new file mode 100644 index 0000000..a287632 --- /dev/null +++ b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c @@ -0,0 +1,85 @@ +/** + * Simple example with two sensors connected to two different I2C interfaces + * using SHT3x driver using callback function to get the results. + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include "FreeRTOS.h" + +// include SHT3x driver + +#include "sht3x/sht3x.h" + +// define I2C interfaces at which SHTx3 sensors are connected +#define I2C_1_BUS 0 +#define I2C_1_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_1_SDA_PIN GPIO_ID_PIN((4)) + +#define I2C_2_BUS 1 +#define I2C_2_SCL_PIN GPIO_ID_PIN((16)) +#define I2C_2_SDA_PIN GPIO_ID_PIN((14)) + +#define SHT3x_ADDR_1 0x44 +#define SHT3x_ADDR_2 0x45 + +static uint32_t sensor1; +static uint32_t sensor2; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * SHT3x driver. This function is called periodically + * and delivers the actual and average sensor values for + * given sensor. + */ +static void my_callback_function (uint32_t sensor, + sht3x_value_set_t actual, + sht3x_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.c_temperature, average.c_temperature, + actual.f_temperature, average.f_temperature, + actual.humidity, average.humidity); +} + + +void user_init(void) +{ + // Please note: Return values are not considered for readability reasons. + // All functions return a boolean that allows effecitve error handling. + + // Set UART Parameter + uart_set_baud(0, 115200); + + // Give the UART some time to settle + sdk_os_delay_us(500); + + // Init I2C bus interfaces at which SHT3x sensors are connected + // (different busses are possible) + i2c_init(I2C_1_BUS, I2C_1_SCL_PIN, I2C_1_SDA_PIN, I2C_FREQ_100K); + i2c_init(I2C_2_BUS, I2C_2_SCL_PIN, I2C_2_SDA_PIN, I2C_FREQ_100K); + + // Init SHT3x driver (parameter is the number of SHT3x sensors used) + sht3x_init(); + + // Create sensors + sensor1 = sht3x_create_sensor (I2C_1_BUS, SHT3x_ADDR_1); + sensor2 = sht3x_create_sensor (I2C_2_BUS, SHT3x_ADDR_2); + + // Set the callback function + sht3x_set_callback_function (sensor1, &my_callback_function); + sht3x_set_callback_function (sensor2, &my_callback_function); + + // Optional: Set the period of measurements (default 1000 ms) + sht3x_set_measurement_period (sensor1, 1000); + sht3x_set_measurement_period (sensor2, 5000); + + // Optional: Set the weight for expontial moving average (default 0.2) + sht3x_set_average_weight (sensor1, 0.15); + sht3x_set_average_weight (sensor2, 0.25); + + // That's it. +} diff --git a/examples/sht3x/sht3x_task_one_sensor/Makefile b/examples/sht3x/sht3x_task_one_sensor/Makefile new file mode 100644 index 0000000..7f15752 --- /dev/null +++ b/examples/sht3x/sht3x_task_one_sensor/Makefile @@ -0,0 +1,3 @@ +PROGRAM=SHT3x_Reader +EXTRA_COMPONENTS = extras/i2c extras/sht3x +include ../../../common.mk diff --git a/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c b/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c new file mode 100644 index 0000000..565c367 --- /dev/null +++ b/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c @@ -0,0 +1,81 @@ +/** + * Simple example with one sensor using SHT3x driver in periodic mode + * and a user task. + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include "FreeRTOS.h" +#include "task.h" + +// include SHT3x driver + +#include "sht3x/sht3x.h" + +// define I2C interface at which SHTx3 sensor is connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define SHT3x_ADDR 0x45 + +static uint32_t sensor; + +/** + * Task that executes function sht3x_get_values to get last + * actual and average sensor values for given sensor. + */ +void my_user_task(void *pvParameters) +{ + sht3x_value_set_t actual; + sht3x_value_set_t average; + + while (1) + { + sht3x_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.c_temperature, average.c_temperature, + actual.f_temperature, average.f_temperature, + actual.humidity, average.humidity); + + // Delay value has to be equal or greater than the period of measurment + // task + vTaskDelay(1000 / portTICK_PERIOD_MS); + } +} + + +void user_init(void) +{ + // Please note: Return values are not considered for readability reasons. + // All functions return a boolean that allows effecitve error handling. + + // Set UART Parameter + uart_set_baud(0, 115200); + + // Give the UART some time to settle + sdk_os_delay_us(500); + + // Init I2C bus interface at which SHT3x sensor is connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init SHT3x driver + sht3x_init(); + + // Create sensors + sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR); + + // Optional: Set the period of measurements (default 1000 ms) + // sht3x_set_measurement_period (sensor, 1000); + + // Optional: Set the weight for expontial moving average (default 0.2) + // sht3x_set_average_weight (sensor, 0.2); + + // Create a task for getting results + xTaskCreate(my_user_task, "my_user_task", 256, NULL, 2, NULL); + + // That's it. +} diff --git a/examples/sht3x/sht3x_timer_one_sensor/Makefile b/examples/sht3x/sht3x_timer_one_sensor/Makefile new file mode 100644 index 0000000..7f15752 --- /dev/null +++ b/examples/sht3x/sht3x_timer_one_sensor/Makefile @@ -0,0 +1,3 @@ +PROGRAM=SHT3x_Reader +EXTRA_COMPONENTS = extras/i2c extras/sht3x +include ../../../common.mk diff --git a/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c b/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c new file mode 100644 index 0000000..efcb98b --- /dev/null +++ b/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c @@ -0,0 +1,80 @@ +/** + * Simple example with one sensor using SHT3x driver using function + * sht3x_get_values triggered by software timers to get the results. + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include "FreeRTOS.h" +#include "timers.h" + +// include SHT3x driver + +#include "sht3x/sht3x.h" + +// define I2C interface at which SHTx3 sensor is connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define SHT3x_ADDR 0x45 + +static TimerHandle_t timerHandle; +static uint32_t sensor; + +/** + * Timer callback function that executes function sht3x_get_values to get last + * actual and average sensor values for given sensor. + */ +static void my_sensor_timer_cb(TimerHandle_t xTimer) +{ + sht3x_value_set_t actual; + sht3x_value_set_t average; + + sht3x_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.c_temperature, average.c_temperature, + actual.f_temperature, average.f_temperature, + actual.humidity, average.humidity); +} + + +void user_init(void) +{ + // Please note: Return values are not considered for readability reasons. + // All functions return a boolean that allows effecitve error handling. + + // Set UART Parameter + uart_set_baud(0, 115200); + + // Give the UART some time to settle + sdk_os_delay_us(500); + + // Init I2C bus interface at which SHT3x sensor is connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init SHT3x driver + sht3x_init(); + + // Create sensors + sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR); + + // Optional: Set the period of measurements (default 1000 ms) + // sht3x_set_measurement_period (sensor, 1000); + + // Optional: Set the weight for expontial moving average (default 0.2) + // sht3x_set_average_weight (sensor, 0.2); + + // Create and start a timer that calls sht3x_i2c_timer_cb every 1000 ms + // Timer value has to be equal or greater than the period of measurment + // task above + + if ((timerHandle = xTimerCreate("SHT3x Trigger", 1000/portTICK_PERIOD_MS, + pdTRUE, NULL, my_sensor_timer_cb))) + xTimerStart(timerHandle, 0); + + // That's it. +} From f339f79917d9883fd01c5c1c6b17e247efce2391 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 14 Sep 2017 14:41:52 +0200 Subject: [PATCH 03/41] Add files via upload --- extras/sht3x/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md index 5369d48..11edf30 100644 --- a/extras/sht3x/README.md +++ b/extras/sht3x/README.md @@ -2,7 +2,7 @@ This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). -Please note: The driver supports multiple sensor connected to different I2C with differen addresses. +Please note: The driver supports multiple sensors connected to different I2C with differen addresses. ## About the sensor From 5d0d211df09d30ba05843637ccb28969bfbad215 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 09:26:21 +0200 Subject: [PATCH 04/41] Correction of some typos --- extras/sht3x/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md index 11edf30..739efaa 100644 --- a/extras/sht3x/README.md +++ b/extras/sht3x/README.md @@ -1,4 +1,4 @@ -# Driver for SHT3x digital temperature and humity sensor +# Driver for SHT3x digital temperature and humidity sensor This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). @@ -6,7 +6,7 @@ Please note: The driver supports multiple sensors connected to different I2C wit ## About the sensor -SHT3x is a digital temperature and humity sensor that uses I2C interface as slave with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data aquisition mode* and the *periodic data aquisition mode*. +SHT3x is a digital temperature and humidity sensor that uses I2C interface as slave with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data aquisition mode* and the *periodic data aquisition mode*. ### Single shot data aquisition mode From 9f60c9832479b018e6a58f78197a887d4d78e5e9 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 10:10:49 +0200 Subject: [PATCH 05/41] some changes --- extras/sht3x/README.md | 57 ++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md index 739efaa..afc3f5d 100644 --- a/extras/sht3x/README.md +++ b/extras/sht3x/README.md @@ -2,63 +2,67 @@ This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). -Please note: The driver supports multiple sensors connected to different I2C with differen addresses. +Please note: The driver supports multiple sensors connected to different I2C interfaces and different addresses. ## About the sensor -SHT3x is a digital temperature and humidity sensor that uses I2C interface as slave with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data aquisition mode* and the *periodic data aquisition mode*. +SHT3x is a digital temperature and humidity sensor that uses I2C interface with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data acquisition mode* and the *periodic data aquisition mode*. -### Single shot data aquisition mode +### Single shot data acquisition mode In this mode one issued measurement command triggers the acquisition of one data pair. Each data pair consists of temperature and humidity as 16 bit decimal values. -Repeatability setting influences the measurement duration as well as the current consumption of the sensor. The measuerment takes 3 ms at low repeatability, 5 ms at low repeatability, and 13.5 ms at high respectively. Average current consumption while sensor is measuring at lowest repeatability is 800 uA. That is, the higher repeatability level is, the longer the measurement takes and the higher the power consumption is. In standby the sensor consumes only 0.2 uA. +Repeatability setting influences the measurement duration as well as the current consumption of the sensor. The measurement takes 3 ms at low repeatability, 5 ms at low repeatability, and 13.5 ms at high repeatability, respectively. That is, the measurement produces a noticeable delay in execution. -### Periodic data aquisition mode +Average current consumption of while sensor is measuring at lowest repeatability is 800 uA. That is, the higher the repeatability level is, the longer the measurement takes and the higher the power consumption is. The sensor consumes only 0.2 uA in standby mode. + +### Periodic data acquisition mode In this mode one issued measurement command yields a stream of data pairs. Each data pair -consists of temperature and humidity as 16 bit decimal values. Once the measurement command is sent to the sensor, it executes measurements periodically by itself with a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read by a fetch command at the same rate. +consists of temperature and humidity as 16 bit decimal values. Once the measurement command is sent to the sensor, it executes measurements periodically by itself at a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read by a fetch command at the same rate. -As in single shot data aquisition mode, the repeatability setting influences the measurement duration as well as the current consumption of the sensor, see above. +As in *single shot data acquisition mode*, the repeatability setting influences the measurement duration as well as the current consumption of the sensor, see above. ## How the driver works -To avoid blocking of user tasks during the measurements, a seperate task running in background is created for each connectd SHT3x sensor using the function *sht3x_create_sensor*. The background task realizes the measurement procedure which is executed periodically at a rate that can be defined by the user using function *sht3x_set_measurement_period* (default period is 1000 ms). +To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These task are created implicitly when a user task calls function *sht3x_create_sensor* for each connected SHT3x sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *sht3x_set_measurement_period* (default period is 1000 ms). ### Measurement -Since predefined rates of *periodic data aquisition mode* of the sensor itself are normally not compatible with user requirements, the measurement procedure is realized in *single shot data aquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data aquisition mode* is more power efficient than using *periodic data aquisition mode* in most use cases. +Since predefined rates of *periodic data acquisition mode* of the sensor itself are normally not compatible with user requirements, the measurement procedures are realized in *single shot data acquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data acquisition mode* is more power efficient than using *periodic data acquisition mode* in most use cases. -However, using the *single shot data aquisition mode* produces a delay of 20 ms for each measurement. This is the time needed from issuing the measurement command until measured sensor data are available and can be read. Since the delay is realized using *vTaskDelay* function in the background task, neither the system nor any user task is blocked during the measurement. +However, using the *single shot data acquisition mode* produces a delay of 20 ms for each measurement. This is the time needed from issuing the measurement command until measured sensor data are available and can be read. Since the delay is realized using *vTaskDelay* function in the background tasks, neither the system nor any user task is blocked during the measurements. Please note: Since each measurement produces a delay of 20 ms, the minimum period that can be defined with function *sht3x_set_measurement_period* is 20 ms. Therefore, a maximum measurement rate of 50 mps could be reached. ### Measured data -At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from measuered data pairs. Temerature is given in °C as well in °F. Humiditiy is given in percent. Based on these *actual sensor values* the background task also computes *average sensor values* successive at each measurement using the exponential moving average +At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from measured data pairs. Temperature is given in °C as well in °F. Humidity is given in percent. Based on these *actual sensor values* the background task also computes successively with each measurement the *average sensor values* using the exponential moving average - Average[k] = W * Value + (1-W) * Average [k-1] + Average[k] = W * Actual + (1-W) * Average [k-1] -where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user (default W is 0.2) using function *sht3x_set_average_weight*. +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user using function *sht3x_set_average_weight*. The default value of W is 0.2. ### Getting results. -To get measured values by a user task, there are two possibilities, the defining a callback function or calling function *sht3x_get_values*. +Once a measurement has been finished, *actual sensor values* and *average sensor values* can be read by user tasks. There are two possibilities to do that, defining a callback function or the calling function *sht3x_get_values* explicitly. #### Using callback function -For each connected SHT3 sensor, the user can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called after each measurement by the background task to pass the *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results automatically with same rate as the periodic measurement is executed. +For each connected SHT3 sensor, the user can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of measurements automatically with same rate as the periodic measurements are executed. Using the callback function is the easiest way to get the results. #### Using function sht3x_get_values -If there is no callback function registered, the user has to use function *sht3x_get_values* explicitly to get *actual sensor values* and *average sensor values*. To ensure that these values are up-to-date, the rate of periodic measurement in background task should be at least the same as the rate of using function *sht3x_get_values* +If there is no callback function registered, the user has to use function *sht3x_get_values* explicitly to get *actual sensor values* and *average sensor values*. To ensure that these values are up-to-date, the rate of periodic measurement in background task should be at least the same or higher as the rate of using function *sht3x_get_values*. That is, the period of measurements in background task set with function *sht3x_set_measurement_period* has to be less or equal than the rate of using function *sht3x_get_values*. + +Please remember: The minimum measurement period can be 20 ms. ## Usage -Before using the sht3x driver, function *sht3x_init* needs to be called to setup each I2C interface. +Before using the SHT3x driver, function *i2c_init* needs to be called to setup each I2C interface. ``` #define I2C_BUS 0 @@ -78,15 +82,15 @@ Next, the SHT3x driver itself has to be initialized using function *sht3x_init*. sht3x_init(); ``` -If SHT3x driver initialisation was successful, function *sht3x_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with slave address, to check its availability and to start a background task for measurments. +If SHT3x driver initialization was successful, function *sht3x_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. ``` sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR); ``` -This function returns the id of the sensor between 0 and *SHT3x_MAX_SENSORS* on success or -1 on error. This id is used to identify the sensor in all other functions used later. +On success this function returns the *ID* of a sensor descriptor between 0 and *SHT3x_MAX_SENSORS* or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. -If you want to use a callback function defined like following +If you want to use a callback function defined like following to get the measurement results ``` static void my_callback_function (uint32_t sensor, @@ -97,7 +101,7 @@ static void my_callback_function (uint32_t sensor, } ``` -you have to register it using *sht3x_set_callback_function* +you have to register this callback function using *sht3x_set_callback_function*. ``` sht3x_set_callback_function (sensor, &my_callback_function); @@ -110,8 +114,7 @@ sht3x_set_measurement_period (sensor, 1000); sht3x_set_average_weight (sensor, 0.2); ``` -All functions return a boolean that allows effecitve error handling. - +All functions return a boolean that allows effective error handling. ## Full Example @@ -140,8 +143,8 @@ static void my_callback_function (uint32_t sensor, { printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", (double)sdk_system_get_time()*1e-3, sensor, - actual.c_temperature, average.c_temperature, - actual.f_temperature, average.f_temperature, + actual.temperature_c, average.temperature_c, + actual.temperature_f, average.temperature_f, actual.humidity, average.humidity); } @@ -186,7 +189,7 @@ void user_init(void) return; } - // Optional: Set the weight for expontial moving average (default 0.2) + // Optional: Set the weight for exponential moving average (default 0.2) if (!sht3x_set_average_weight (sensor, 0.2)) { // error message @@ -200,7 +203,7 @@ void user_init(void) ## Further Examples -For further examples see [Examples directory](../../examples/sht3x/README.md) +For further examples see [examples directory](../../examples/sht3x/README.md) From b225a017529226e8f0e8091881bb34ea2e7f0f00 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 11:11:14 +0200 Subject: [PATCH 06/41] Small changes and corrections --- extras/sht3x/sht3x.c | 17 ++++++++--------- extras/sht3x/sht3x.h | 21 ++++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/extras/sht3x/sht3x.c b/extras/sht3x/sht3x.c index 0d8787e..f01bbdf 100644 --- a/extras/sht3x/sht3x.c +++ b/extras/sht3x/sht3x.c @@ -3,7 +3,6 @@ #include "sht3x.h" #include "FreeRTOS.h" -#include "queue.h" #include "task.h" #include "espressif/esp_common.h" @@ -121,8 +120,8 @@ static void sht3x_compute_values (uint8_t id, uint8_t* data) sht3x_value_set_t avg = sht3x_sensors[id].average; float w = sht3x_sensors[id].average_weight; - act.c_temperature = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45; - act.f_temperature = ((((data[0] * 256.0) + data[1]) * 347) / 65535.0) - 49; + act.temperature_c = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45; + act.temperature_f = ((((data[0] * 256.0) + data[1]) * 347) / 65535.0) - 49; act.humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0); if (sht3x_sensors[id].first_measurement) @@ -133,8 +132,8 @@ static void sht3x_compute_values (uint8_t id, uint8_t* data) } else { - avg.c_temperature = w * act.c_temperature + (1-w) * avg.c_temperature; - avg.f_temperature = w * act.f_temperature + (1-w) * avg.f_temperature; + avg.temperature_c = w * act.temperature_c + (1-w) * avg.temperature_c; + avg.temperature_f = w * act.temperature_f + (1-w) * avg.temperature_f; avg.humidity = w * act.humidity + (1-w) * avg.humidity; } @@ -161,8 +160,8 @@ static void sht3x_callback_task (void *pvParameters) sht3x_compute_values(sensor, data); // DEBUG_PRINTF3("%.2f C, %.2f F, %.2f \n", - // sht3x_sensors[sensor].actual.c_temperature, - // sht3x_sensors[sensor].actual.f_temperature, + // sht3x_sensors[sensor].actual.temperature_c, + // sht3x_sensors[sensor].actual.temperature_f, // sht3x_sensors[sensor].actual.humidity); if (sht3x_sensors[sensor].cb_function) @@ -292,8 +291,8 @@ bool sht3x_get_values(uint32_t sensor, sht3x_value_set_t *actual, sht3x_value_se if (!sht3x_valid_sensor(sensor, __FUNCTION__)) return false; - *actual = sht3x_sensors[sensor].actual; - *average = sht3x_sensors[sensor].average; + if (actual) *actual = sht3x_sensors[sensor].actual; + if (average) *average = sht3x_sensors[sensor].average; return true; } diff --git a/extras/sht3x/sht3x.h b/extras/sht3x/sht3x.h index fbfa7ea..0cd04c1 100644 --- a/extras/sht3x/sht3x.h +++ b/extras/sht3x/sht3x.h @@ -19,7 +19,7 @@ #include "i2c/i2c.h" // Uncomment to enable debug output -#define SHT3x_DEBUG +// #define SHT3x_DEBUG // Change this if you need more than 3 SHT3x sensors #define SHT3x_MAX_SENSORS 3 @@ -29,9 +29,9 @@ extern "C" { #endif typedef struct { - float c_temperature; - float f_temperature; - float humidity; + float temperature_c; // temperature in degree Fahrenheit + float temperature_f; // temperature in degree Celcius + float humidity; // humidity in percent } sht3x_value_set_t; typedef void (*sht3x_cb_function_t)(uint32_t sensor, @@ -72,10 +72,10 @@ bool sht3x_init (); /** * Initialize the SHT3x sensor connected to a certain bus with slave * address, check its availability and start a background task for - * measurments. + * measurements. * * The background task carries out measurements periodically using SHT3x's - * single shot data aquisition mode with a default period of 1000 ms. + * single shot data acquisition mode with a default period of 1000 ms. * This period be changed using function @set_measurment_period. * * At each measurement, actual sensor values are determined and exponential @@ -139,7 +139,10 @@ bool sht3x_delete_sensor (uint32_t sensor); /** - * Returns actual and average sensor values of last measurement. + * Returns actual and average sensor values of last measurement. Parameters + * @actual and @average are pointer to data structures of type + * @sht3x_value_set_t which are filled with measurement results. Use NULL for + * that pointers parameters, if you are not interested on certain results. * * This function is only needed, if there is no callback function registered * for the sensor. @@ -156,8 +159,8 @@ bool sht3x_get_values (uint32_t sensor, /** * At each measurement carried out by the background task, actual - * sensor values are determined and exponential moving avarage values are - * computed accoroding to following equation + * sensor values are determined and exponential moving average values are + * computed according to following equation * * Average[k] = W * Value + (1-W) * Average [k-1] * From ca482fa99a364f3bf3b9356503163a988e7644aa Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 11:16:08 +0200 Subject: [PATCH 07/41] Small changes --- .../sht3x_callback_one_sensor/sht3x_callback_one_sensor.c | 4 ++-- .../sht3x_callback_two_sensors/sht3x_callback_two_sensors.c | 4 ++-- examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c | 4 ++-- examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c b/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c index 45e6a02..ab0d2db 100644 --- a/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c +++ b/examples/sht3x/sht3x_callback_one_sensor/sht3x_callback_one_sensor.c @@ -34,8 +34,8 @@ static void my_callback_function (uint32_t sensor, { printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", (double)sdk_system_get_time()*1e-3, sensor, - actual.c_temperature, average.c_temperature, - actual.f_temperature, average.f_temperature, + actual.temperature_c, average.temperature_c, + actual.temperature_f, average.temperature_f, actual.humidity, average.humidity); } diff --git a/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c index a287632..05ad530 100644 --- a/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c +++ b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c @@ -40,8 +40,8 @@ static void my_callback_function (uint32_t sensor, { printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", (double)sdk_system_get_time()*1e-3, sensor, - actual.c_temperature, average.c_temperature, - actual.f_temperature, average.f_temperature, + actual.temperature_c, average.temperature_c, + actual.temperature_f, average.temperature_f, actual.humidity, average.humidity); } diff --git a/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c b/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c index 565c367..18016aa 100644 --- a/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c +++ b/examples/sht3x/sht3x_task_one_sensor/sht3x_task_one_sensor.c @@ -37,8 +37,8 @@ void my_user_task(void *pvParameters) printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", (double)sdk_system_get_time()*1e-3, sensor, - actual.c_temperature, average.c_temperature, - actual.f_temperature, average.f_temperature, + actual.temperature_c, average.temperature_c, + actual.temperature_f, average.temperature_f, actual.humidity, average.humidity); // Delay value has to be equal or greater than the period of measurment diff --git a/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c b/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c index efcb98b..59c5270 100644 --- a/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c +++ b/examples/sht3x/sht3x_timer_one_sensor/sht3x_periodic_timer.c @@ -36,8 +36,8 @@ static void my_sensor_timer_cb(TimerHandle_t xTimer) printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) F, %.2f (%.2f) \n", (double)sdk_system_get_time()*1e-3, sensor, - actual.c_temperature, average.c_temperature, - actual.f_temperature, average.f_temperature, + actual.temperature_c, average.temperature_c, + actual.temperature_f, average.temperature_f, actual.humidity, average.humidity); } From 6ea41cfdc7dd2648742192cc9d6ce8c1fc075c34 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 11:57:04 +0200 Subject: [PATCH 08/41] Completion of the document --- examples/sht3x/README.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/examples/sht3x/README.md b/examples/sht3x/README.md index 47ce3a1..62d770f 100644 --- a/examples/sht3x/README.md +++ b/examples/sht3x/README.md @@ -1,7 +1,31 @@ # SHT3x Driver Examples -This example references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [sht3x](https://github.com/gschorcht/esp-open-rtos/extras/sht3x), which are provided in the `../../extras` folder. +These examples references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [sht3x](https://github.com/gschorcht/esp-open-rtos/extras/sht3x), which are provided in the `../../extras` folder. If you plan to use one or both of this drivers in your own projects, please check the main development pages for updated versions or reported issues. -To run this example connect the SHT3x SCL to GPIO5 and SDA to GPIO4. +## Hardware setup + +There are examples for only one sensor and examples for two sensors. + +To run examples with **one sensor**, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the SHT3x sensor's I2C interface. + +If you want to run examples with **two sensors**, you could do this with only one bus and different I2C addresses or with two buses and the same or different I2C addresses. In later case, use GPIO16 (SCL) and GPIO14 (SDA) for the second bus to connect to the second SHT3x sensor's I2C interface. + +## Example description + +__*shtx_callback_one_sensor*__ + +This example shows how to use a **callback function** to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. It includes some simple error handling. + +__*shtx_callback_two_sensors*__ + +This example shows how to use a **callback function** to get the results of periodic measurements of **two sensors** with **different measurement periods** of 1000 ms and 5000 ms, respectively. The sensors are connected to **two different buses**. There is no error handling in this example. + +__*shtx_task_one_sensor*__ + +This example shows how to use a **task** in conjunction with function __*sht3x_get_values*__ to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The task uses function *vTaskDelay* to realize a periodic exudation of function *sht3x_get_values* with same rate as periodic measurements. There is no error handling in this example. + +__*shtx_timer_one_sensor*__ + +This example shows how to use a **software timer** and **timer callback function** in conjunction with function __*sht3x_get_values*__ to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The timer callback function executes function *sht3x_get_values* to get the results of periodic measurements. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. From b1deadffe9884f49ba5c98c6a15d9d32d6dc335e Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 14:53:52 +0200 Subject: [PATCH 09/41] Some small improvements Calls of taskENTER_CRITICAL() and taskEXIT_CRITICAL() removed. DEBUG_PRINTF with variable number of arguments defined. --- extras/sht3x/sht3x.c | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/extras/sht3x/sht3x.c b/extras/sht3x/sht3x.c index f01bbdf..00d1153 100644 --- a/extras/sht3x/sht3x.c +++ b/extras/sht3x/sht3x.c @@ -21,15 +21,9 @@ #define SHT3x_FETCH_DATA_CMD 0xE000 #ifdef SHT3x_DEBUG -#define DEBUG_PRINTF0(s) printf(s); -#define DEBUG_PRINTF1(s,a) printf(s,a); -#define DEBUG_PRINTF2(s,a,b) printf(s,a,b); -#define DEBUG_PRINTF3(s,a,b,c) printf(s,a,b,c); +#define DEBUG_PRINTF(s, ...) printf("%s: " s "\n", "SHT3x", ## __VA_ARGS__) #else -#define DEBUG_PRINTF0(s) -#define DEBUG_PRINTF1(s,a) -#define DEBUG_PRINTF2(s,a,b) -#define DEBUG_PRINTF3(s,a,b,c) +#define DEBUG_PRINTF(s, ...) #endif @@ -40,12 +34,10 @@ static bool sht3x_send_command(uint32_t id, uint16_t cmd) { uint8_t data[2] = { cmd / 256, cmd % 256 }; - DEBUG_PRINTF2("%s: Send MSB command byte %0x\n", __FUNCTION__, data[0]); - DEBUG_PRINTF2("%s: Send LSB command byte %0x\n", __FUNCTION__, data[1]); + DEBUG_PRINTF("%s: Send MSB command byte %0x", __FUNCTION__, data[0]); + DEBUG_PRINTF("%s: Send LSB command byte %0x", __FUNCTION__, data[1]); - taskENTER_CRITICAL(); int error = i2c_slave_write(sht3x_sensors[id].bus, sht3x_sensors[id].addr, 0, data, 2); - taskEXIT_CRITICAL(); if (error) { @@ -60,9 +52,7 @@ static bool sht3x_send_command(uint32_t id, uint16_t cmd) static bool sht3x_read_data(uint32_t id, uint8_t *data, uint32_t len) { - taskENTER_CRITICAL(); int error = i2c_slave_read(sht3x_sensors[id].bus, sht3x_sensors[id].addr, 0, data, len); - taskEXIT_CRITICAL(); if (error) { @@ -72,7 +62,7 @@ static bool sht3x_read_data(uint32_t id, uint8_t *data, uint32_t len) } # ifdef SHT3x_DEBUG - printf("%s: Read following bytes: ", __FUNCTION__); + printf("SHT3x: %s: Read following bytes: ", __FUNCTION__); for (int i=0; i < len; i++) printf("%0x ", data[i]); printf("\n"); @@ -100,13 +90,13 @@ static bool sht3x_valid_sensor (uint32_t sensor, const char* function) { if (sensor < 0 || sensor > SHT3x_MAX_SENSORS) { - DEBUG_PRINTF2("%s: Wrong sensor id %d.\n", function, sensor); + DEBUG_PRINTF("%s: Wrong sensor id %d.", function, sensor); return false; } if (!sht3x_sensors[sensor].active) { - DEBUG_PRINTF2("%s: Sensor with id %d is not active.\n", function, sensor); + DEBUG_PRINTF("%s: Sensor with id %d is not active.", function, sensor); return false; } @@ -149,7 +139,7 @@ static void sht3x_callback_task (void *pvParameters) while (1) { - // DEBUG_PRINTF3("%.3f Sensor %d: %s\n", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); + // DEBUG_PRINTF("%.3f Sensor %d: %s", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); if (sht3x_send_command(sensor, SHT3x_MEASURE_ONE_SHOT_CMD)) { @@ -159,7 +149,7 @@ static void sht3x_callback_task (void *pvParameters) { sht3x_compute_values(sensor, data); - // DEBUG_PRINTF3("%.2f C, %.2f F, %.2f \n", + // DEBUG_PRINTF("%.2f C, %.2f F, %.2f", // sht3x_sensors[sensor].actual.temperature_c, // sht3x_sensors[sensor].actual.temperature_f, // sht3x_sensors[sensor].actual.humidity); @@ -195,15 +185,15 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) // search for first free sensor data structure for (id=0; id < SHT3x_MAX_SENSORS; id++) { - DEBUG_PRINTF3("%s: id=%d active=%d\n", __FUNCTION__, id, sht3x_sensors[id].active); + DEBUG_PRINTF("%s: id=%d active=%d", __FUNCTION__, id, sht3x_sensors[id].active); if (!sht3x_sensors[id].active) break; } - DEBUG_PRINTF2("%s: id=%d\n", __FUNCTION__, id); + DEBUG_PRINTF("%s: id=%d", __FUNCTION__, id); if (id == SHT3x_MAX_SENSORS) { - DEBUG_PRINTF1("%s: No more sensor data structures available.\n", __FUNCTION__); + DEBUG_PRINTF("%s: No more sensor data structures available.", __FUNCTION__); return -1; } @@ -251,7 +241,7 @@ bool sht3x_delete_sensor(uint32_t sensor) if (memset(&sht3x_sensors[sensor], 1, sizeof(sht3x_sensor_t)) == NULL) { - DEBUG_PRINTF2("%s: Could not initialize memory for sensor with id %d.\n", __FUNCTION__, sensor); + DEBUG_PRINTF("%s: Could not initialize memory for sensor with id %d.", __FUNCTION__, sensor); return false; } @@ -265,7 +255,7 @@ bool sht3x_set_measurement_period (uint32_t sensor, uint32_t period) return false; if (period < 20) - DEBUG_PRINTF3("%s: Period of %d ms is less than the minimum period of 20 ms for sensor with id %d.\n", __FUNCTION__, period, sensor); + DEBUG_PRINTF("%s: Period of %d ms is less than the minimum period of 20 ms for sensor with id %d.", __FUNCTION__, period, sensor); sht3x_sensors[sensor].period = period; @@ -280,7 +270,7 @@ bool sht3x_set_callback_function (uint32_t sensor, sht3x_cb_function_t user_func sht3x_sensors[sensor].cb_function = user_function; - DEBUG_PRINTF1("%s: Set callback mode done.\n", __FUNCTION__); + DEBUG_PRINTF("%s: Set callback mode done.", __FUNCTION__); return false; } From 88bf000942e2f2f503b11617accbb87905d955e3 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Fri, 15 Sep 2017 14:57:51 +0200 Subject: [PATCH 10/41] GPIO used as I2C SCL signal changed GPIO used as I2C SCL signal for second I2C bus was changed from GPIO16 to GPIO12 in this example. Reason is that GPIO16 is slower than other GPIOs. --- .../sht3x_callback_two_sensors/sht3x_callback_two_sensors.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c index 05ad530..2433e5b 100644 --- a/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c +++ b/examples/sht3x/sht3x_callback_two_sensors/sht3x_callback_two_sensors.c @@ -18,7 +18,7 @@ #define I2C_1_SDA_PIN GPIO_ID_PIN((4)) #define I2C_2_BUS 1 -#define I2C_2_SCL_PIN GPIO_ID_PIN((16)) +#define I2C_2_SCL_PIN GPIO_ID_PIN((12)) #define I2C_2_SDA_PIN GPIO_ID_PIN((14)) #define SHT3x_ADDR_1 0x44 @@ -66,8 +66,8 @@ void user_init(void) sht3x_init(); // Create sensors - sensor1 = sht3x_create_sensor (I2C_1_BUS, SHT3x_ADDR_1); - sensor2 = sht3x_create_sensor (I2C_2_BUS, SHT3x_ADDR_2); + sensor1 = sht3x_create_sensor (I2C_2_BUS, SHT3x_ADDR_1); + sensor2 = sht3x_create_sensor (I2C_1_BUS, SHT3x_ADDR_2); // Set the callback function sht3x_set_callback_function (sensor1, &my_callback_function); From c719d7313900f48a33712a77e4614d9a68f7a9c2 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 28 Sep 2017 01:19:56 +0200 Subject: [PATCH 11/41] Average value computation can be disabled now --- extras/sht3x/README.md | 48 +++++++----- extras/sht3x/sht3x.c | 109 ++++++++++++++++++++------ extras/sht3x/sht3x.h | 171 ++++++++++++++++++++++++++++++----------- 3 files changed, 239 insertions(+), 89 deletions(-) diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md index afc3f5d..b09e491 100644 --- a/extras/sht3x/README.md +++ b/extras/sht3x/README.md @@ -6,59 +6,68 @@ Please note: The driver supports multiple sensors connected to different I2C int ## About the sensor -SHT3x is a digital temperature and humidity sensor that uses I2C interface with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data acquisition mode* and the *periodic data aquisition mode*. +SHT3x is a digital temperature and humidity sensor that uses an I2C interface with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data acquisition mode* and the *periodic data aquisition mode*. ### Single shot data acquisition mode -In this mode one issued measurement command triggers the acquisition of one data pair. Each data pair -consists of temperature and humidity as 16 bit decimal values. +In this mode, a measurement command triggers the acquisition of one data pair. Each data pair consists of temperature and humidity as 16-bit decimal values. -Repeatability setting influences the measurement duration as well as the current consumption of the sensor. The measurement takes 3 ms at low repeatability, 5 ms at low repeatability, and 13.5 ms at high repeatability, respectively. That is, the measurement produces a noticeable delay in execution. +The repeatability affects the measurement time as well as the power consumption of the sensor. The measurement takes 3 ms with low repeatability, 5 ms with medium repeatability and 13.5 ms with high repeatability. That is, the measurement produces a noticeable delay in execution. -Average current consumption of while sensor is measuring at lowest repeatability is 800 uA. That is, the higher the repeatability level is, the longer the measurement takes and the higher the power consumption is. The sensor consumes only 0.2 uA in standby mode. +While the sensor measures at the lowest repeatability, the average current consumption is 800 μA. That is, the higher the reproducibility level, the longer the measurement takes and the higher the power consumption. The sensor consumes only 0.2 μA in standby mode. ### Periodic data acquisition mode -In this mode one issued measurement command yields a stream of data pairs. Each data pair -consists of temperature and humidity as 16 bit decimal values. Once the measurement command is sent to the sensor, it executes measurements periodically by itself at a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read by a fetch command at the same rate. +In this mode one issued measurement command yields a stream of data pairs. Each data pair consists of temperature and humidity as 16-bit decimal values. As soon as the measurement command has been sent to the sensor, it itself carries out measurements periodically at a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read with a fetch command at the same rate. -As in *single shot data acquisition mode*, the repeatability setting influences the measurement duration as well as the current consumption of the sensor, see above. +As in the *single shot data acquisition mode*, the repeatability setting affects both the measurement time and the current consumption of the sensor, see above. ## How the driver works -To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These task are created implicitly when a user task calls function *sht3x_create_sensor* for each connected SHT3x sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *sht3x_set_measurement_period* (default period is 1000 ms). +To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These background tasks are created implicitly when a user task calls function *sht3x_create_sensor* for each connected SHT3x sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *sht3x_set_measurement_period* (default period is 1000 ms). -### Measurement +### Measurement method -Since predefined rates of *periodic data acquisition mode* of the sensor itself are normally not compatible with user requirements, the measurement procedures are realized in *single shot data acquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data acquisition mode* is more power efficient than using *periodic data acquisition mode* in most use cases. +Since the predefined rates of *periodic data acquisition mode* of the sensor itself are normally not compatible with user requirements, the measurements are realized by the background task in *single shot data acquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data acquisition mode* is more power efficient than using the *periodic data acquisition mode* in most use cases. -However, using the *single shot data acquisition mode* produces a delay of 20 ms for each measurement. This is the time needed from issuing the measurement command until measured sensor data are available and can be read. Since the delay is realized using *vTaskDelay* function in the background tasks, neither the system nor any user task is blocked during the measurements. +However, using the *single shot data acquisition mode* produces a delay of 20 ms for each measurement. This is just the time needed from issuing the measurement command until measured sensor data are available and can be read. Since this delay is realized using *vTaskDelay* function in the background tasks, neither the system nor any user task is blocked during the measurements. Please note: Since each measurement produces a delay of 20 ms, the minimum period that can be defined with function *sht3x_set_measurement_period* is 20 ms. Therefore, a maximum measurement rate of 50 mps could be reached. ### Measured data -At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from measured data pairs. Temperature is given in °C as well in °F. Humidity is given in percent. Based on these *actual sensor values* the background task also computes successively with each measurement the *average sensor values* using the exponential moving average +At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from the measured data pairs. Temperature is given in °C as well in °F. Humidity is given in percent. + +If average value computation is enabled (default), the background task also computes successively at each measurement the *average sensor values* based on these *actual sensor values* using the exponential moving average Average[k] = W * Actual + (1-W) * Average [k-1] -where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user using function *sht3x_set_average_weight*. The default value of W is 0.2. +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function *sht3x_set_average_weight*. The default value of W is 0.2. The average value computation can be enabled or disabled using function *sht3x_enable_average_computation*. + +If average computation is disabled, *average sensor values* correspont to the *actual sensor values*. ### Getting results. -Once a measurement has been finished, *actual sensor values* and *average sensor values* can be read by user tasks. There are two possibilities to do that, defining a callback function or the calling function *sht3x_get_values* explicitly. +As soon as a measurement is completed, the actual sensor values * and * average sensor values * can be read by user tasks. There are two ways to do this: + +- define a callback function or +- call the function * sht3x_get_values * explicitly. #### Using callback function -For each connected SHT3 sensor, the user can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of measurements automatically with same rate as the periodic measurements are executed. +For each connected SHT3 sensor, the user task can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. Using the callback function is the easiest way to get the results. #### Using function sht3x_get_values -If there is no callback function registered, the user has to use function *sht3x_get_values* explicitly to get *actual sensor values* and *average sensor values*. To ensure that these values are up-to-date, the rate of periodic measurement in background task should be at least the same or higher as the rate of using function *sht3x_get_values*. That is, the period of measurements in background task set with function *sht3x_set_measurement_period* has to be less or equal than the rate of using function *sht3x_get_values*. +If there is no callback function registered, the user task has to call function *sht3x_get_values* to get *actual sensor values* and *average sensor values*. These values are stored in data structures that are specified as pointer parameters. Using NULL pointers for the parameters, the user task can decide which results are not interesting. -Please remember: The minimum measurement period can be 20 ms. +To ensure that the values are up-to-date, the rate of periodic measurement in background task should be at least the same or higher as the rate of using function *sht3x_get_values*. That is, the period of measurements in background task set with function *sht3x_set_measurement_period* has to be less or equal than the rate of using function *sht3x_get_values*. + +If average computation is disabled, *average sensor values* are just the same as *actual sensor values*. + +Please note: The minimum measurement period can be 20 ms. ## Usage @@ -101,7 +110,7 @@ static void my_callback_function (uint32_t sensor, } ``` -you have to register this callback function using *sht3x_set_callback_function*. +You have to register this callback function using *sht3x_set_callback_function*. ``` sht3x_set_callback_function (sensor, &my_callback_function); @@ -207,3 +216,4 @@ For further examples see [examples directory](../../examples/sht3x/README.md) + diff --git a/extras/sht3x/sht3x.c b/extras/sht3x/sht3x.c index 00d1153..e762579 100644 --- a/extras/sht3x/sht3x.c +++ b/extras/sht3x/sht3x.c @@ -1,3 +1,43 @@ +/* + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Driver for Sensirion SHT3x digital temperature and humity sensor + * connected to I2C + * + * Part of esp-open-rtos + */ + #include #include "sht3x.h" @@ -21,9 +61,9 @@ #define SHT3x_FETCH_DATA_CMD 0xE000 #ifdef SHT3x_DEBUG -#define DEBUG_PRINTF(s, ...) printf("%s: " s "\n", "SHT3x", ## __VA_ARGS__) +#define debug(s, ...) printf("%s: " s "\n", "SHT3x", ## __VA_ARGS__) #else -#define DEBUG_PRINTF(s, ...) +#define debug(s, ...) #endif @@ -34,8 +74,8 @@ static bool sht3x_send_command(uint32_t id, uint16_t cmd) { uint8_t data[2] = { cmd / 256, cmd % 256 }; - DEBUG_PRINTF("%s: Send MSB command byte %0x", __FUNCTION__, data[0]); - DEBUG_PRINTF("%s: Send LSB command byte %0x", __FUNCTION__, data[1]); + debug("%s: Send MSB command byte %0x", __FUNCTION__, data[0]); + debug("%s: Send LSB command byte %0x", __FUNCTION__, data[1]); int error = i2c_slave_write(sht3x_sensors[id].bus, sht3x_sensors[id].addr, 0, data, 2); @@ -77,10 +117,16 @@ static bool sht3x_is_available (uint32_t sensor) uint8_t data[3]; if (!sht3x_send_command(sensor, SHT3x_STATUS_CMD)) + { + debug("Called from %s", __FUNCTION__); return false; + } if (!sht3x_read_data(sensor, data, 3)) + { + debug("Called from %s", __FUNCTION__); return false; + } return true; } @@ -90,13 +136,13 @@ static bool sht3x_valid_sensor (uint32_t sensor, const char* function) { if (sensor < 0 || sensor > SHT3x_MAX_SENSORS) { - DEBUG_PRINTF("%s: Wrong sensor id %d.", function, sensor); + debug("%s: Wrong sensor id %d.", function, sensor); return false; } if (!sht3x_sensors[sensor].active) { - DEBUG_PRINTF("%s: Sensor with id %d is not active.", function, sensor); + debug("%s: Sensor with id %d is not active.", function, sensor); return false; } @@ -114,9 +160,9 @@ static void sht3x_compute_values (uint8_t id, uint8_t* data) act.temperature_f = ((((data[0] * 256.0) + data[1]) * 347) / 65535.0) - 49; act.humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0); - if (sht3x_sensors[id].first_measurement) + if (sht3x_sensors[id].average_first_measurement || !sht3x_sensors[id].average_computation) { - sht3x_sensors[id].first_measurement = false; + sht3x_sensors[id].average_first_measurement = false; avg = act; } @@ -139,7 +185,7 @@ static void sht3x_callback_task (void *pvParameters) while (1) { - // DEBUG_PRINTF("%.3f Sensor %d: %s", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); + // debug("%.3f Sensor %d: %s", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); if (sht3x_send_command(sensor, SHT3x_MEASURE_ONE_SHOT_CMD)) { @@ -149,7 +195,7 @@ static void sht3x_callback_task (void *pvParameters) { sht3x_compute_values(sensor, data); - // DEBUG_PRINTF("%.2f C, %.2f F, %.2f", + // debug("%.2f C, %.2f F, %.2f", // sht3x_sensors[sensor].actual.temperature_c, // sht3x_sensors[sensor].actual.temperature_f, // sht3x_sensors[sensor].actual.humidity); @@ -160,10 +206,17 @@ static void sht3x_callback_task (void *pvParameters) sht3x_sensors[sensor].average); } + else + debug("Called from %s", __FUNCTION__); + vTaskDelay((sht3x_sensors[sensor].period-20) / portTICK_PERIOD_MS); } else + { + debug("Called from %s", __FUNCTION__); + vTaskDelay(sht3x_sensors[sensor].period / portTICK_PERIOD_MS); + } } } @@ -185,15 +238,15 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) // search for first free sensor data structure for (id=0; id < SHT3x_MAX_SENSORS; id++) { - DEBUG_PRINTF("%s: id=%d active=%d", __FUNCTION__, id, sht3x_sensors[id].active); + debug("%s: id=%d active=%d", __FUNCTION__, id, sht3x_sensors[id].active); if (!sht3x_sensors[id].active) break; } - DEBUG_PRINTF("%s: id=%d", __FUNCTION__, id); + debug("%s: id=%d", __FUNCTION__, id); if (id == SHT3x_MAX_SENSORS) { - DEBUG_PRINTF("%s: No more sensor data structures available.", __FUNCTION__); + debug("%s: No more sensor data structures available.", __FUNCTION__); return -1; } @@ -201,7 +254,8 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) sht3x_sensors[id].bus = bus; sht3x_sensors[id].addr = addr; sht3x_sensors[id].period = 1000; - sht3x_sensors[id].first_measurement = true; + sht3x_sensors[id].average_computation = true; + sht3x_sensors[id].average_first_measurement = true; sht3x_sensors[id].average_weight = 0.2; sht3x_sensors[id].cb_function = NULL; sht3x_sensors[id].cb_task = NULL; @@ -212,7 +266,10 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) // clear sensor status register if (!sht3x_send_command(id, SHT3x_CLEAR_STATUS_CMD)) + { + debug("Called from %s", __FUNCTION__); return -1; + } snprintf (cb_task_name, 20, "sht3x_cb_task_%d", id); @@ -236,14 +293,10 @@ bool sht3x_delete_sensor(uint32_t sensor) if (!sht3x_valid_sensor(sensor, __FUNCTION__)) return false; + sht3x_sensors[sensor].active = false; + if (sht3x_sensors[sensor].cb_task) vTaskDelete(sht3x_sensors[sensor].cb_task); - - if (memset(&sht3x_sensors[sensor], 1, sizeof(sht3x_sensor_t)) == NULL) - { - DEBUG_PRINTF("%s: Could not initialize memory for sensor with id %d.", __FUNCTION__, sensor); - return false; - } return true; } @@ -255,7 +308,7 @@ bool sht3x_set_measurement_period (uint32_t sensor, uint32_t period) return false; if (period < 20) - DEBUG_PRINTF("%s: Period of %d ms is less than the minimum period of 20 ms for sensor with id %d.", __FUNCTION__, period, sensor); + debug("%s: Period of %d ms is less than the minimum period of 20 ms for sensor with id %d.", __FUNCTION__, period, sensor); sht3x_sensors[sensor].period = period; @@ -270,7 +323,7 @@ bool sht3x_set_callback_function (uint32_t sensor, sht3x_cb_function_t user_func sht3x_sensors[sensor].cb_function = user_function; - DEBUG_PRINTF("%s: Set callback mode done.", __FUNCTION__); + debug("%s: Set callback mode done.", __FUNCTION__); return false; } @@ -287,9 +340,19 @@ bool sht3x_get_values(uint32_t sensor, sht3x_value_set_t *actual, sht3x_value_se return true; } + +bool sht3x_enable_average_computation (uint32_t sensor, bool enabled) +{ + sht3x_sensors[sensor].average_computation = enabled; + sht3x_sensors[sensor].average_first_measurement = enabled; + + return true; +} + + bool sht3x_set_average_weight (uint32_t sensor, float weight) { - sht3x_sensors[sensor].first_measurement = true; + sht3x_sensors[sensor].average_first_measurement = true; sht3x_sensors[sensor].average_weight = weight; return true; diff --git a/extras/sht3x/sht3x.h b/extras/sht3x/sht3x.h index 0cd04c1..06f44e1 100644 --- a/extras/sht3x/sht3x.h +++ b/extras/sht3x/sht3x.h @@ -1,12 +1,43 @@ +/* + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + /* * Driver for Sensirion SHT3x digital temperature and humity sensor * connected to I2C * * Part of esp-open-rtos - * Copyright (C) 2017 Gunar Schorcht (https://github.com/gschorcht) - * BSD Licensed as described in the file LICENSE */ - + #ifndef DRIVER_SHT3x_H_ #define DRIVER_SHT3x_H_ @@ -28,21 +59,28 @@ extern "C" { #endif +/** + * @brief actual or average value set type + */ typedef struct { float temperature_c; // temperature in degree Fahrenheit float temperature_f; // temperature in degree Celcius float humidity; // humidity in percent } sht3x_value_set_t; +/** + * @brief callback unction type to pass result of measurement to user tasks + */ typedef void (*sht3x_cb_function_t)(uint32_t sensor, sht3x_value_set_t actual, sht3x_value_set_t average); -// SHT3x sensor data structure +/** + * @brief SHT3x sensor device data structure type + */ typedef struct { bool active; - bool first_measurement; uint8_t bus; uint8_t addr; @@ -52,6 +90,8 @@ typedef struct { sht3x_value_set_t actual; sht3x_value_set_t average; + bool average_computation; + bool average_first_measurement; float average_weight; sht3x_cb_function_t cb_function; @@ -61,8 +101,10 @@ typedef struct { /** - * Initialize the SHT3x driver. This function must be called only once at the - * beginning. + * @brief Initialize the SHT3x driver + * + * This function initializes all internal data structures. It must be called + * exactly once at the beginning. * * @return true on success, false on error */ @@ -70,39 +112,50 @@ bool sht3x_init (); /** - * Initialize the SHT3x sensor connected to a certain bus with slave - * address, check its availability and start a background task for - * measurements. + * @brief Initialize a SHT3x sensor * - * The background task carries out measurements periodically using SHT3x's - * single shot data acquisition mode with a default period of 1000 ms. - * This period be changed using function @set_measurment_period. - * - * At each measurement, actual sensor values are determined and exponential - * moving average values are computed. The weight (smoothing factor) for this - * average computation is 0.2 by default. It can be changed using function - * @sht3x_set_average_weight. + * This function initializes the SHT3x sensor connected to a certain + * bus with given slave address and checks its availability. * - * If a callback method is registered using function - * @sht3x_set_callback_function, it is called after each measurement to pass - * measurement results to user tasks. Otherwise, user tasks have to use - * function @sht3x_get_values explicitly to get the results. + * Furthermore, it starts a background task for measurements with + * the sensor. The background task carries out the measurements periodically + * using SHT3x's single shot data acquisition mode with a default period + * of 1000 ms. This period be changed using function *set_measurment_period*. + * + * During each measurement the background task + * + * 1. determines *actual sensor values* + * 2. computes optionally *average sensor values* + * 3. calls back optionally a registered function of user task. + * + * The average value computation uses an exponential moving average + * and can be activated (default) or deactivated with function + * *sht3x_enable_average_computation*. If the average value computation is + * deactivated, *average sensor values* correspond to *actual sensor values*. + * The weight (smoothing factor) used in the average value computatoin is 0.2 + * by default and can be changed with function *sht3x_set_average_weight*. + * + * If a callback method has been registered with function + * *sht3x_set_callback_function*, it is called after each measurement + * to pass measurement results to user tasks. Otherwise, user tasks have to + * use function *sht3x_get_values* explicitly to get the results. * * @param bus I2C bus at which SHT3x sensor is connected * @param addr I2C addr of the SHT3x sensor * - * @return id of the sensor (0 or greater on success or -1 on error) + * @return ID of the sensor (0 or greater on success or -1 on error) */ uint32_t sht3x_create_sensor (uint8_t bus, uint8_t addr); /** - * Set the period of the background measurement task for a certain sensor. + * @brief Set the period of the background measurement task for the given + * sensor * - * Please note the minimum period is 20 ms since the measurement takes + * Please note: The minimum period is 20 ms since each measurement takes * about 20 ms. * - * @param sensor id of the sensor + * @param sensor ID of the sensor * @param period Measurement period in ms (default 1000 ms) * * @return true on success, false on error @@ -111,14 +164,14 @@ bool sht3x_set_measurement_period (uint32_t sensor, uint32_t period); /** - * Set the callback function for the background measurement task for a certain - * sensor. + * @brief Set the callback function for the background measurement task for + * the given sensor * * If a callback method is registered, it is called after each measurement to * pass measurement results to user tasks. Thus, callback function is executed - * at the same rate as measurements. + * at the same rate as the measurements. * - * @param sensor id of the sensor + * @param sensor ID of the sensor * @param function user function called after each measurement * (NULL to delete it for the sensor) * @@ -129,9 +182,9 @@ bool sht3x_set_callback_function (uint32_t sensor, /** - * Deletes the SHT3x sensor given by its id. + * @brief Deletes the SHT3x sensor given by its ID * - * @param sensor id of the sensor + * @param sensor ID of the sensor * * @return true on success, false on error */ @@ -139,17 +192,23 @@ bool sht3x_delete_sensor (uint32_t sensor); /** - * Returns actual and average sensor values of last measurement. Parameters - * @actual and @average are pointer to data structures of type - * @sht3x_value_set_t which are filled with measurement results. Use NULL for - * that pointers parameters, if you are not interested on certain results. + * @brief Get actual and average sensor values * - * This function is only needed, if there is no callback function registered - * for the sensor. + * This function returns the actual and average sensor values of the last + * measurement. The parameters *actual* and *average* are pointers to data + * structures of the type *sht3x_value_set_t*, which are filled with the + * of last measurement. Use NULL for the appropriate parameter if you are + * not interested in specific results. * - * @param sensor id of the sensor - * @param actual pointer to a data structure for actual sensor values - * @param average pointer to a data structure for average sensor values + * If average value computation is deactivated, average sensor values + * correspond to the actual sensor values. + * + * Please note: Calling this function is only necessary if no callback + * function has been registered for the sensor. + * + * @param sensor ID of the sensor + * @param actual Pointer to a data structure for actual sensor values + * @param average Pointer to a data structure for average sensor values * * @return true on success, false on error */ @@ -157,16 +216,34 @@ bool sht3x_get_values (uint32_t sensor, sht3x_value_set_t *actual, sht3x_value_set_t *average); + /** - * At each measurement carried out by the background task, actual - * sensor values are determined and exponential moving average values are - * computed according to following equation + * @brief Enable (default) or disable average value computation + * + * In case, the average value computation is disabled, average sensor values + * correspond to the actual sensor values. + * + * @param sensor id of the sensor + * @param enabled true to enable or false to disable average computation + * + * @return true on success, false on error +*/ +bool sht3x_enable_average_computation (uint32_t sensor, bool enabled); + + +/** + * @brief Set weight (smoothing factor) for average value computation + * + * At each measurement carried out by the background task, actual sensor + * values are determined. If average value computation is enabled (default), + * exponential moving average values are computed according to following + * equation * * Average[k] = W * Value + (1-W) * Average [k-1] * - * where coefficient W represents the degree of weighting decrease, a - * constant smoothing factor between 0 and 1. A higher W discounts older - * observations faster. + * where coefficient W represents the degree of weighting decrease, a constant + * smoothing factor between 0 and 1. A higher W discounts older observations + * faster. W is 0.2 by default. * * @param sensor id of the sensor * @param weight coefficient W (default is 0.2) From 1cb8066165ef31ea90b30ddaeb900016456efb42 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 28 Sep 2017 01:25:46 +0200 Subject: [PATCH 12/41] Small corrections --- extras/sht3x/sht3x.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/extras/sht3x/sht3x.h b/extras/sht3x/sht3x.h index 06f44e1..298948f 100644 --- a/extras/sht3x/sht3x.h +++ b/extras/sht3x/sht3x.h @@ -45,7 +45,6 @@ #include "stdbool.h" #include "FreeRTOS.h" -#include "queue.h" #include "i2c/i2c.h" @@ -63,8 +62,8 @@ extern "C" { * @brief actual or average value set type */ typedef struct { - float temperature_c; // temperature in degree Fahrenheit - float temperature_f; // temperature in degree Celcius + float temperature_c; // temperature in degree Celcius + float temperature_f; // temperature in degree Fahrenheit float humidity; // humidity in percent } sht3x_value_set_t; From e6ff0047d5ddcf8c24f334308827b2bf59d3fc72 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Thu, 28 Sep 2017 08:45:53 +0200 Subject: [PATCH 13/41] Internal function sht3x_callback_task renamed --- extras/sht3x/sht3x.c | 29 +++++++++++++++-------------- extras/sht3x/sht3x.h | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/extras/sht3x/sht3x.c b/extras/sht3x/sht3x.c index e762579..9658141 100644 --- a/extras/sht3x/sht3x.c +++ b/extras/sht3x/sht3x.c @@ -48,7 +48,7 @@ #include "espressif/esp_common.h" #include "espressif/sdk_private.h" -#define SHT3x_CB_TASK_PRIORITY 9 +#define SHT3x_BG_TASK_PRIORITY 9 #define SHT3x_STATUS_CMD 0xF32D #define SHT3x_CLEAR_STATUS_CMD 0x3041 @@ -178,7 +178,7 @@ static void sht3x_compute_values (uint8_t id, uint8_t* data) } -static void sht3x_callback_task (void *pvParameters) +static void sht3x_background_task (void *pvParameters) { uint8_t data[6]; uint32_t sensor = (uint32_t)pvParameters; @@ -187,7 +187,8 @@ static void sht3x_callback_task (void *pvParameters) { // debug("%.3f Sensor %d: %s", (double)sdk_system_get_time()*1e-3, sensor, __FUNCTION__); - if (sht3x_send_command(sensor, SHT3x_MEASURE_ONE_SHOT_CMD)) + if (sht3x_valid_sensor(sensor, __FUNCTION__) && + sht3x_send_command(sensor, SHT3x_MEASURE_ONE_SHOT_CMD)) { vTaskDelay (20 / portTICK_PERIOD_MS); @@ -213,7 +214,7 @@ static void sht3x_callback_task (void *pvParameters) } else { - debug("Called from %s", __FUNCTION__); + debug("Called from %s", __FUNCTION__); vTaskDelay(sht3x_sensors[sensor].period / portTICK_PERIOD_MS); } @@ -233,7 +234,7 @@ bool sht3x_init() uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) { static uint32_t id; - static char cb_task_name[20]; + static char bg_task_name[20]; // search for first free sensor data structure for (id=0; id < SHT3x_MAX_SENSORS; id++) @@ -258,7 +259,7 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) sht3x_sensors[id].average_first_measurement = true; sht3x_sensors[id].average_weight = 0.2; sht3x_sensors[id].cb_function = NULL; - sht3x_sensors[id].cb_task = NULL; + sht3x_sensors[id].bg_task = NULL; // check whether sensor is available if (!sht3x_is_available(id)) @@ -271,14 +272,14 @@ uint32_t sht3x_create_sensor(uint8_t bus, uint8_t addr) return -1; } - snprintf (cb_task_name, 20, "sht3x_cb_task_%d", id); + snprintf (bg_task_name, 20, "sht3x_bg_task_%d", id); - if (xTaskCreate (sht3x_callback_task, cb_task_name, 256, (void*)id, - SHT3x_CB_TASK_PRIORITY, - &sht3x_sensors[id].cb_task) != pdPASS) + if (xTaskCreate (sht3x_background_task, bg_task_name, 256, (void*)id, + SHT3x_BG_TASK_PRIORITY, + &sht3x_sensors[id].bg_task) != pdPASS) { - vTaskDelete(sht3x_sensors[id].cb_task); - printf("%s: Could not create task %s\n", __FUNCTION__, cb_task_name); + vTaskDelete(sht3x_sensors[id].bg_task); + printf("%s: Could not create task %s\n", __FUNCTION__, bg_task_name); return false; } @@ -295,8 +296,8 @@ bool sht3x_delete_sensor(uint32_t sensor) sht3x_sensors[sensor].active = false; - if (sht3x_sensors[sensor].cb_task) - vTaskDelete(sht3x_sensors[sensor].cb_task); + if (sht3x_sensors[sensor].bg_task) + vTaskDelete(sht3x_sensors[sensor].bg_task); return true; } diff --git a/extras/sht3x/sht3x.h b/extras/sht3x/sht3x.h index 298948f..c63e099 100644 --- a/extras/sht3x/sht3x.h +++ b/extras/sht3x/sht3x.h @@ -94,7 +94,7 @@ typedef struct { float average_weight; sht3x_cb_function_t cb_function; - TaskHandle_t cb_task; + TaskHandle_t bg_task; } sht3x_sensor_t; From 649d0450de50f7e326c631d56d4ee6335a87b9d7 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 16:14:51 +0200 Subject: [PATCH 14/41] Driver for the brand new Bosch BME680 sensor added --- examples/bme680/README.md | 35 ++++++ examples/bme680/bme680_callback_i2c/Makefile | 3 + .../bme680_callback_i2c/bme680_callback_i2c.c | 99 +++++++++++++++ .../bme680_callback_i2c_two_sensors/Makefile | 3 + .../bme680_callback_i2c_two_sensors.c | 117 ++++++++++++++++++ .../BME680_Callback_I2C_Two_Sensors.bin | Bin 0 -> 246224 bytes examples/bme680/bme680_callback_spi/Makefile | 3 + .../bme680_callback_spi/bme680_callback_spi.c | 97 +++++++++++++++ examples/bme680/bme680_task_i2c/Makefile | 3 + .../bme680/bme680_task_i2c/bme680_task_i2c.c | 106 ++++++++++++++++ .../firmware/BME680_Task_I2C.bin | Bin 0 -> 244352 bytes examples/bme680/bme680_timer_i2c/Makefile | 3 + .../bme680_timer_i2c/bme680_timer_i2c.c | 105 ++++++++++++++++ .../firmware/BME680_Timer_I2C.bin | Bin 0 -> 244384 bytes 14 files changed, 574 insertions(+) create mode 100644 examples/bme680/README.md create mode 100644 examples/bme680/bme680_callback_i2c/Makefile create mode 100644 examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c create mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/Makefile create mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c create mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin create mode 100644 examples/bme680/bme680_callback_spi/Makefile create mode 100644 examples/bme680/bme680_callback_spi/bme680_callback_spi.c create mode 100644 examples/bme680/bme680_task_i2c/Makefile create mode 100644 examples/bme680/bme680_task_i2c/bme680_task_i2c.c create mode 100644 examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin create mode 100644 examples/bme680/bme680_timer_i2c/Makefile create mode 100644 examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c create mode 100644 examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin diff --git a/examples/bme680/README.md b/examples/bme680/README.md new file mode 100644 index 0000000..d39c258 --- /dev/null +++ b/examples/bme680/README.md @@ -0,0 +1,35 @@ +# BME680 Driver Examples + +These examples references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [bme680](https://github.com/gschorcht/esp-open-rtos/extras/bme680), which are provided in the `../../extras` folder. + +If you plan to use one or both of this drivers in your own projects, please check the main development pages for updated versions or reported issues. + +## Hardware setup + +There are examples using I2C with one or two sensors as well as examples using SPI with one sensor. + +To run examples with **one sensor** as I2C slave, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the BME680 sensor's I2C interface. + +If you want to run examples with **two sensors**, you could do this with only one bus and different I2C addresses or with two buses and the same or different I2C addresses. In later case, use GPIO16 (SCL) and GPIO14 (SDA) for the second I2C bus. + +## Example description + +__*shtx_callback_i2c*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. + +__*shtx_callback_i2c_two_sensors*__ + +In this example, **two sensors** are used which are connected to **different I2C buses** but with the same slave addresses. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters for both sensors differently. In this example, there is no error handling. + +__*shtx_callback_spi*__ + +In this example, only **one sensor** connected to **SPI** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. + +__*shtx_task_one_sensor*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **task** in conjunction with function __*bme680_get_values*__ to get the results of the periodic measurements. The task uses the *vTaskDelay* function to perform a periodic execution of the *bme680_get_values* function at the same rate as that of the periodic measurements. In this example, there is no error handling. + +__*shtx_timer_one_sensor*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **software timer** and a **timer callback function** in conjunction with function __*bme680_get_values*__ to get the results of periodic measurements. The timer callback function executes function *bme680_get_values* to get the results. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. diff --git a/examples/bme680/bme680_callback_i2c/Makefile b/examples/bme680/bme680_callback_i2c/Makefile new file mode 100644 index 0000000..7dc4772 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_I2C +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c b/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c new file mode 100644 index 0000000..5ed1098 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c @@ -0,0 +1,99 @@ +/** + * Simple example with one sensor connected to I2C bus 0 + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/Makefile b/examples/bme680/bme680_callback_i2c_two_sensors/Makefile new file mode 100644 index 0000000..5b2d776 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c_two_sensors/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_I2C_Two_Sensors +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c b/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c new file mode 100644 index 0000000..153fc2a --- /dev/null +++ b/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c @@ -0,0 +1,117 @@ +/** + * Simple example with two sensors connected to differen I2C busses + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 Bus 0 BME680_1 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + * + * Bus 1 BME680_2 + * GPIO 12 (SCL) -> SCL + * GPIO 14 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_1_BUS 0 +#define I2C_1_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_1_SDA_PIN GPIO_ID_PIN((4)) + +#define I2C_2_BUS 1 +#define I2C_2_SCL_PIN GPIO_ID_PIN((12)) +#define I2C_2_SDA_PIN GPIO_ID_PIN((14)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor1; +static uint32_t sensor2; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_1_BUS, I2C_1_SCL_PIN, I2C_1_SDA_PIN, I2C_FREQ_100K); + i2c_init(I2C_2_BUS, I2C_2_SCL_PIN, I2C_2_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensors connected to I2C bus 0 (I2C_BUS_1) and (I2C_BUS_1). + // They can use same or different addresses. Parameter *cs* is ignored + // in case of I2C. + sensor1 = bme680_create_sensor (I2C_1_BUS, BME680_ADDR2, 0); + sensor2 = bme680_create_sensor (I2C_2_BUS, BME680_ADDR2, 0); + + // Register the callback functions to get measurement results. + bme680_set_callback_function (sensor1, &my_callback_function); + bme680_set_callback_function (sensor2, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 2000 ms and + // 5000 ms, respectively. + bme680_set_measurement_period (sensor1, 2000); + bme680_set_measurement_period (sensor2, 5000); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // sensor1 and 16x oversampling for sensor2. Humidity measurement is + // skipped for sensor1. + bme680_set_oversampling_rates(sensor1, os_2x, os_2x, none); + bme680_set_oversampling_rates(sensor2, os_8x, os_8x, os_8x); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 15 and 63, respectively. + bme680_set_filter_size(sensor1, iir_size_15); + bme680_set_filter_size(sensor2, iir_size_63); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms and 400 degrees for 150 ms, respectively. + bme680_set_heater_profile (sensor1, 200, 100); + bme680_set_heater_profile (sensor2, 400, 150); +} + diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin b/examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin new file mode 100644 index 0000000000000000000000000000000000000000..f9397a753aa996b5f4663eebb9d88668e7734d86 GIT binary patch literal 246224 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 literal 0 HcmV?d00001 diff --git a/examples/bme680/bme680_callback_spi/Makefile b/examples/bme680/bme680_callback_spi/Makefile new file mode 100644 index 0000000..a0dc401 --- /dev/null +++ b/examples/bme680/bme680_callback_spi/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_SPI +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_spi/bme680_callback_spi.c b/examples/bme680/bme680_callback_spi/bme680_callback_spi.c new file mode 100644 index 0000000..94b0aaf --- /dev/null +++ b/examples/bme680/bme680_callback_spi/bme680_callback_spi.c @@ -0,0 +1,97 @@ +/** + * Simple example with one sensor connected to SPI bus 1 + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 12 (MISO) <- SDO + * GPIO 13 (MOSI) -> SDI + * GPIO 14 (SCK) -> SCK + * GPIO 2 (CS) -> CS + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +#define SPI_BUS 1 +#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor at bus SPI_BUS with SPI_CS_GPIO as CS signal. + // Parameter *addr* has to be 0 in case of SPI bus. + sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); + + // That's it. +} + diff --git a/examples/bme680/bme680_task_i2c/Makefile b/examples/bme680/bme680_task_i2c/Makefile new file mode 100644 index 0000000..b7bab98 --- /dev/null +++ b/examples/bme680/bme680_task_i2c/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Task_I2C +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_task_i2c/bme680_task_i2c.c b/examples/bme680/bme680_task_i2c/bme680_task_i2c.c new file mode 100644 index 0000000..91f106f --- /dev/null +++ b/examples/bme680/bme680_task_i2c/bme680_task_i2c.c @@ -0,0 +1,106 @@ +/** + * Simple example with one sensor connected to I2C bus 0 + * using BME680 driver and a user task that polls the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Task that executes function bme680_get_values to get last + * actual and average sensor values. + */ +void my_user_task(void *pvParameters) +{ + bme680_value_set_t actual; + bme680_value_set_t average; + + while (1) + { + bme680_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); + + // Delay value has to be equal or greater than the period of measurment + // task + vTaskDelay(1000 / portTICK_PERIOD_MS); + } +} + + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Create a task for getting results + xTaskCreate(my_user_task, "my_user_task", 256, NULL, 2, NULL); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + diff --git a/examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin b/examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin new file mode 100644 index 0000000000000000000000000000000000000000..154e34ced41835f759ae86b79119bf342b5650d2 GIT binary patch literal 244352 zcmd444^&jwxi@_N&hY2VUvM;G&@%^wnS_Zm2Mj|Bapu6_5QhpAMNBb)(IDnxqXetw zHMfX?*jw7yXp)*+l8!cMO<#MBCbhP;HzNrIQ*4mtHkxXSBuzBc1QCrIne+Yj07h+Z z-}hbX`_}qg>o7C>?6dc?pXb@n|9$+Fqg;iI(Myqkb6CoJXgJZ`-A;QHNzz1FD#2|& zWYi5)9fCT?c(2X78J{hSj9&Ah{xcg-T~!b7=+z&8`pW9Wy(gI`*fGu`@YUA$pY_>S zezBFam#;O4B`0lB7=aV+U&0k;t*8AD(Cg@`CdzhJZ99>)j<)?xl^H5IS5_#2Szmr- zr6b)@)Sg6D3myI=e9zxhO5n=U%ZkV?p|y;r2h}J=dGrDLxVemRo!#cpC+zLraqQ{S z8!xXmA9Cr2jiTty1gt_8fphS9dgw?%u$0|?zE(5Wm zZrB4jfpfb#(cNhVl5z=>_yFmCMQwX0X%hddHpk|;Rn@_Q7Ux}Wu^GD zxC*1=pO&gs)xW6j80llbUljA|LpFR3EcFH!WTmF!YxPortEgTO>b_i&xvhshB!o$G zhVQ)U^&9cEEQ1X8)-$m=3$R98OpUXaG(bztaZxOhyH0g%+AnJab322lZC|L}ze$oJ z6yOHLEo8*_18w^plQ^IfsM_X4qqikM=n6jNvs1Gq-e?l}V#=SDnq_AEKePy8|8dHF zQB@)>1fUe#1pp)xfKuAd-yz8KFd^6En6_i;b&v?W*vqBqqw+vVhwOS~D|FrY%(z23a!5`pn%Y!bz0 zG#V2q%E;jY99pB-{Y&6xFmbi~2U=o}w@CDJt*pcz%MRZbV*jkLf05XeEelOliOD-# z6m!LPGjJ1P|D>=dB=&6$ZSHFh_o%i0O_n?e#9sl&X(dYWuj=#kQt_`f42AEZ;$Nd#Dn39^TLD-X;Ht*O zc|~u~Cwjy9KA|%P>JpEB8H3U&PuzQEP^SSk1mIH!(xKyxf%Rx(0LxxOusEih8> zfE4_dV3vXy8=DtAc(aP2Y#+pcPB3|w#3j0qo6gX?gAyP~?;IJ5P(#53L&0D1&8eUV zQyw3iFU}qc{sv>61V1}k2S+N#dml1N0Gm0f@u4L;GXLO(z+9uv{lcqKWRd`O{iXnv_V?DR|38 zA;X_}JK00WOym6P{$B)kC4&=XQOcyCufIQal7_gE=*FB9lPGt^T(0K*83ut>x~>XS zyt6mqx8*TPF!TR@S1C^^UDrV1{h3+<*X&Ilxq{TT{jSN8u%Vj7@YD;fQ%59;gMgyy zO-!9O^gd%}TIxlGPioz9I>ZYr=@9*Sy)9@~z4w#Tssvb}(RFvUQQbY|meC$S?22f52a)q@F=bGrL;HOy#i=hSk| z3YtzMT+l%5g?Tk%y=cRx7pZW#$jL9JyT7Ye)9z1HCtt4je~WzoYy3OkqJoefr(hN{ z#G&$O4yR<8l|N*+&p095PGZk@cG*s-{DLH>fq$IsVJYcdPJTDxck{6=orbnF?pD5u zVQlb4G@@1)na5=&eZ2AbWM^j+R9C_ZT7ZXFJ`ORNp1F@(Z=@3w8Au zsxxtGL+#Fny6%6y%LZ|l+vfdB$LZ8L+hJotHpK;#hwb|@gwuu#_*KB@hVfx%?6O_< zm~F6J#v8H4U&k}mdUei0d|tx^dL6EV=sxtNdd7!tr#buy2*)c=GV?NtB{ar%*O}^d z=8pJ0f^9^dm+P-Fl|s3or<6kto@^Ni)1Uk{6(S5Rb_Rbu!o1wJZXATwE63<`RdyZdWI;o|o3B>dI$4d_ai zN?RzE`MsUn~se@1u)g&CYwb;0^gvlk%w9DHK$e`S^fIdUsm) zT$86V;1fn%augU)9!)8D)b92WwW!RmxHA9Bj|RUkw*7%}7&>%UbaXG7(e`Wg=+onP zOUp⁡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

_8*2zj*1i55 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%0D63osjE` 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

Of(axZx z&v%#BRO7nMT}9NCmag^Uc~@4~RhGHG7F{7%<2iU|@#%7Pd_B5Hb$w;^S~q01kbL?~ zQ~3Pcw76Q-E3OtD2vxl6PkDaM0O9M<2W7KA1+AZK8R3pgw3aE}IHm6ScBkT_2tqQw zZa2TsEz>f}LdePrI9H-mdF%POTHfVd!~5w&`-9uNuClJi%h%No2i7LiBynZDYeT&o zeHz`TTIP-QH6ZuOIy_qwjV!P6mbpA@@OaBn+@0{XN_b5vjagggE*p+f+9tcu|BNOO za9zzB5K^X9niYaN`#av^oGe};6~83V{X>-bO*+YOSJiko@Uq8KQz|RZ8!f6w53MZq z54|e6fp$7NO-JcRZDC+ z)+y#M7p~vDJoPtqo6av87nn5lE3zftvy#7<1%tT?>YPN SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" +#include "timers.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static TimerHandle_t timerHandle; +static uint32_t sensor; + +/** + * Timer callback function that executes function bme680_get_values to get last + * actual and average sensor values for given sensor. + */ + +static void my_sensor_timer_cb(TimerHandle_t xTimer) +{ + bme680_value_set_t actual; + bme680_value_set_t average; + + bme680_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Create and start a timer that calls my_sensor_timer_cb every 1000 ms + // Timer value has to be equal or greater than the period of measurment + // task above + + if ((timerHandle = xTimerCreate("BME680 Trigger", 1000/portTICK_PERIOD_MS, + pdTRUE, NULL, my_sensor_timer_cb))) + xTimerStart(timerHandle, 0); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + diff --git a/examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin b/examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin new file mode 100644 index 0000000000000000000000000000000000000000..8b455f1a9a0ca784e83ce3377b052ff746e1fb58 GIT binary patch literal 244384 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

_8*2zj*1i55 zaHtf;cA2&P0pJxR&}HWONi4}2Sq?VIji(AL%2!m7d20Gf%I;i?d8QIGg=ex@oSvDr zVnKEW;la{#N(PuV&m%}VD^_~)t*8KN$2{d+slP8`MRCEJIgwSdT&c5UJu<}-#=DYC z0RU!6PD!@ek}X_H_JSmCL3XA&*~X_u(sd!qPW?I1MwB!Hd+(+v3Q}Y#x|H=6c zFMhscd3oVVOb1+{)4ASBl2R)-IGvaiRyfyhs3>%cK_NGXqt_zG8?6Dr@KPD8*O#ojzl{<_%;8GctXZ+rzJ@ETS_xsR zoYSu@=XsK2RF+62WL)GdEL*X@sHnWKLJAW&cwXVGTCvJrf_gfODyk9*Ce%rKi%-r}0$Dx`M(gB2aPYqYZ_l!j>d)-Tjh~ zLmEVJrpS2IBEH~f96}WYK53l%`ysc{v0S%M)Y zD}YSD^8N@ZF{)qa!IA`D!W*)oJLZt4kM*X6s5sIf^y7m_Bl!weg6`L>hu8<99F40i zK<|RcfME&WB#rbZ_h$V9f+vMd6(XXdW2Z}WK&mN~S3XKPgmfYcJf)51W8@02aXw%V zHA$QXHHa*T=I}~-!UM+KszT(M!zHDf(ifn;T*~M}EN4ktv2ao1Xf6azNn-)bCg_L% z@3@oN^b>s{#S>~HxLa4aVhp)byrTlh!(Rbp{E{LMVpbNfy8CP|05>0vw}U5<6poc1 zwz(4P00LygI?ofC3pXHQ&070POoO0z&RJ3JnJA>y2;L!1BE_+ACE`YxUgc6fO3Lky zHHB2+I_ZZR&#ft0RgCq9v^>MSvJOkPd&{nM>no)yP_bkIMu-(aO4pLo$uC!F|7GC@ zEbc1EE39VhSjdf$G_`U?L4^+GuOIzgl)RWrw`3%9NoK@?UW&ncH{AU%#gRPv(LCgr zgyToU0t=?%j0|oOsWDJk#az7*44X>s)m zy$4yNDLi9g-FiqS5|{Rr0Z>x=3D1^@7|=)@`hLZ#^()HPloHI{A12rUE{lp5Ek-Y- zE?lvA;fh5W$;qU4h+jvd$5Z!E!vR%`B~0bM;Co4^%=ASNY?2lb zU;r4L7r!jST1&gT|DXuB^;dL&}Ma`f|4ItWtV8hpn7Xh!bs#~EuvXMq<_ zk1ygD6|O6XU`RM| zkkN9enJdDeGs=vaXi_s*2QVRFO2pP$X0%ZYzrkdy?Y7&1fx6KyqFcJz?nr4qRY8=vL29(XGY2>jv=}c9J<93p{#LM1csX;)=!Ab) zpNl*AtD(oxOuPqEJ(K@qLm1z`^yT`F++8^JU+cR^+wO@hcmN`>hi%Za{MRF4P@xMS zjy$jksN>qVAv(j^GcX=tA{_I833U3$Z~ZuD{iE*R(GT1B7yCzyw}0BN_yFSr`+w_L zyq*8lulP&xZe9E0)s7AH3or!o$@XxV4}9SxoDnK}0AjZITr8UZ05;HnEm-*ILR&wb z#b5Mf@)tSd^1p!N$2I+NZcu;G0t4+I~1H1fbg&I0xi z3u`*?JibQ&yCA&!<(_6V$^J3r-q1_FbN1AHz#`Pu@62>DjvIYuB7g4e~iKn`3M zVCM~;V5|>GJ^D?jta?F#IN7%B*T%1Ig$5A&n8NZ(i;S(>Y*M9am9Z?cV{mt~(@}*KHKV!RrDri$2y;qu>oAKRsfuU z{q+87Ie(^9snq}J`A^@!T94ONsnweQ*ZTjd{hxmC>Ua6KA+FUz7KF2Tmn+KmZXvIAae=qmh5nG(CJ#q~^gnQ&`t&j=Q)X?J>1oZ-OfoB$EO53K` zy|3ffd@r||=n5W_bw;g4P^}{nI!nl4oOmB3)x{*PM^;UsIz`6t+Hn(j&Vdp-%YsPP zS#-WaYaIWK(SBZrS&$SvOwV(rE(~-By55ZTz0>lER~p3oz2A7$j%=2QESe|iXqr-Q zza(c1bk1x2mBPs?_QDw=R&6^q!7aUTZ~E&-TZhlaCFQY0$7AGptW8CHo$%L{5nGw& zHlZ3qj=C|ug1%O9bP{cP9Yxs!tlu#^j{1=W)ovqnkzBHB zpTXi(Ih=)3^Xb9<$1hYoEHBSrF@Asgd||=% zY#~9+aQaWmG|1a?KZy3!=j2*z>&G&EfWQ1Necf;0H4_kl485=bmtKWQTI?VCU+7~$`Y^;OB|0aRH&VNW2okNyu|>EM_0 z%52_qB=p?h5PK3=n>XXX6)S{X{0XF0miJpPge%1t35`dy(-!q3r`6bNZ{KV8*5U6f z_&NM`@2J)B{U-(q3)0p{lD9RuVSv872S$g-%=T|(_jfXS8SE_jRu%?JexfQ*F8W4h zDz+|?W&jlA#C3`DX~_E|(heKr5MSI(1(W}&Wcz2bKhkMG1uqXl>7UnG^r?&trhdj$ z3SrYQ0tS`&6`Gv}`zJDekq-{Wh5{l+DMXdh{jr=NPGpJV#`^VH)Z_gnjJ!6Y&yDD> z6~EVT4Olws*3qK~%DU^aEa;h#*pZ)L>C&9MD02t12a?+({BIb3UusDZzEq;KX@-0ZE(oD>ss1QQ_spq9w)cqQ_788e8dPN(*m{V!rzP&m)MDWnY?akL= zR8L$NP@0N}qd=NS>5PjfYf|DMnbh!X5=C zmpOV;{Xl2CWPfRUO#(gvuZ1V+20m;?75OHj^lh|hPZwfKR<==+n8}RFOt#c(GY)9c zMN%n|r5;jseWN((Nzq<8po&^A7TTt4^l0Xpl!fWOerpTFUbx-vEyI|f#P0)KqraF< z%xOoE9Y8>OM2EM8G{t4A*3!-cEL(5?PNt`MpQP9i&GUWDan(NI`8SC|r*j7yt1`3Z6N6ROojHNCUVLc&&q>Yh$O z+&^V{h_{PF%6?p?2l%zXu0#IzBQkP8?B(Sxv3CyHE^J>ZAJY0drd6_ORpPXz4T(|l z?@u&uF*Hnzs(wdQQ#%Dyoa`c2tTD#5-^kAcRet9VCzO6|I#P5+P7{?_;(Bef_ZAlG z%Aus$JDA0KJgTT*B4guTZ~o{tU?Br%cx!Gaj0>&bjyI*Gi8nGZm)^nQ!HMZ7h6ro` zRMJm;i;)CKw6O4&aPk*|Nqt$q=t*!N?1MYrw-#A^hWIyW&dx8 ze*y-t?cclhFJ<}|e=*NU|0buU?zCQ^`tUFqIGq18y6d*i*2#B zwt8=6#2YOy9~>THvEzt&@Vd|R;4?X&%l3cBbnZ`z1v3ZYPh|UhGQID*XS`?q&pwh# zImQT+=ARSz33Kal1EEBw&@lF3Q+m~;jGsTB_F@V+ii{uNw>6^k+06cpOmlg&^!c|D za}?;oBQ6_Hw78JOWtt~1+F|dB(?raj87~Zpxtf}b6+`~vi4kG>;pcmKjfGyIc3d!* z7kYhuvCumy5q}$8-o`C9ezDLiOvT^&g+;-*MR{o9UKs}|J-LXhsI0i z#Y^W0ck%Y|tpJkOV?-`5yw~`}La+a0GyF!6o7WHJ$kA#N7xFqnCR;fF@pHJUA6ePB zmcLv7V5PX8&{sJnM~{B^_;)Ci78W`c`0H6%g#Y34x^PPS_lzx+ zuG?(n#Lwe!DE6PRw*hA}RY|8G7bd1^WcJS*Tjg{1Q;k5ddDQ>qIs1u5xOL#z{qEer zi5lN4fmk8X2|e38v;GE8Jcf#Bs|Gyq9+XzQRI0vnIT{i`tk(Jz#1{(1D4s~R>eBuI zZ>80(Kb*ti!?(-Toi(rr=^r^*fCIZmdJ(>FsDDJ~Y@(?*xxek@;mt0Ku~=&gM+N`V zME|?hVke8mH1$L1nO>1x4x5r@Gq@LcFSp+KziK3O-{Fom+WX`zKAoZ%ohWje9<&l} zJ;S56;m!PBxC8J#&F-B7oRj&24JvEIX?k91zasm-d{tMOHwAu;Q~nCQs0YE*)ij`H zEP;m93LR}qU~d|$5)>=!OhG7l3>+ZA5Gf5O z-yF7B?a{{8)8_;h1l^(vsY3`JVc|CT*~;q9bK1(Qfp(&OcW7ZxI0=0$!H-{mP}g@y zDXx#;Z{`rh)ZqPZhMx!i!mSU>3o0u34G2QaZGpP?39bn4;23_Ui_)-J|`D_DOddMgWwstKvN!WruXnCS62`115jE^5Xl~EV~7&` z^Zooo`_JOrR$L9=1YhA>@tOaFA{KZ^6uLa$O^PMjZ z*&)LF0H){5U(K452hsA<+EfQna9qD1tpq(0<6wca4^Y%AA7Fj~U_XIgmbc9o3F%}m zq3F&=uwmmCAb!-}$4RY*KKc79Di;UVBS4F1>*u^$C}0?Pulauq3tO)C34y`bEx z9i)S4cYwinrCC+pRn&xMtO}m}MQMV_r?OCWtnb zgQ)^Mhn;9s!t&2w)YW3ASJynX|6JA~-ULkj*$ycSbX5YOS7dkUVScD7$X?S8I(OKt zMoa~8eC|Bj;*Ev}tL)L<)w=Ih5NDB@*2 zUikHVqK>Xx#bRFz>S4tXN)jB0O1~q@Opw#_R&`>A@dzB_)e7r4t)w=1cj5;o>8Sm( zZ)#A7m>Fl?8Aaz6F4X}Q?S2)DaGYt2E(K4VsNw_-c-ghQ&{0Ic;nNpQYp9~09V^;gmgX1rt^^i5S8rH@#W;rSm_Z=2G z+qEnE5sdxeL)=8C5|J6#>nhIhJ|)q7-lvY19uVtv8}CUrmfE`KHkWO56+O=%f?OBT zJF{*0D$xfSz(^O2t?=+Pf2gfEveG4-S-)=piJckAeS%NyH(vH}F6u1e?Vnfh9I-i8 z0z0Q&S9;Wx`1wB5PU>zSA13C%JDrm$+;}j%gYp%$i(iStW< zn;U4gmOsAh-e>D|QOymdPNnAs>o+rA(bA6CyhEStN;rPy`-yh|V21a19i#BPFlpi) z^yYz~H1~A5?|ent0RPvCcVI9#@N#^i=o5K)aM)MDPvjFP7CkryjF4DRiXPyL!`k6T zv24kTxU&9#}L#f+L{x?BUTd{$$d-s9>eWnNd)&C*f zKCaQw14wZe>OT30zB}Fr4#)p=;z5pL9tN z^ag~|1bsMpj4-#QJy?Z^PkEi$0;jeQ%e0L*;n`rfcfTymorn#E{_Nsq*!a>vWzUpO zk2hLEAtJNi-BZ0s-se8zL-g|?C(p5&2_emKdB&lm!ON98MBO=yv>4}Et%UR|Veu9m z6k3AG@C<@4{rKk*LIaV=3Xr3twNqw;$S}gDb3iOYNcD-oMgGh`>( zKm9?9&7;rr4uM~%tK<$6-EX)2?TP?FUg%&ja?tjedx0@K$*II#ezWUk7Mn|iT?z8Y zG4vT8oT9j1ndQ#M!$~Mv$xC`7o}^O25H=$^QJ4Mo_^>en6U8heUBO>K7!_huE^U+L z+U633OsZ@yT~s=w*)roo9HjO>UuXGSH(<|x2LQY~Hn*#1*Ol(>K~c@06SFb0JiF?j zvieFF8W&R#Ect_+mxmBwyop}5>)dD(t739}Y@eVm z8ZHB{ZHo`zySPCW9Ti^oN5dayEFRa*L0p~w4BX)d7~{sc9N>h`e$>Yy@}wUar6Vco ze+mFT?xVLo@Q1o0Z)>1~WI$!}@xw=r3CEc}D#qk=Lo(tl0vlWToU^3Ly>;dR^0R;G z2NoW{7=F3su1fdq2$LwfZWiZEJz}( z^uu@?DiiVR2x24k{V~3OSx_N@Mwedp1gX}mv#WlMG2Y~`ud8>^qVFL}%Q8wch;Lf2 z>c5dHa6s4q20BjL%m)5~jN7A#3WF~Whcl2jp7QrcTH>OpYF!LK<}A08z;AB=HPrn8 z)KI8Wh`Q=U=tq%*T3V3Gw6(b}jZLRFyqxC+6EkIJmRFqoCbK=3 zMkc;p9(=#UUB>4iFuWHr9106B;Mz01*ZzwiAj1zQ8-{tfDyA2_uZ=P!6a`nL7=Lsf=;jB(Iy4T7n9XCJ+^Esc#{;>AYH-8tV2 zd{N@{_}_GR^SWz408>v|UsvUD*>W4Go))Fwb*@!FzE^sUE#h;dGt$%BFxgZUmbJz- z(cqx9P4-jU9FoZX8i!>-lDe16n0|8BStO;!ti)PwdKqhp^I;5+nJCO@)kAtwCf$ z8d32LRi6&w56;q?xi=ISvwn-9M~VPdhNy~K_~(4a_kafh z&&U+d=01i@u;Z*gJm?3U)zy#lsG);S9azMYTEy4~I|^CNNRpUoxjTWC-7vCXYUTXC zK*crnARS$55BSh6`9 z4+A!2v&W^G;Q&cBT-1(<^dTWq@KOce3Ba}8WjEw2M!GU8>Cs+1uX&$S@Q}Rw3(t9C zsbZ`V=RpU5;(qDJ`4VHVqsmIU?=bK0O5ueGeK~)R^9ud+L-qAI?JAx-cO9PFjx|fb z-XnETD#p*xLuZ3J_tB#LzT=7m>}^xES57lIAy|F7Zx}1~CPBCI^D9!UjNZtnNbTmq zx7}Ys^GsvC4lWS#sX6Bh`cN z(i%SOiydhJI}0btaEh(yfo;{hEh^W!{?l{mmFhw{ zc*C|(n#xj4T3@2A^*FNoS7Tr;_z{1U+VkZM?61A}#;JB&hx3MG%pN+Jodoze$qSEG zS|U2(hPCz`E<`$@bK;$;Vma@?k(`$DyB!@Y=MA|D$=PDE=DDN}foh)Dst(GBH^^!f z3Z?CJAOdIbS8Zg`;h5~yI!&A`(K?JyCCR+N?$dkj!<=Iq;T`^IyYFB|1$~R(qJ@Ir zR5@=rQ*p6GnOIW1;S4K?wXK)+tnF3#a4kIFnLef&YCf)QFHdvak(M*CqKLmp#^T(%>h&W1B6LzdBMWsAk!7+GK>V zwAbtba1GF={^Qrd(Ex0zj$K#AiBX@iaB>bJrgGwO@1H+}4ELu5Pd;eAC2@am z;5M!ep)YJbYClqV+1H*8^6&;?|6VT2>J>}pAdaxAPAme5$JI4G?C7YPc93LPNl!!8W=HIvdzgDH0zF{5xtj{Xs5e$&Zv3u zZq0MPF4{u>i+JaFxnDE$#MZ+f$)Yo~&ZK3mEYxo3D4RnyT&2)4YEo zk;CO%&$A=Ph2Z(?1nVf=#o)NRvsMYUgX-VrT~;Zv?HYCn}d2pk&J zDcKr&t_M{{+2UhNckcf`;rvUOf3EWo|EllW)6avq1R0JzgdY?&7o~?mz%$$4bi*uv zPhSSbYP5v*iY-T~hsy5T4}dEN@>UHw*ZMGp(8BLlLIfnm;2gXgq5$#3KL4+1@RkEh zAk`uVG-1o&v>_}!Ugb|b*IFs}%Lx24v2k1M?CRMI#KVu?`26qiaM=hWknH(4z>OaV zG#(hDgg^oUp9V`@=M9+YjWcqfj<3;v@%qAv^hUIhqa^O6tv0bPQ$)1XC4NKyS%0-D zLi)bpybH(-L^iLAQ7G}7A)XbVg9w~ogq{=9@HZenS2}|i1W+&qf0_84m+%6H0;Xz7 z9{4=kYT<&TU0*_9qEyMranWpp^SQR{h-c5$@t z?aplhmoP0`n1XEtAe-iVieK0A>!+N5=hrLvbsLy=q7!sho%1TB4NL~6pRZ>g;{WI4 zhwt!R9=9P-Am8KOzVqy&D|wys*nL#|!M?d2Doy}<*iaBQ-HF9dBKGpFh<7Q)l=NZ# zB`B0V?Mi(2q4?c7`Kd{`na^)(|AhS@Ov`_2cD3#6pLC;m;Scr|TeAhcdtbcbvaQp2 z#e3s7Pi~F3GLzpRL@F78KQ3Y8C#dRgeR_7$X>uv%UdN2dGBlvCgt+dsSoz;dMa;P|c zYk$R5UeOXlpW-!d{?dQ=%hp`E28K!_fD^o>gN30hdu1WFe33z% zT3I!ypyhl9RnJ+a^VJ)Q={Duma`9N23-W=)g$r1vdDX1`7) z^rUbn%BnJc8(YqIU)6%&>buSW_gxM+pT|I%t55G!w}Qx@}o+i^f8 z2~V9mNQ*xs5#ebBhAdy=hHH8x|Ea1mw!gP88{H(vo*X&G|4)UM^0PsF_#Q5-GsU_4 ze!RfZOp6U7OqUQRCR#+03YtK*lVa5p{7=~K0eXiOv1Zx!N2?Ys!gE$kfn z(In1H>*NHHhBxEE4`K~$5KiSlN8B!Q*0<;vf0=1gipY@CHIOrR9=`pe76AT*a0K55 zL@b`8Uu?QLeP^;wjMa%Teb-`>F@2}T`a=3^ok8(!ls*W}i2eC~nR`gIZM3A6{-Vyd zI96qvQZL$8-rnK66Wii6LeWFq_0~_OP2o zHXNrNR4k+UbN6pHXHD+>R%}>KKjh?l(Jwa($_&30a!&0Q*Bj`2yfFCaW(1;|pCil_ z!^7zmUN6nMkSk47`1P)Zo1wO*H}dPs+qT#{$L& zmn!kIGA_)(+;V6!<}GESn5VQ)-Mo12EsUJqVN)iS0x}j7n=K}ab7MJ1CZ@rXMC;9< zXe~lVUbAKp@X<4Eh`)~Z0_H@Wk(m>M<2K(*b~M|xX00JYlnF}BJU1f>q8^+` zAVDvUH=RM_Y#&lPh-unFv|YfmAZhUqUp2rJqh|w6lV^Z?_JE%;KsGTrE}uBTg6vdK zbvby{_stEP_q&h$9FiDU>QUN}a@QFt@wopHnWkR0{=)i~#0ZQq#xyiPZLGRKQ8eFG zUcB_)PmUUgi64I;-hCG%!Hxq%!-iXh!SpW(8Q98%5^6s4ug(s4^YQ|A24H`Oau>!fe?0T-Nt4#Pmc zvYnbvs@u)jxx0|U0C|8`_o{Ts*$l!2K~>-TzvyQv)`umqzXAI!!XV0EHZL(8n*;m9 zX`;Wb*RP7#wKvNC-}OSvBqRqU`;by&DArqAY6wZh{|?EaSRR5J189K+Fz415?4F}; zE`;9o&L*94-)w5(z$ccu#8^8u^Xm?$DPKvS}gSa}9 z%ec?@I9Os6VUo)(z)tJ&O**=7wt(1UE|#A!p-pEhwDVG#NjKcmtNS=S0`SG$z-`+-}nDepw>>nMn8ickRsUGajiuDwxPhx%U*+}769 zGyD>qW0~vPxj>$NS#dBmgs^jW&i9Q;1uVnxzlK=6ZH# zsQzMv*ajwi_Xw)M>@!n){d>$H3TW$nid`e*jM|R&9vB*w_2xYf!>KRj>XP2-c@_^X-5`zCU+l`xqR7aq7BeM_Mh{_21pJ;uAe7B=<;u-6in-J2zJ0^o*Dy~slAA8d`!JT0bB+*c;OL(vAJ45MQ z!-B(wg@b1W+mpl7GjzsjqccuI&51ge+3}QHubL6)e_!R1m1ovp+RkGVdG%d5lQnOC zqBD998YZ0FIy$3>zR&rc%0qJJDaXldEoi=1cB5b&bDYewgFM}xLAUUN;;Jk5y)xa$ z-_F?8eoB2>&e-KU{#`RSI+j9G$*us{&^zWIPWy-L$EwfqsLiX+FNos?Zev`#*{=Nv05-Jk=XLZ&m@xQ;BeOBs-&CLDWoc9sJ9Ds%j@cIN*rIB z*f4Z@Y;*JJ8=1OIt}mJHv8%uaqvc<1!iOxcs?w(CHNAJK_^q$8k>e?+?qgb`I2-nY z%_5YAvlC~=xCkaIhy;0a&gbot2J4GI(?MAmiwTQbm$RHkxhiRBGt!m*4VhEx%ii-Pq|E1qWK+DKZ~q2*+Od_62g6+Wz8~+3M$3k@xsz-GQIZI65o8c z>L$|m6!K>g$&M_?hP+fv7J`dqW*TzM8pp2IISLfaD|G~1rclfj_lE;dB&qG|s9>*?`4Go)S28cdH5dF~zn%q01x%k7Q=e#(nMVHIt5*?vHYqw|k1pnvB>L9E~ zetb3e4=H#B(fdVFEj1^hM#v@dm(wOxpGt0+2YXYYp-$`{WqyI ze3p)$ETh8*`1tlEES$rK%{);Qc!GI;-H8CVv~}lM2X&v2^L+jn_|?Oo34{GFpIzfC z`{D5~1+&9f@v%H#bZVnv8+a7N(u{31EP(Vn9~?Mq?j;kKPRPhP%K5xZ(2Jduw}~D` zLDFtCTjr~+^G7}cVQ*&U-0_aY@x|I6;W&%YWcM??Qf&g4)|uKIKs!7dIXuR zsyfhUDbd#-h+3xVn_{syQVK9Nnc2;jZ}n2FIXC6@c<9w(@sR&1AhDVKhLMP~RMH~` z2Zv{z^z6+L-!t&---4McX1$>UCyF-?77UX#k)Wlmh~Tv<=O7leg-c!+-&5j!uz|-3 zZRmghO1*vXp|#B$GoIy8)p~%$cy`LjO@mB+VevF7CHH8bC7oTDl z^|zVBZ8&1=G-tmo1&4-$L(swHJ?LN6z8{K*esgs^=;1HpJv{Ywe-BSDU^Q>cEQPFJ zw=tALH~lh_!eU!g#b2IJZ0vBRc9e;h+s+r0^N@cDl6`2vKBW2|vbvF5vJWOpR&|AeJkBiM$ZFQeO|j!BjJzjyyk{jJtvVFO$XVMooXmoz`(V0| z&=53r2a|tDL@r!N8B{94~eiC&M@>j;`Kz>hy1bsS^c zn8wrxZS1(1bI(xZy)_Hm5jrlk5__{#B|MSPfhYVmJUXXM#EuG+APYM8X#<$1B&qS3igf zmu$FQ{@-ugQJVK7+kQ zOtYG`Laf@)E6aCqcNnmyB4neWcC=;?2L?-VLeXVevgiwMG0c3D)r=q!11&HAU@=w@ z#7x@Q1@87k2h{$pNCYD&{NJ*+8?mlBy1-qPHZG8snYcW0Mj)Ko{-`H>izhr5J4r{E zlt;p2tHR^f{b5t>&IDTeQe)jcjXQiWD2=^k|}gP`+@?Y?E?`S|V=azJQZ>g3990*(8a+wGnHb<;#Es3dA#A&TkhA z6|Ze{2=1jDE1Nb>oBY(>E2!$+`79qqw+Qj1E>H;O>MI6^pz1#Ff3}xy-VpW}v%HqO z6W4qzC@yBOwvil>2<9~G4;u+i{NDHTO(FHuFvLm>BS_(biq1WB3kO+u$+u-(s8l~Z z8tu1tofE}vWO!8b#TRtd24B&p`4y;E)U`Jfd$KfKN5ZjRh8I+Z9xxx{ePxK4AA}-HQ8AUeQZfiat z6Gx|RYXCLV?G%M6Vwnh$&kul@xCWs03a+}#M5s2Z-%)9K#ZhF~ab(KSxOO`P|B3U5 zvwDP^P8Haux%}IE1e5!vy+SI|4t;OnaS8<`pLqYLhSsrix1MOeRy&>-Cb!lZz&_-^ z)pmr#Jb+v&7zsJ?2fO#4XY5{243wQUcts90ybYL_UVP?GNk{Ju2!_xDs|8Q+f*kme zMP`ih%y5QgjAT=yY)Yl?8(DQ)C3pn0?`ygGW7Sn&(ksMesoa*3iKYW=UMc)zfFYZ` z7sS}XkfI!<*hItz><_Ns{jwE6{o|)&TPR-} zt+7>wOicq4s*` zN>W?=Ej96d!n<)QsDRWTt`a&5#j!Z%0CSL&mt?PGzz#|u?69AI(PLoM@Ab8Je3X=E z|MEqTbBu5P#@26T<{VQSN;fF=pq9osfN_r4oi$efiHM=Rc-0wqAb;<*X&^n2iO5gH zrJ85m{dRAVQ7d7f3a=)o2_F=#rJhfi$6O}t8?PPi8?wPY@!e>|u&j!;xe20eTQ&&3 z`gb8EU}dJv`2XMJZY(+{yQ7yednlY4N(v3%UGc=bFa1JQPHZTd7fP%ezPqc=_Qn!c zUuJ616Pze-{E<#O?h+7|@w_bR6>RihKqpLAdGA=29vZT&d@vLC6m^^l8&vMay*U(Q zK`&${Rn9Rh>*Xa{mw=sD{)p`{t*TSL_w1F`(-%; z3~H4q-kh1)IH7WJWSDb~gF@|}4NP`1le!f7yC+m!^lCFI+JJvlvnn8rjYVOe4?CyY zjm=<-wK18><{QKdUu6b$d4}H&yH%sk_oR%qC9X*D`JYu=bDE zZGq@NE_S$7#03w)F(i&(xNh{aZ$c5*(Hw^hE)iqL)9Vz|hG!JD==WKm5J~EeMRDjY zrQ3LqSnP?sqF>#A;(nfZ;@&BeQj2bRz1uZ&Q#M*}6xhd+kY@idu{1h&*`Kss&)Dj7 z_oJP?;^|>uY5w%aPq0o&RW;@-flBEfK8(Y-!;rTdp+h($yGDv4D} z{z}iFf{Y*%Fl;oB6$Cy^mFIqKdE*9|9`Ej9n!=}v-AJ? zlUjw>YB4?Ju89YyBK7mhP*c$XqD`gQgRV}=I{ z=O&MTG|_kA3y(7rN1&0yXOe3-R^GKC;*3C>87YfYbjluaOzr0FD|;H85svf9B9iD7 zMjlfZ&R11^!m5ToWKrv4=*)1~!3nH9YS^j3ZR7UjM(tAT?w2lTeaEl?4H%bG0|fEL zqcew;-UD<>Y&vRPWUCu|Vxw^afqR#00kO<4D~30frEhB*G**N>rV_W(kqMC-7>WptgQd_3ClF zr=wL8iAXdgv4EtQlnGmLCaE40Rj04ji0|9WMLOeA0FD)t*e$eVm6n2n-p^-Rbd6~Z_0jL4zaq@`SE1^o@+m@8%!i%f7zY~?xm}2( z+I;G9jS;3~DZF09_D`-gOZoI6rzf^g(ziY> zK0`j;EPtMdl~^sAHuY+>VVo(L$J&gW4gQl0|-kq8tD zHN9vG6p@$aBo*zF10()A^HG&lMEM~T8xbmkctK$(vPne>sYtmJI?S5YBytPXm9gdE zp^)lq(taF1*bM?QyV)W|Om&Y69!0+RA#)4l0k()ObEysZt|h3nF6D+)XM@L8F1o^g zUip|&Slt>_LGaRTUP9;FL%Gn747+C*JvD_oC^*z%o(UAdlSPMt&JW*Yky5BMnTjbi zkJ=nQaSGMaQK0ghVzeQJHF!xq{H4$X^|7I_mPk>ITDF3Qa#$OFd4I`tc5Y-^oN4_$gnnsq?Zk`s>kS5P)PslkXPIKE~$amYJ*IRU*MpAo#hrFIu6K;iG=Gk$e0Pn z+!KitjN9&ZDO&F{)o5_`DIi~#;AwrP6QVH4q)U=#nKG19B?t9aeL3LkNJ#Ws2ua5i z0+lAmn=Qcv7S!2VZ0A&(*EOnHCP9GdTLBi9mhfI=S+!;nM*dJ76PmtyO!^<3A;QA9 zrbURNQ&UBh$9C2e)v*QZzl8il6CmnnTwC$dU{%p+dFE&rX!Q>ME~>QHr3H+iYnDf7mwOQ8~>G zan3m29nUUoG}ssHkpjo;Pu z`)KRvS$EvB0aW98h1ilSD6C3)_ltOA)a_z>9t0#(el9ihD%+lBLhdO&O&GngNh4tO zo8cKSD!U-*U7OgFM-%uv9w8U0>+^GeVzm&*2N@L7K%KF@MT|x182&bJNNKXx7-rh&?x5JcH;*pdCijU>)_l6$&c{6K0a~cBSTH;d7 zqWMedZ@xvdfdfOO6oWKd;Yl&hD(g6q>iC^!Hg$+9bKlWPq1bWYyCoFaHjxQFviI0y z`KQyF`q!lLq&#V)^M6)8+;wP7Gt<*w>qmKW8(7Yx1Vn>Vb-IPA?|Z9nbep8(3d zi%my*iVMDZtcUk=H}B_vtXbDz({k#3htp8}^!dknAn%u2b{Bup*->UtZ| zuO3oUFBdm_cC@yp4jQl;JJGINvdwZrdkRvf|BegV*t*PhLnIBwwio0=xjFY$B}`pJ zo3Kn<+aS=|(t1Lj+Glq%lxZIyf1}cw*odc!+R_d}FJ{vTk869Zo7QEbMaZHE>D9u) zq42w<-~TtA(8HVt>wTT#z4P3^peu%q?$9N7!;r?uyx0Dl_H9rj%u-jFsK;`fmAIQ|e15g%h&s z+Ofj_G)*Q#NZ(~yDhmN|GEw(nDIvJv(rgbWFWsLZn-%omRKhp<0RrC$bC|{V3R7+4 zO^LzDS1N|c^GpegO>w75LF{jV4BAHUqxdoW6!kK~Gv{!RY{#E&_l3kG~d z+p?|@GzQU#!0L!dF4_w)3GaUQ)!GuZX!%M%4O{T8PGtq)JP_dpkPIy`Vy8ER23PZ>KBEhs1MY z?3|cQt53?>qWKk!RF$}E4Pk>at4N$&r8N%odkYt_=AO1Ld7}a8;gOmoO(zT{7T^ANq%z~m3t=D}wZvunaxx?;1C5KJAokhaPhG~^G3WAc8aJ^7Fir_6S zRnD&{aXai<<1`W97&b1ma8VA&M%b}9j-dyI)$iG&%fbC_$w&5e=-}!3(P2D6zDsYkt>cmf>i-|P<3JA^R5h)gPYn~NR}K3L2M`Xj zjVaTGq>cl9461lIOtxR`(Rc8c%l>}8@kHTw^Tu&i1@s!nF%udgH!{5v(rw%yi@Ttd zR86m(){ge$O}2f5(dQhJ^UP4$WDTCkH8zp?)2(+=oa~knhgqrjnpVWNE=M=l{cgqp`Zx8{W z0e#uoilf0J5uH!ldtSkse<&u2miH4JH+fvn414=z7zww*WhBVxtV=lEK(ttTw31a{ zyoi)I3yW06$q=CkmNj-kQKi$@>x3w$ZEevdi=xp*xCUWc`I%f^{v8}7%5Pmd!C0LD zw+tl=i7~H9{z}MLGbn6Il3JaEvf0}n!N18UMA!Y*QI*HMVV~D~Phr>=1J0RZo64G8 z&h}wUN`jx$-G~~M;XWopj+;LSYaMqr8z7xC+`?0Wc}Z2}*w`k`{JdD*J%_^0rE^xr zHu}J3dSbtC(x_uwjNk<`-!iP#6lSKj-ztzA2rI1mP3~rFySHpjx$1S}!pTZuMw@~} zT6^I=rYgT@DP9W1)b%5^g^jmV>6ARe#d1UAa$D6@Wrej1nNxoYN)@IsO{kO}eQYv} z1%ddGXM59cOBSW9C`|r04Z_k}9j-vOFozo%dv((wnO+-lHeBMXftc*uU-u zOJcnxAtStH?Q%;)EQ(emT19#J+*rSeI1f^xck;Q@Khr9}nSvGJ*LjMj*gtX6pjAM@ zSlAysB2Q6Q_c{`Yu3s9rCLT&*z=C(0hLT1^)>v#9kUEzjWGAqL#+4<_{mPOpw#{Up`{eKce8hJu>DQ;c+A~F*Ie=8HKA&do!YJm_d#~%t z%z>`(j?%mNP0lgw-FzK(Y*j2epG8CwkpU4G5c~(TChW9MB$(Dfq5?r}qBA%w1g0rG zv3GD$m8bxWVo&nxX^KD`KsfeC zMxs#;9ig@iCOWh7C-|yXf{u zcBgNRE}zU>plwK`1ah8fw0fkX7IKj4u(6FBE_>RozPvvp3wvtCg2(r(JaZ8S@M^3r zP8)b)Ljy4>&N*o>Z|6oaXV-U#;(4Y`(iP>otPK#lcs;8o1VwNh%BenoIXDWK_nFk$ zU>Fq$<{n zWSIy*7RVt|irzKIvPZF|c8zZF*>Rab5Wg^GlvP{$Coo`)TYhi9^rwb)YsaXH%a8BZ zH#}5vz1K5x}>+-3U4wn?$G9;8xQd^=DEXzKp3o3DH9J9k z_fm$r;oUy)szObZL?wv?B*r8Ki;J_CyXuW|bM0&#VrJEuBxJZNIzVjYQC<#g` ziZe~}(~?Td=YzDhjHrn+bzLS1FX3(gpwtX)ouKe~mgZm$=8(d=Lo@0!$t~VY& z>n|<0MeZWn;HkT46WnxOsEgvz@)FODw+~xYfA8(}v92Q(&7T^zL3hQUP8B9vdbNUO zXK+ac_F%sLP<$6^YaMr&z^0KD;*>4+fy|D@3Gb=o`}*0@nYO%&fLD-G(?p`rQ`U(F zFH*ZhcX}3h6&Jdo~xae_2nxn(Uj&c_0>34rZm)~{u zThWga4IUO66#Nh)Xp6x(xd<8OBhVD^Tqgfpe2t8!*d^He1M9Xk1BsNA>H6g>d#40G)44HcJk8A4cA?-`_#G-%XL8nBG!e*NbW`%PMS_NiiwsD_zr%m#}v(D}rwaj>G_J};O{ zW(dmA2xnk~3FZZpm*zg8DxYElACmrP!s3v|sRpLNUFb#f(gUi2>-A(=Nc+X31GhYC z8{)x3{%(lE#2v6u6>DDKgZKhNgTIuKJJPf())5?}J1nGj2aWqrB2_b&xplXF;1NYn z&}_LsF>tWUvO(W;@Py^LgpPxUEa%}B5+g~?7H>ZMg>9poEz-ngfAVMRT=X%!{|bDj zED_cI?T>#hq%E;8r!c&+uESY>J>*) z)*aA3Elk!DA&^_n+9-lw5WfmXc-(8S`uAXRVQdTa=fVPHQFaNTL0nj?Dwp@2Jo3#c zyP?}|)E+kND%E$fG5585#n_8zLo{GzUYsbhG4~^)s1k5283-Hmv*OtI0#Sb=voW*V zy;AI9z6lK21P`M}=vO4j{O1)JyZCr6y5ITA`lJLnS3K=eJe?`lb@hAd@nEVYcCnBI z3h6W(d6W-)-FwKSV*YQD#UGQ$a_LwAq}^;@ydrS2~49AxK~Iv}1aNyS4lt zWPW6-I`8Ry+aY3a7MuG;>=3XEH`p>(t$7-q@Yu}}h}cV&RgP$b4vO_Yun-MXNy*bI zrb;T(1zFD&1Aq^)OFd@2_G!zfpYJ4%Zzzi&`n>wQF=L_jY4vL4pSBt#yE%BDY+YUj ziYsVxJRzmt6jDd?l%=Yr=@HH1xk{(5j@TMv%`Z(+HN6;pV^4zP_g{omo)?j;$mXEv z$0#VX@R6jc)Dyt5l0m}<4JZaJT*pW6pbw!eU^lrZ{z*z69Y}Wd%P9R@WGsXGzxzDF z1b+i^f|?2#BTr<|G_NYHkcG=r0UA>))-^jSB%&CVIiYCO6#96)#iFbVkvtd=ZV{))_G6?b&-)6`?k8>=E1Idt4DN$VeD+3?OSS_Q zNU`Rb$^>W&w^w`P?T5zvY(eF^96-XYl7-NMI3!dKK*G^oc_}O{uM&o~pFW+L02_#ogx{pOsGzN_DJSmsOzUnOC)TC4&y?HT?UEE*&UZ~r zjh(T=hwSS1*0&UThMm!|C(E5@7cACgB|cEn4q8~eN(#_GfOx%bDZngu>sT_{~v$P?0=XA7I5_xZDv6JC@8yFLdmr|v51LxuqvWyu`8k$cCcAmr?sGv zb<_cB{>i%*v;TIXcKyG*g#z`y*a2DUofe`ZmKK^BD(w88?^#f<&*%61eSNsY%zNJR zp7*@}zWzR6{$4}0VHR_F2l7ioGzM6lF8u*9nk*v-Po6iYsDwtOr=ozl{Cu*1qlVhh zh&(83(Z*R7DkWW&2MD&*DQHAcDF^pxGv$MOxMC?UwE9lDHiO4!VYXNOg|1zDKg6x^ z%Y@ZTaHP&7PG@LqDv&^6&P~xFp-F@RbBz_KW;L-ltZqp@^x$4S!9N|<a_k$)&-(ZHl z>S3&1g%%g^S;q@W%u>gA?#`VO*}!lk$86okcygF!OrmKF-lC}ut2Ic!P_5aIp$A}b%gW46SPU|yzu+MJSdpj6K^Cyxk0Zs>Sj?*O)t_4$ipBbKTr z|Sus#69TR#RS`#|Uc*U|FcivGGGgF9Fl0za$$V0otcScL&SzuXS)DZk}w zwB30T-mb%JZT*Y?#nzS|t)S9d@MIXhY-H%($dK0~LnwrxJ497fRE!Z$&+k>`f@P%K zyETL|>i8gfey>VYXe2g7g-rt~?7gbS#&;Rxb=$|3G^!s>O>%J}jwUe7C5oVlrY|71 zwUkC$jnLki+(LDXW&eL{0c zb@ANyoa$;_{#`F#3V&&uI#llKTiGYq=E=U0a6<#TVlpEI*Blrfu4nG1=ZOu>zrTlX zV8m1GLUq+LIUla;y0>y?jPvAj>5qyFHShm8d0E|e$(81?db1G{5Qs}EbB&TYtP+=5 zCbzc1o5h!y!H_W%X@OcbF>;< zVR2+&SlBNGtdlXJrr$GyyMr55DKTzPkPTJ&16!H94vI5a>?S)?k`Mm6WHir>fw^QX zkj?YhTmp@uHCF}G2Ps!Aid_CC|l!SX7=1~ltzT~ zmOq$f%k@ihLl5LDL!VF|S$o^|AQWk*%YfC;P+rI$tau||iraaJolgZhPTzA2vRY}&|-UN5;^t-mObaxYB7o6f9}lICO*eK!eXWJ^#$d# z5M?xN`Zh+Zr^FU)%qKJ_dqsl9Jb)!lw2`gP9kf9hwAVM-xFG@#<&X#EJooqt%*d=T z%*dMzI-Q65@)RQ#@&wy+eZ@^Y(ZWjL(X${tr%EBxF7I?nEnJ7!Gw?DLdxjvEW)=9> zPq|diAw0M}G?&vJFuA3*Zs|#<^ps7tk(Jimw0#lA{ve9`IXLV93K2|({fwM{Rt|L+ z&DrR>Z@X1Ptl7ys)^Y5ElHY2&^L9AKsm58eQasvZfMu+*o~3*VcwU1rLCq5NT9u!e zLfG^okwmwpLCq6Q9yjfFmPBTE#hR=y_cCX;VT8g}4}?&o*gS$cNw1S_g!NVH$?nY} ziIIFoyCY{{3zA;$g{__qV3J2^COtEOyoCkj@{rku=<_Er)Y1SvthVBP+5ed7iPe&B zT*4*;M9R9cmG=;1-krfPxbFV0Q`L ziW?1c--TIvHsr+Z*zp;TyN5)^3hS zeP&%{wwD$`csKa4AS8z<6$-WmqzVG-RBCe7YZ;b-z_yjqi#6*I<|UQS5L=-GP?cVWG209gxSV>% z$*0!boWZ!sU(<5+7P~Pn zT6tsDt=O*gBj^tZFSzM+F|3Ofp4o;0EkT$Fw~l5TGjBV_GjI#nZL8VG#Y#SS?Y10M z+)sTf!t-tcCLx@<$g$CJgbW)QrNb}1v{|q%#NUPZEBRz=!!oCDHQoYqaMp#z9E(6w zjMHs$x+AUbC`o#Y;{K@rAXZK75iU{aWI$z4?a?!w*3;mBVvW1B%u`xEWMr4$OU)7u zj5t2Us`)?~KiN4x)xlua4GXqj4BXxI31YzfgSK;*CF1TSvKFolh^o88g=yPFQ9V;^vGq83jO7@O-SRzM;p1KenL7GPJJ`BJf z#|&sEf=0;nLwR%@8i92&%q}nri*)V?(XUTp9O*rYz(>aGQhJ7lI?V?ly$n(#wJ_8( z4eBvf%cz^}<^8*0`wTxNA5$yC4KX5Lx9x0qWT8XiBMX1B@+N1?b$AkiW3cj3Me#g5 z5`cT{A&V+~dgxU>wnds%kO1IS5wJmsbNYUEJsIpIt9Fsz47$;py@*=hW-mJ16}g(- za@I(mQ*(y;>^Cd3->iziQ5hS?%zDLU9Ycj}S^+l(hUFG@x>O`qZ5H*S?`P1PZ0@3j zA_M&nU{F_&qyWO^jZ9Ty527wuxkV6e0T0`nyNHW&gplfRqK|3%V(ZgIc~$W}jwcym zfgE!REi|TwGv=R>=QCn**^c^U9t^U!J61CoXvaKNE#VaVgT6tlc)brdCf3dhwYmRi z(Kpz7T;9^fI)t9B+*X5bc}LZ1M$v04{X&>u2m2)o4jQ&a&{PW3JXc2Ud79!|e{pz?PkO6En|H*V#CZNaIe!&)gW)?qcl z(h!XV?hVagF_{mk#L4E&Fu##>JhQbWm*{7)BtymH$jBL|afo0h&_vSL~72f>M zGLP={nyFk=whEB35L>djZQq%1 z&>8^vC6Ka4|0*AwFv^_AAQNp}67`Oc-mm{v@Jq56ZmIqH*0lpuv?k_AeOJx6 zEoc5SCe@m~5Q+$VG^Z{%Y+dsecV^6b+mza}G@lqNcx@|-Koc$&=56Yw{iCcA5H1e4 zG_GCi16a~o?IN*NuPYL)z7UAivAeo0pX5yO@-Fjen{+rQqDU-*`O zC8Iin5rG9T4NQwh1Bg(D^IkYlcVj~rb{C688=v))PqDPGdYq4(Kvg~YCu-6+| zS46ifs@Y|NtMDQ4j2G1K46XSNPXcSL_yh~(BtyR`u|{)5226A$kV8{pwBUp+ZB{Cj z^x~nAiBsST!2qX>5I0BMvnF)UnwZ$eh1FbwQ~oSwVw%G>qLv`C?ls9Mwrv`|0C9F+BZZY#yFupq0^G#8c|U(Vgto z^_*o6Y~xf7wS#+fTk1zI7ALyKY|AhnV>=&mRT7A979Xc7G%4B3jp%}JNfuA9O1%t6 z%WM`*okC={5XA}+kxhBVz8&M@$BmAk6chhz7Ey0Fo8fQO$7N>>Gkr-I7Xd&+jz^Fv zE)||@(1`@?(S4#TTymLMS7f(qM5imd*%fukWlsH+zxdE#r>O6hj;3^n5jK1uECXN{ z(B{{#6A5D_z-5dy|7e0SmgBm_k#i@fN2=FcYQ2Z_UhEy`oIIj;oO!d3ooqIz>VOr} z)N)cTsMm_&pqdsl1p#;X8>0Vs=p6;Iw@Kl9;px6h$f*hTzU}ed9xT>j-{$g2G0Rx4d~}30T8V>Z$S{3|5*>S?**r3jvIi?BUYPB z)EjEdqtxQ(5lJ0Y^^E8mSzy)cYwF&7K_X0j(&N*&8HM<*6H}SB^nGTJw&CA_ogvG&ndsOKE$D`^(& z^O}XIP9eHm7;#BJM6yUlZ>8A!l}viK`ezCa0%H`x%F_-G$7v%-*?$vHlO-A=avRgEbnO!E(z!)TsoTEj`+c)oMVI9j0Q4LmiHTg*jQ zH7aNH`S%$8!kYHI!pLsIcF!EYlc;vi#H&Xt?Qg33h+!u)Bt&g)ynt@D`qWeo|Jy~{ zeKMe)%*E$Z)Q%UJ>UZc0;Y63uEf{}VI6SEIF`N>B8?p2B|LkN6CEF6=Ais8Y`)Dd z#eV^g0qg;(^MqDEkTKAi5^G+kDT!ra-W{Jdv1E4U72BQf@l!L6;%9vvjFWiVIxNwh z4E2mv>8+m*n)ijboI0b`kSjLLdpz6v8(4l^Hy1}b{a4MJ$Xh80>>tA2NedTjf+^$>MyZzETDU{NTa-!d+M2#shTTzP!{ zD>n8DzqBN8d%e$R<5zBpG#c!wJN@PbfYM`IyMP$YI`%0gK6s|PO^spNviwX+n8h-P zK{W?w3MJ~e{|wd8R_$Z7hw+G7(|Cr8Ao2dJmXVOS!_0LLlYL0W8>U7+T(;L=@Zu#v zE~E=pXXNVrG8fZ4YgBcM+;L#@(OI3w4`4}aey)#`THZRN^}}Wsf-G(dd?(DAKg>*S zaVgbtDQ|S_W~w38q3_~B<+MZuS`nv{UJ_htA_9QjfHWn}5gw?1n|`%&uMyrlq@CA< z1&$50zJ}zZz+7^DbOuII=PIt&!7R#ktlX`g6U1D~RAX&O`TxdTDlxO#IAT7bzmy`9 z+RIlyWLp!!`{*MiC=>v}R2E$@&p_dqb`m&S^>LqfosMXHH^S$O-u=Lb4R7obOat4R zM0SzEr0X6*QFPzpha#1kwl=-K=Yxg;r_)#C_HD>jrwdjfAAO$(P&?h(d$Bv@ZHOq^ z;4e5}z=F*4(IT7;D#JuFE<1yCGo)r3kh7wIKyj<`!bS-$S~09Vu!3n9Yb%|}G3#Tx zt%N!TfYw5cHP8ORvbc>)H^TLh!XM4>OP>wE>I=Td@xOV!eDWdtOs|iUvN+xUr zg;?+6+yrZqdTGfcRKbvA*XXY6QT+l|*Lp&ZVJjm-ttpY_yVa{F+u&{umUKnr(o>aK zIPw0er|4ECMJ9W*{N_!Uv;QL(+B}|o zHYuLJ`}Kj62^QhWJXp^7qZCH1L~1**1>J(wqRE z9~C5FiQ)8Pis!vIYNwj9ZT3%m^R=Y6_o~U>|I^pFe%&HH1dxmLtSO?$7K*Ts<`Gw| z8m8pbA94mt;{Ik}=9}XAx)R$yyybCw&0eO6>eN=-VQE`BqG113;a{8RcWQRat*2z- zRKZ1e-V_zJTKA~*mF&E-qA5$aswi*pR+?LySMT$>n@81diKv%2j|$wJ+9MS@RbVZq zIHmcLih((rBrVvhf;B+nyHoZ`b9buPol?Qfw59c*2l4NQ0ss(MKn*L&Ng+d_NCEhOJkA1__9Za?qjVzT4Nt8K}w zkKgZ`)N_2I=u1u5G2WUIUXpfO*KaX5dS5LzFXDjpVzhofs%j(!A%67}DB1SEa_qlx zle|N?NjrUwukB{5ZzKEP1WF9)`W?mcd9|d&JWSLcIl}!WN;x%rNQmam$&< zO>U3@g1PEzx%ykV0WuTAr7)KSO!#y5woJJh;QAghPH+ z(DDP7SqS4=E)5j0KMa4;C`Tic{efK2bphx%MvwU}7}PfGm-1?Rh-@_Y98 z!aWXNS{nuxT&C}YUvI)oxmdiDWbsu`%h_}Z2mS^{cIGi>5O3gWxxsSKek>o__!Kck zQ}9VBh|(mG>#X&iL8@vgWp_Wh`vLpeUMcR=sVm2Ve*OD(+R(GYHD6q()tRQ&oW2eO zCu2+B^$u~97!$5v%gKWE%OG_E0zh)l<3ta&%$u`LSx(J ziVwQLUTxS~xgy%U?>NYszsfII@z>fm@Ac$0|A9r+8_AmWf!2p*A^Jm%3KCKMtZXlm zEkz1G07eC0{WxT>UBEQjxDl8}HV&9Zt-qp}MojIdl1Me|Db2u1C#*|7kVbjbO_*Ib z(TfV{CD4o3Z324HQ=2L(HwDp)91olmp4zDS?HK?SP#Gcv#uYe5#PKi(Ghsu0?g#a` zABwpj-!Pm94GjL&C~v6zhSO@6 z10u?r`>`TcB{7iePs8t%uLN7EI)Cg7mWNNduG3GX>LmlyG3q2olC+0dx2i~lHt-7u zhI64Mp=k(mQ>5Bxu%EXwMRd0*r6!;CDPCL9x^smWmz61AUGG`FJzw{N=vz-nt)KWN z5VmyoP7N_wj=za4Vv3iGvcaq;Xg#{Z%gmys=`DokH8C^{ArNpSNV(oRJuDT#E~fAR zL0u>FFF6HdoXtt>JF=228N&X*syQnd#}*Swv;dPbU1+x1Gm4VRI5Wq(ZMGZjLo5Io zWRo6AS}fj!$Ub(3a#DB;<|BD^M9t5fRm+en7Nc&6r$~yJVXGLiaem$geFnclzdUv1 zvTv$jEdZ=_9&LzcAyaR5u^n$x5&MBz`b-FD`_AHfpz<6G*dQsAogT$jg^`+tRHNYM zNKQ)IXTn9`V>2bEk*``!ns!h!SF`6dj_E0o_`Q0Xx^NCj+tz$aYiMHXVTm&}Vr&XY zcV-APMLb_XpDz?@s)RovFm$5TuOUOva8z1sU>vu`VnhmP8OAG%JY&8@sO*eydE+!F z^Q$uRd%3WvW-fP6Vi_%DSgcO@E-*z+U)EFZD0w#X5&beYk`-gvga{3-G(&E-E(E@a zn*cfmUVb<1u*FE0LG)5Wgms%siO7-;Z`XN=`4^oQr3B-_nc^jLsR+fXj35ak==51( z)n;V1%#{!Rc)Sw#kjjl9H>4#PG=5sZ@Bo1<7RIHn88UZvnKrMgwrGQ|a#U8rRzyk! z!#5YA$yJ-r235jD*jcYM1tW^HTkg0fqD|J*&(hp+jZ@_?dJ~`JhgyM)1adSTAVuis z-iE;4$~Z0%8T(H%H$GjxLJf`8avdv?3^fJ9RXOG$ ztX)u1A^AX`k^K5@r3OUQEOu(#u+XHS&?9WXci}W7s{#1XRa;JTqd0B(hHgDmuUm|# zYirfD%htK4FQ#?!?+n~M=cr&Km}14jaTv6FXMW#(2;yDW2~|lX#27^-QKJD-UiF95 zsEMK*)I4??*yPhhREIP#Mii|==Jq=Lxf!KWA+-*3&V+d?)yylTW zRXJpZ8V?RieYS@$3KJW`xwIUn<@P{!4CzcJ=Cu?vm3jJo^h~Cax2*(9S)}840j-J( zz0vwu6URFq4kX4P_T7U4e1oGjAaZ)p_U64LAx+=%Y@p-F`}Ery!X?g7vkA(~hXPub z;2%E9@nE3qet-_rmqPXs^tGn_OBbn8#})lwzMPt8m*@29cGv8UpdCG}TRl4HVydnT+}N1VE~wo> z2&oe#sFRx`TIQ1-p7a{4D!e4hz(LOBsHF4JyLG zR!t%^+d97LFL0`viaNcGB_GA}5u8=ColZ&1^?D|W)>pVzZ|S7<6BiGn`CEQ_n#x?z zh6DrZd|m$1>~ zYQZ*I2%7>MmW}yZa8u?sJrlZ#yT_W_i-~f+jG4EQev0NBg-CFVURyByjN40B8PTgd zbC!`eB5VGi_n}NHz!TeXr~K;I?gVcsbR-enC@4yhR#Nq2gd&M)@Jua#g16pBOtVJTmlt?-oLlo)IOl13G@Prf z!lB;rXgD+Wq)48zWL=GqbP0w!&9>8mz7BHPKb@}14lw61B8j<+5y5vsR7jZPk4S_) z9_J*gwlCd8-B#@(nzpGy9|s>}aerf;5>jzouGACr>jsPhC*)zr1`pKfD-;7Ukvv=C zxf|;lRt7k$V7GcYgUN7l^S7C{3BV%PMstYN3l=1JPw(O$^ajYg7Iif68gkD8 zq*!Y1FSrb_L=7z^SioHFtL3KoC_;Hs!y@m^a*lFKx4O2$S>zcL_q2mV!`T;&JHpXE zIE?mq4sCe&B}L~Kj8%m(bWA`upR<^2wOklyym+-AfKdn@w4*!2m6R`qdr68<>|~l* z*~$jIZKl*V9!D!XD6#{=bH0tQ`7F_edLRTC4Pmug0t2if%o*8!T2=rnB{fO-yXpda zFn@aHTdnAR&HQ{Qhyiy9w@0queqd;Q&JPPX5xHc^Xo-Eq4g4`h>o9Uj3}7jWmRX9j zI>4HYToNh`-=ZT)ov_4EQ|w{OCl;4wZ=AYBU(Y_)x878nvoYwS1Hzf&)?Kwz@)?m5 zjTe6$T+;^}&V~rWHIZ*9o_fSGV7_;V_<>V&x4pc#~ zp8vI)gDE6a2V8c-`Pg>m5`p1Gz$=@0na5EigDe>co)ei*31<>%SF}NBl06)T?azN3 zmTun&B8|EAEyjdPmf;2)TH@A{^40Rvzh=~3lgn=RfwxeIGf^c=ssMl%;Ejl*q#CrU z2AnfU@Dhwdr8sVbe#lM_&mvK9!r8ef%f%;u$UWHiDgf>o zC#VKaQlSi>ByHn1eK)0RY z&`ub_9r3bR1Kdc&s`Gr!xOH-+F5oROVadd?Qa9+)4Fu1@^C!HJOjS!WPolqow!&#E zzeZ@+`kX+0&R~7cfICNa>PRRhlAY6u7M2@IOufx7)4|Wp`(#Fbh}_Qk#CCQ}8^%R9 zs{(|%_j^<7_dIl^I02!KbDZ!Pj<$iWUVFD~P&o#aqui|_h|+g<+6Qz8x)FPd?(vc* z$kMTFS=*EpRjZbG^B8z}UeC@ewB(JiEy~_!%MxI!a<52Y*X=GN9)CSo?rmfmKd{t3 z<7?dOZ~V9x2n^TXYJ6*-Z66f9X=u~&sKv)b!2%RWK{D0)kNdVst9RS|(~MrD;A zf$#In5HiD@OZT$cNK;7B%H!tpNrBb6ge^KQw&f0rK;bw&Y~-Q5tEQM`A1#U2g`}mz zI!1aFer-{XDK|JS%(!J`jLUJiI@D1)ZwFx*e+n{sxw_^;ofduGATVgU9* z`6dt@nAWs4DFhc62B6p|nCTU2#K^VcP^U}V44g3~$o5gTDshkleZpznF-A`JIHbQtMenW!+>N6k z6jI3S};1(?UkB6AA2W+N9(eK^V@Jh|GI zf5{cig9r5-Rrq}f%*;Jc4sK0e^DP{9kA-ea?tEAb;;;m{8$z-`Cm|M^GE51xmVUVK z`STu8jjFMTQ!H`OEFu+4nS^zGST!Laq@Dl)Z62NiWYk%O4*}A5vrA`i9bz>j2O%%e z}t%br3EjwTD>xhUv_6&ll!#k$IgyPf8qu-0t6U zx0syacrD!WH0{OIU@w|z?|_tZRX*?JdLbpujxE1;%*_(VQQc7!rQGh zb~45jMIFAHf064tD9|{mcEm}&E&gQL^Bi|GN@~rap(v@+n|M!6WpEXL=_F^Q&g#AJ z6Y9@D8l)0%8~r#3zfJfl<5dHu5b8cyF#66qnH=*%TirPaQE& z9S;-Hii@%b&dr?4$*~g0SUFP9X|^#2P=(CZ=kabWON4JB8=>brfrv9&-O@h*f*XwF zt;2tj784-S5g*Fw*Yt5?8m2uj#u)2I_rgbxMB2#54dmlg_$AdZ=&f9c;pym=Z*rWk z)A}p6W$oZ;QTI-l?p(zQP=JTjDJrhm!uJ4}1n)n-lZJYaiPj_!2rV+xLF)u|Dy*tc z)=mdPrjd&%NYWj&yJDWt|LZsQ?_{T@R#JP%%2wbJ=Pnl96#5S+`N;F{<|rp51BG;G-$}ESmEbT3vAx&?vAEv?_Jy zaLJ*Qb5_4xl+U0F4NnC1A?(eY&yX?1Ji-pH)gANQ4?0&W)STn!;gqrXt?FHt9%{Hvg7=vrlJFERDaHL?6e=t-%A=WMlqr5YZU zjlkra%ljWy`;`;8xgY~@9%xBcE>>^MVVn*7A#}o{{=B$$1)OE*K7h|~-{fql8oGbq zl;C~;0ySQCqaX@`H>BAoklc|X9Q9;7DZ&>)>eTI0LGneJ?^)#H`QuGLQ;0Az`HZgn z*En%b-Z65??H&J+^+uK-ORME-& zSM<=*Jc-f}!q_s2mYIC!X4K#_NRTG)VCL){Sxo&_cP96qy+*@n>`m^~gnR!ySG%9TqdkJhNYN#hHKUG|O356vJ>82dZBF0ffn3Whn zEYva#(wTDQ;trf@<`Mh1^m)rmvPg@d8Vo!=92pZeib4duM>#FtdrY9DIrwcC{X`lg zmLD(r+_c)pLDu@0-AV-MMyu}>^Y|8|5~qo~Y*gpvSyGI7K~akl@NYr zakq2Y2~U-ktrUI5egk!R?NiQ&?;&k#80SSP?4YFkB=FFoS>p_qNx)?LP(J;KQ%<8dfxd)fL9pgh~i=RK+_ZV;rw$y<3tjVU{=u+ z_YvquaKeg5ASitN10OrPOHcGIE=^8`O3t)p=R@f#%l)!(}Cb3E{)!J(8cnJ=PFPb z#_~ja!8&9fP9Bd$rIYB#amhoU$IV4@0sUtBZFOJDme*-RRmL8HVJbaYe5Cx7 zKj6e2dt|727av*kB@(3A!&u1Z$>PH}qB;D^G(#K2)H}{}r!X3i2D~(v!i)hfd@ay2 zY-Hs>KlS@Bmw3;2*)9jaJviBiEBPoA9~I` zSu&P(`%1b_cXV}Kwt=0dGBbE}Ha!&3gUHl(acL->OVe}Et#koz30HiZzpu?i+Dv}G zWn!DZSwQqK4mgIu_5SCl!Q=%+W6J(*lhko#WaYiNQueZvqVJAc*mo+(lP0g*1j?Oz zqC}U>7&(|s(M|k`68DmrAV;Q52)cNpyN%|t>iDsINlHPmS>m`Qj3dBh>&d^@pb0$C z=V11Q4Rv@NcRQ1*49Z*XR%?guM&s@szr3qRT1zsw+_JV}5u@r}Zi%vnHzftIym7%f zLdVPS?YT%)29fT6OT0DblHtc`&KqO|`2h4jI)plQQQw}cc8@gH@T>N>59=dksw?}cMa71T!eEvUH7GA>cVuzLtKkq#lAU6EX zA~44P>@z~&OZhK46b@-lUY2XVh>y~j#OhD}NEM(bFUcL3=}@$>czw$}}Wyo}$U z@!N*qCj9=0-?R83E;;ey_j~*v!>=4aii}~OQL$VwSgw{UK?{I2HK=|yGK_0a;0+$S~Ps15K|DT8>eWFJ)^~c31Ak?#i8+_qQpaa@$wbK2hS+l4=9VzK>Lw zlI#bGb{T11LaGsA(?zro5MZNJFCf{4L|Z^wXOpIeu7amDS0>Gw))@MH!PZdeo%i>? zvu>yFv4y7=9$VPD@B{Aqvzcu514L+*+XrhW$i8r*T}ZSxQhh(keulJG5p5+cxB5wv z{RGK=jI?@4^}|H_5UE~DW`$>l9R<6;h-vAPtqkjANRHrU7~3o#gsLP6TTOlSJAOAv z*ODMjK+h;aATp^nkyT$pBa(lbez|?ypf&CitZ#8{Exz;%E3j$mX``osaVy#TPM!Om zk4u-wjN;C&`rDL?Tjll(wb#D)h0$h#i+3xIcarQoNp&W{RIZLAt@xi#pmVEEC9SCh zE-$m#%6HoSreC2qhQ6)N)XoZF?TnT|venKQRg#@@i-lvE2Q4eRCmk95KPB~KU(olJJZ@Niv~>`XRLwQ=S9 z-I~o#-20D=T5C~fme%>OoT>ejYK6*Zcw3FAOY|c9TO~*JL7A5J&S#~5E!bu|*=uKV zz1lW<%D%HJ*X+iN4^U09ok3D-i)@4`j^~}fdr<6kxt_jq4elA$+JDfim??0bK}94q z$UFZ>`w>0gX=jql5DnHCii>GEm3Z=9FkRW#1e@N82~-51)yD&~6liaFJ}!cZl$i6I z6$rEt=P^aVoeni-xpP}SnX(7e#O~UU-t@t37X3GpWG51BJZX(3)dI=BjUbRM!u3^; zBCs3-U;@nO;9bl59<-m8;YllSgL!%0zPSuW4l6nc`7Dp{HsFs?y2JqqQp>N{s^73T z93a`9CjsTn`a0lA#`*?YFUV{|LiTwaXTy7oZFn*p>c@sRThHS7Rd$ceBILkn948?r zC%bb2Lff)CpU&>W@!i(1WpWg2?K13xQZwBHgQ83lZ9AC1=JFx-gi3%IJPH;nwzO0| zJIko(mNPlXg_tW}VHzwlx>5rWw5uz9#g^m%H`1ztwDTFJ{5u)(xF9Chq2fnfLu9h| zRlMhwz}@x$G_nj{*9_YP7%5OlA3d>Vk$Gi0PSR}GX2UE?U?8D#jS7?>#p+tjMdn|W zEztqzW`b8FnPxEbtu1HpjuyhY!UD^*^Byw*aYdzhgFX(RL&vX}WEjxPH2bj1Si#diZ7xjFvl$U&kb}u z|5elc0lZckf2}A;IW4(n>7(S9n35H=mZRie@}qiAT#*IpSM)vT$ND_=P=)6ht#?Y+ z5Zcg+to&0{H;TkPs|KtSd$A1Jf^PH=^$ID6n6K%rofCWbHzR=VO3xqaSwqY4BDN=^4XuafTu9*b7`MBOPa>ejraZfV|B9!r5UT0 zZ9agVT!kH+vE3`!zz0Dw8w=2X@es#~mii)g-aXdcEuOh6am)0j7| zQ&yR_949&wx-H5m6DMCAvh@7jHBM|9-<^%Q=u@{W)S^R%c&it$gU=v0`HcLE%bcg_ zd1W#r4>M_{N0d4pPECJwDjSM(ckF3 z@Ij@A9pk!@vN!qgPM@yvgGb*Fp(U`%hlzfCL8=@f@SQG=<_+~F0SbIB%*c>T%8`6~ z3Z#C`OTybS^Y<_DT}CEI1V8u9&}ix?rBxqdk#w{XUXl}CC|XKB%spbud33spzQ~z; zIInPg!R_*%GV1%eGx-P%kLgM2ku~S=w=((YaNUn$2-0smIy9F{kLn_G4%qXblkJbv z2C=NWF2-KV19-2(P6c~|1KBGszIMx0LC%WDzg(T~S(b%USL|2KCDkAU(DGKu1`DwY z>L}dMA13wh>22WSzysMZeE!6yXr?ByTXuy2^;B8r(RWC{j9_8sv0f^1Erw%5cKmhV zoaK=54;LUJ_>9wvJG2nnE@CIPo!xPs8_WDCm%lyWe);sJk#{|`f9Y+k?xh&+(`lcH z+;2H^aMo(BB0Fqjkg0spY8Pf*Q9ZW zx%if!0+0egLd6lJJ&n7(0GH^i@X=g`fO8HY%^w;1!c^ z;|lop^?cI$D#X20(vZCX*}p^fnP`MBc|aGzScB@kt>KUN+r4Q_YPuygjgsWRoeVZD zp|h6X=)dck+GqB8D}^x|c5JXXkMOH~cTPdi<W}vgHbKVN%V>?&^f~J zJ$iM(J`}>8^iLOTc{#92$8R-$ec;32*8Bo;AsRd|iEltX?(1qjOGuR|hOS0@*q({afa z1zX>wro<*zh)RIV=4-@UmKbU?uS|sRjCo0-8;a?k2_FA|dFn)1_~WHbCAbE|(tkO#+_W6>Y);4Wqd6^Z<2+K|Zrw$he>9ff*z^eGvCYX>ab5GZ zuuJx*3-&Q@Gu5A@0zQ~{r zU|@2M{JV3^380NILVL$hJ+)uT9M|fWbGd4l-0UmjE{U!PZIK+KL1)^@HEY~ySexVA zT73Fer%(U~H2cbutKF`M>N$9Db?!)yE21?Y{LBu_ts>~WKo`(>wltQl!8E_&@w%jP z0E_#c^4>#T@om)MNGi{$aJo$A zI*v76&~>c2>NKclxN53iS7lWAe42u9$JzVji}tIQN3LS9+>pvpbq5xO@aBdtkonCk zMx!!8sy9v_9+abLY5i0&>lG<;cv77rWnOhlB503rs?h)yNRx*i$4VQ1bER!|MVg;C zVuixYFTEs;O1jurTI)8$y-saY^F_YXMRDq)r`1L8sf!*}7j07)rK@YxydSN4HtmVD zm?K4t)e}k{r2a=&W<#Js8do}9Q9cp}+b{BQtx?z5c=`RQj4_m?Ubea-h{~47*Xg?N z^YQOG>;Yk)45o}>uX4Ner0^ok-=(aJPORUftb$3Z(~EV6dLhDH7viZ4#V%G>wx0aT z#`EiKw)LqQjb%Xc6-{JA1BmW2k%#gA3{_Ha3Bot{f8#Hh^P|4v;JV0T37`bH;~ zBcK(_t;=ya1(Ta8_AtvTnNozS-zcx;?6s7#wnSdNp)(4$EY%!^qv?kCtJRQgQ|@7? z8xn$RIW`+Bnpls&l%t}5CpX;@z-dlJe(BTc@I}LFkf9cH)#iW^?d*CC%SWOM3n1s{ z+g-bJG|ANXR;zuR)V_7_EpcW@_FMROTRLY z$<(FVR%V9UR@Ne74#GaIx{D??UM3$mZW!}Hs5fJMW7&GIcYWiB>+xkUXYAX~#GG-i z82!<}Y zvZ1R|$(BK%@id(D3|)| zYFU1|eM0=bX-oGa@C3q69HpY$q!@rLo0gZOh@#(Fmb;V(zEO&(%cv-H<&-Na{|*+h zp)S2*LgKw?PY)HbpBABSNJ>81bYPD{uum1)gk2`M4q4tsK&!-9I1hm>NQ$NF)8JEs za^+vpfRbf3Z3=hne3;b_aTSZ_=l9E89FoP@!W+zlxVVsFhILWbRJt=96fS6*miKoo zpqwI`TqwCTBfDZ#V|mAnlgy-k7K!|?5-Clf&!X!fB&?V zrI+p$FDdaa{rgui%?AhEYajNRseAvrC689HGFBR5f)-0bCMdRWxVnXF&LD?`x(?}- z3UQePgfqGx{w&*Vw1D!={=|3j*BvJfJy$H@Gm(=1Zcq@L@vef2#=nz=0XOB@dSy~C6|HHogMcL8uIm--G`D0t0{;W*>vG&Dk-4S5&Ab( zA;&Hz1;pDJ9!pOoJ;Blgr;}~0p3@g8E-Rp5IPPNN^&O@0G2!vax{_%T+y%4{_qS>| zo2;O8%hjYj6IbHK1Vb=KCv=pG4oHFb?Y8x^40BP=n4O{+B@%7Ds^Y7cn@DN>t~M3X;A3O zkRL*`W;7J2uP{3xL&-!Tl>dH#|Zi%ebPfujl zs=4TU>&NW6cU`5P_-re|o>$HwCB@$&rXKpg7~>!pKXeC${%k+jK!qsB>JGxz>=1kL zXE|6G&%gfdd})C-eELxL{Lt_CQ^3-DO%V)MIRaAndu>@IrL1NLd-6NEWUK|$vu3_4 zCCu>-yUg|PPJ#eq?UpfGSP(CFm1Or!G~RcDwC@A88oWbm4S#kxqRcW@U6SKtBE>cs z$%aa8KY?^ewW-!sQyPO<*8J>#M{c*RY|k^D{JbCQ0wD3ax@tS`*CK=o7Kfs_shAC7 ztbAk20~{^pr}~C;*Y5|*TV!#uO#HREEQT%AmH-SjGuxQT@b{lFwVYO2UL45(uwPO= z%Bof_SSV`potiv+zm523QYs#FJ~i4F{Ruup`QHvKOT!#oo<@ZX`tr&@YkM1BEktmN z`rm%gkF_fmxD*lDUw|GYPeBI!KH55<$egdiVvMfh`58?H3-$d!Xm_?81cJ0MqXNVF zVPUs;pF%}(4S84H}oy!j2_GJQH;^se z$=1e?N{k;pp3`)`<6U7CK9RXEa+*4A_c?7(RK4 z{UYn+MtD0Z@6!5%y#Lp(i@)jbWS3k!(P=~s z6rNPc{F~YsPMC(dmAD6@iuN?1^H*kuF^6e7GiG4IiC{t8i0ZH4uT#Rwsj~m)DmY*)pq4Bs``df)r;4MtD1dSeh*6E z5VX+!)$hqDoYN>E6WJJVYcTdOt-D=1(PcQ8Z?IpjIOgg&d3})8XEwb*K-8LoypWTR zT+xROt@HRBT<66Yy2!We8^lQ_!$oWELhQO5Ydp(w|N8{kg)@-j8aa-mPu%U)bt(HVs zc*#e^v37AGfWAWjFhm)jAPUpcIX6Jd=VB3ucX^Xtl6S{I~snT3UTv z;ZVG%;=(aICsz8N-RG?k>ik;4-=A4&#qP&8XS-}U7nHy+8>xWb#r?!}-) z2u!zRnf0=yJcpKSO(?8v@Qpk*nXip&xGI+^krCVp^L-@|{|{&H0^UTG_m7{MHfc(y zB`HwUR-KtbZ?u}Eh=qkU3A6?TYy#Bc!kPpKmn~}>Q9$dG23x^JZHpIhVNI$cUZK_1 zbwy2zt>A*Tm6dCytz3#+Y%3u5`F+kzdU4^&MwJxzZvJ0l$nF* z-gYxOuQ3v;#6)>NeEzK$t8Y(a*#aV*kSv+Y|7KJLZwyeX7;E^bS|z@}9d}6PKNrH? zpJQ+yk}U5RrM~X5ClJs3?_PXyXy155MWtdqlt!?dOsW2*KwcQcT7owci7D~}Fg}Rv zP?w!!6268L6mLQe3Mh@L`CW!7afE5a2fQFCsl_>&xOj79-3RL`nSY>gmQO(anGfXP z%~`Q{aDEI1O9em}2s>4;dqOR{W+s>;1JtT>n8uJhI3 ze_+;J2(4^E+O($9AEAti(1AdDQ{wfmrey~M?rG0};9PZKjj;A3gjN_l?p^p>Xofba zyJ^QUW{V_lJHSP643HX~-*3nXSOGCmnK%=zHm)a=18=^@WWicT=bqHY~a%EAJ<;6^VZi}NVvrKu|B{yec6i{TR+=+Lus3a;bsbVUI5J~7V7UY1NGWHV~C=~ zCidPqT!ncIZKF#pEcyBTiYQO&&ES&wA@Ya@K-H;++wN9Dsr)&q!(ZX&6 zATX%#oD&VdN*(0MagzYOIZm_;B^DdS!~i2qG_zdGiBbRvO(T}b(iniJQ9j&cooTv! z4F6>vD&DEfI0r2dBl(MR{Ke+@RSlbGfqmE&KACQ%r)ac{bM9LQmA=e!qCJLj-i7fF&V>%u#>u8vHqw8m zOpsTcYQEf_UP3t$p^H*qV&&A=X_0KNT2QR$_C3`3vT&@!OTCmARktU#{wHAvUzrr z6$$EWnmbeXIeyax82WCfq3dj#jd`DjCa_t9bH6hy(r!r&%81cp6n@^`iBn3uL7HP}@9MYb`Q z;CuuGR=FCLG~0COyrUw|(lGqk#4_t>Xaak{05il!R0X6plw{Zh4^&J!4VEA2?h%G$ z{9erf1`cozW4nbHrIw_8hMYh2gN9_ZYJl~JctGkmU;PEvO#b-~h)ipQG0Bz|Iquw` za~d`)4)1fiH6@m$-^UO_OeRxp)O@z!&S93M>HUv0h7~*+qa^2m%-HtL`n(LnKOBro zVb%9hT#v4McqT#~GLe}>>y{3WRLp~NNQZ7Mq@fAyB_>VR@Cj|rU}hF285Ysj*lDo* z+wR7#5`TYiKhWClCdiTSJag`^c$FwJ_tGe>G+izYVXVx|L>i)bm4B#okckouGia6* zXfXHd?#7R#y|L|Uw@~vxX5|(T)4_(aO_j{kB&L`?&y54?>R}pEo^#4<_rej8Iaf-n zVir>RwAi_EN~n43btO=;Zi{W)mM+H&`F3s44ZR%tfn{wimc0!shq7I@oz0e|TQ9XA z2vPQ3er(s?!Egk?4Q}*E@^Iy?m-a>g&`#mA3(>kgcB(8~5l>D4%hW@R{`uSMp@GA^ zNBaQsf!DG)Z;-O9R*n z&P)Me1=S?5xc=eVa~q&|5==xN2;TJpXhzqY{jp1_M;H^`>p8W>b*2W9qsc8M;td4X z(#SqnAVoXW%|~+OIK&y@`1hT;YW*Kp)5HJBEjwb1B27~(p;JY21C$ggm-$+0%$6kW zi5;<}CyPrfX$g-8P&H1I?-7D4)+0{QEgn}*S@|zty`%m92uV6sxv3JIYDA-%M3vr* zD4s<-zj|By^1HF)ck0JiQfssUMJ%ch*UE%i*-@*R`SVxDs%dI1t(DqQR7u-x8c?gB z|Eo^psKW{mT(CiFUA&KNi+zaU4@elA?>Wg8VV~d7uHuG4uROuu&2tAH=;^Ij=RW?z3B! z&nOJohB%|-c3guR+ZE|IqM4zT54p-)wqt1Y26N+sxM^I&5uAbE*Hu*ICj9kEgS#Zc zvt$coI5P`#kYI4v3Bt$R(afGK)2pK}~EO}#*3Xs_&m>UsDixgx#{zpnu4C0JH zSzk!2u^SiT{9L*E#y$J77dekgwTmvAqc7XeeT$O^z0DqU`nGw6%RSBYRC5G}8;2q* zbW!dpd_`;zD-})*HPZ`Gjo1`?Tf1FR2y-=6?V-eK*B?s$O#>d+gHFpE2pGkgxTn#8 zYbJi{1C^}UNCU3M+IlHaFQ>}-6lRS6jXdbpOFu37oDyAG9bp@Rr5%`d`rLqPq78iP0mzJ!B{FJae|z&1+U(4t%|H@0Lhq#25~ewMb&X4w`@8Uiva z9x)NEKHRt?p+&UTby-`(nJwKK*eq3Truq5A+5JZn*X)w{*PI(D-6GCbRx28I%{Gj9 zgIQ1M_2L8iJzBDdHmlzCK<)EV;CV`~7H9T1SMC*$-|Lfm#p7z^@@O{VmyjLNfa^=c zYKd8`Le!B`m#F0hp?p`C4Z8fMU-e6xv9U!3pN=RD%m#o+QT$+Y{S=5$j}2$ zwqE9B*KPYYbCBVo9w)a~c(?{xRA)WcU+JaKff9JIr=&pgWmF^VSyIg{pao^D58um| z(Dg%H@)dsBjIXev(ZG_gYEQk6z=pSx7yfR1yL1DWihw<3EpFS?ybfXa+R|hAD<*d- zsvj~RUYyqz#8MUy^%AP6$bCtl`qUN!l=BVoD#s<$m-F#NQ^`!01;6GPnJnq!Uxpj~ ztIV13CMYFAkpwtcu{W4hNtpX9rzy$4WLWu&MSO&dx9==v#ee61c;nZ&wzY- z?AyFkmnjt)m<{FM{FUB?2BYRAj-lFfg!~WzbB745r{>GBg%cxvOw+&J;&8ivv1{84 z$i&Dm>SqEu78xT~rwn1;*%{m|b=!8}eKo(RzfO)trJbO8__MwX@w(IJJ4e>PvS6LUNZ zqB~jVlN;^f%flQiN4e|$Z;g><387a zpLO){%pA`)W)NFhHy0iATEf2u*X_KP@Q1-7pyzvr*6h5R@XAo*`-73j&inLzpNzvt z3*}dXf6!Zj)pe1pJ{pw*dNp5;CV0b5DF2`3DfO>Iv`@9g%9`w;(P~hwa2wHEe{m0C z)yc%2P0{jM)T%gEM1A68VQp!?rH3U?8cHR%c9?C=UywF!DC&|gcSicqJQZ>C@y-pe z;zi+5R9oSz%^n)Il5;2jORiPh{&J%>IT}WydkK5;o2w21umU+ntpmDP}_4uzu@g(y_mpE?(ba(x3s&0^tv`oVl z@FEedPcQ1;e{sy?esicoq8g?lP^3`)=HzfQt3)U0}GD>EWorXJW6};y({Og z>p+is!X2N3Lbz<^wJvU`hCmhzrEI&(OG~^U8JfE6ynsyX^Nw41xwi98z$qmt;=Gga z++cbloUL+}gNqj^W>!F0+vk#R2g)NW=o;Eq?^H#bg~k77*3b^Hh%e*UD87VWtre=Q zvJorHP0?)eWi%Vsq^L#iJGeO0H9L}dyo*zzJJqyHhT~PkV#aX2J1gS8?D98BsP%$% z{KE5bSTp`|t>jS6qVZr`EFQ1A?MB&AfV4ffZV}!*aU+jGr!ozX-?01P=@Gh!H*tpD{yX%v~}^7YtgokQ)}-E>(^161m5W+%p@ZEnGP@AkJNnb29d- zbv<&|aOY9daParw(EJ+R(637<4T(NmfTE8If3_*TS-EzE+kCT^py!5 z&jd!-)xtffA&^2r4+*j^+KdQPk-i($#SPa$7egLhs)}TOwI*jga9p#sW5<^}Z&Wc| zw!_kfXuIkTv~$z2-sT~#+`x*+{sz+hAz_6L&4ZTl_t!Wo5iJ{W-IDnT7j65uRHDD= zYIp@F0E)M_(Xcjr0@!k0DDLJWjr9*VSgucFg>#oJMU=g7xxTC4Pc*&{uq1`gzosK3 zmRp>}xQ#M~S+TtLuvI>XZ7?1M?r8Q=?&;DT=fCA|I;CmA0jNoQty5(<%H4;Qft_8| z8BL{n(&rv}NfQ#^c@*yquYaA!i1W&$Tq@D;&&@g-zHH~g*Y7`WX8X8n3Q`O_Y_ zhq0K}=fUp9NnED&!;hyyV_fBmV9vu$;R^*15Y>5!>6S!+`256YdLg$19}ryPH30En zr<_|3Am2mye+2(Ib=9bD3xHjteY=B}$pnC5S62c--8h-e*ple38N}A)MkLN!{$khM z=)kwvV4glEaaN++5}~u?>O2ucy&p1vD&``Qo9u(IqG0DU?&! zvA5J&=UCW8i*;^Bo{>$eV{g^#XTo_n#ZfD~6FEiRX36Efqp9LG{KhPwj{^COJX&Ns zvVk$KTB(RwlRF|@k&cGw3_Q!L!I@J8rE22T~^IzS6d(T zu%kWJ$6V}PF6(j&JH}#NVPx+%T36PwId#^@Ygki_^@(cMTx~7&uof3PvAB39Amy-p zxC-yFu#+rSuaV6)TFdHKTwn9NpE8OZ z0KwoXM21sb)(Q)I-%=Izo?u;baXzy&(q&y!&E8k}!iZ|?GamN7;^mPZ>pB-Z)!`WJ zvOc}=E@rOUZhg9%ohnCJ>tUzLQU2;;r^!*Cv#`@llaSrBMs~W<`g|RGf1S0mhRv_B zR#mgMYHPKJwR^1VUF-~(^#uz%(_($m$j&laU#epZ>Z~u^FW&N9l{e#82$;i$zS~u6RbL*^suVMdKV|}%neW=>%_plC+HQ-{ME^Cd2by=*h z8QFP8>+5yw{5tC!HSB^K>y~QPU2T2S!!Gn#x4PIxF6&zscCp3!wvk<8w7yfv{;AIT zZVjaA*7szbz+&R1dk5LcUB3({&Md zES7lJGHxx5=@&8`=eUX3U#MA<-M&E;<{c0YE5#jD z|0Fe{?vF$M3+7C`X@+Q8W)n?o?h{Sh&k3f=ZozbHsA$p;6HV*zzjKOc8gT)(lB{St zKTB(x4?YaUtjtVcpxgeo%WxK39ss*2au?O5JIgj7`MUcQEsGtDd0-!z%dz?SBkT<~ z@<*%|CvG}J6707ajsl(TiG-b$mnUYu3JVf`VzA(aTX1AmRk)xWVL0$}{m%2ooe#fT zF8t?bU;!V!HjNdFmO};PZ^rT;u2ns9ZN>PqCJ6%er-w&ygWeiXOB-$;NBhe)q6G^N z4a{$m*|B`7OfebA~T~DQey!&8~L2ZuYnm z*4EUx(yCozook%MHPPsbH-9c6PVE;`o$FSk>o$vP%$^`roBYyQmg`*0R73zE?7h|sYC*#Zah8uemZS08}g z{~|cmSX7USs%11RBD?^?Lo!JRt_)teRLkwE$0$Xy^H#1U*wm=9A{5bw+3zQv=1aEt z5afJxG)kKMv?H@#1xt%pI(6x*6)#KNFlv-{9?(tr*itM*Q|h9VlJAb!CQZ6GK7x9& z;fyo`{1@Rsv?nEAl_JKa7$cHEO0s~A|4Dd7T$oRoK?e<&Z3+y<*$550mn9LZf;LU} zH)jPnp&l&8Lqea<^OMkn;CukN3(SqA^Ykf}0U^46oXYGlVYrjw50NQ33z;mCvaE(a{d^q9@rq&o^gmxws1D^sgn1A@G({YiVoXS} z47b!@g%>`%DS0&py957g@ZX339!2+-8Ed169+%Ch4A%i@*D{0(h?{ngXwr}NV%#)_ zrhSo3t(E%L%BH4eTePL_X<9aTX;dqo*y-5sXp}A5-(M`f4WN0ram6XX7d#0LczwIO zv~7#_=8KyX{+G1uN1Ho?XLQtd?J7(ymTf<$`)Fz8JG6wK&UQRRs6pE$v-~A2cm3z1 zCllb~?XSEzogjiz#pN#c;**`U6A6$JFSeJUVr?PUX@?GI3|&Vk;8RSMIl$|7(q= z?U`A{%PSr3N@#Z$&uYSFOx!w$!vGK^Kqvu77N5GJ;{u?h$u`Vg=K2|cwUBhDrY(&= z=QuSbe0DI6wrrfJ#Km0hg6MBC?l8Hy&u~NLoQFyQUD%z`w$N~iIdevw1L!FHP_Ci} z*>Eg#@(e{NvLsQO$wa?RF^S*?0e4{sq^Ydo48E$Q3!YGX*=fm@M4*1@a7==tr3M_u z-06@~#b@5D3}jR)d%{09$u|Kf@}Ovr7en#oaD(n)z8P3Vu30H}_dw!r%2hQ>N);L! zC5;V1L*6;S-^}=(Jc`&?sNo!SmH^fqLG418VYG`v*w&hT zYIrzeTx#Gl8$4g#?lEh-p*u!BM-|urgp|fLN<2H4KVi&DueY z;r_i7ic_LlySN+k(>s-EWw|7(bO1IGe`5ZIBrAxqVC|U>wmpjpLmX>>bQ)=%28fecE%2Z5}dap z7_&yX^lwRHVm0`-plX-iT=UJvf`47mgmyX6+Dlbkdfnac-M;CYCcY`rI7*})C4hf<5XU=zDCA;9{WTvAD|a z)LwRC#zMX4p!t-o6@Fwn?vwV7;B9bhkD$#7rFTa+a~@7_+y1IED#R&6IJO(HIQkvp za220ZYt_wVMmcd-_f#?VDiRyD{0$~n#SJBTU4CjXU)1UK1~Pgzb8Iz|u=QG^64+^E z-K%Nc-`fe%JB-s%*PM`&jjB^JRxy?;q8|~Ql5G-o$Ol(xy+My0zN0zV>$Ul_1p72* z-Ky{ZNb>U?2(qyxtvft9#wX;T3qs(H%0j^jT1`NFOz+OSg`_oG+cWN(;-EV^6pYdg z4*HR$H@l0b=X9sFGk-fh3LU|V0*<>FAXAQEYP%zzG*=8!hk#r0f}9Zdy*T1 zktjW#)(wu5$e?HOZ6FSa%TIF=Al}hW)Cju_mz*8bn6z$j8tJqhz%~K31^64qoPdO* zO~0PUVpi{rhD2<3^J2qfA-e2f;8ZPKS4U~sjXJ`p3j8-+YL?kfp+BBZiiDI%MWL$H zC{yNQE#TZ5jxw-DB9cOc$uc0{xO8V9QI>V3)27pqqK%v;K$BH<`bwHWb&+#DK*I>@ zA|rt786qp(E@}ZChQEmFB__ck4u~neoX<3ahnX~C@F;T+W11VcbZ|qH46dQ9>~c0p zfek~$tw2>%SJKUAg;UA@JTh89Gjda6Nw`oDfyt#9vGr!qS0t?m*JEMWQY{^Mt08Ix zV0tV}1aytFNRd`Fvve4Zl!b%0Nj>s=`K4%%0Cp*e>&_LL*S(>~d`4thfowuymn_x6kDYyV2u z2;UtWwy)9p*YIJ9>7O@bMuA+oMG-{K-clL~qjoGscRUYCq+VWx#6LgJz8}Zk4sy#K z8%e9SOIC;6Rn_w6jh8|P0-d#*GI<5}o~OF;;7Rp-Y0_}sZ!y_2pp}9u8$wNKvEKU` z?;mw&9Tu%ZiWXp*Mbcv{_Q~fX*}oPLC1;)i0W%yN@)0u7i5dx?q>53Vxcg-0JvjHA z0-~n|^*5(zVB zfsq5G427=*aZGQ!dXx7NDbt>cP>;4MuVyOM4u4*9o#-J)!?m)=1NB6FCi0B=nHw%R z7n~3|zJ7mQw9U3Uhx+dt8@c17q#uJ>IqpyRZ&?exVRhtDp2O&VtevXrP6@-E?5gm+=1dLG>K(mYS# zmsKCfZ)C-f_*JVr@XJ&HIxRLr4K_xss-hL~UFste88zRx9_lM5Z)Gh&Y@lQGjE{^A zkTp85*WjB$QqzX=)?hyGQ1(8{3__1LfUPh&o*r=_!|EMLPc3lOa|vthFVKc51)t`o z$rKZ?vd4K7>l_MALc25G<-EDxIjqAuyv3Q&8hJJ%bp0oMg!P#R=wWqNZuvM#bPhqs zl=kqMdY&JVM^P9i#5J6dx}W@|-FLbu0uTLVQA=c6axl3A?)!wh!i1*JA_s{36D!sE5_Rd@#&^vC>;gdCZBk+BQ~J zN6&&&5XDYu`CH81Xm@U_?ayN zmSM#3BGj*Mxi|Y^F~l48TumykoE5a2`Es4)id*Snc=L0T(0DcYY|yvsCh!)FkyB7_ zoDp!}MlO3kp2nl2f>zn@I~)64JNw&iyA#9KGj3&UE3gbraijHFosrhUbj zairo^>D@~1*}6dyrE9^72M?Zn8myZVp@d%^#cYm=jeQw_5z*|F2$+W%0U1*O!R6IT5yOqc9& zD~xd~&G$)2Zb1jgW^~x`ljetlwJ)ybqeOvu8ac*nYtMA3A9hDon6GT)Z)6IO(R${6N#T9{?zzOlAn&$|$GjoerAN{&4=M&^nPq5@#+*U0l2u0YT7frI zbrTc)V#^=8mcZ6NnkXJ5zblqdZUWxe~?Lke6e0#pQRWv;Elep`OWqp)! zy=JnZuUcxkTF{qoJS0_DMsqDs*Rgr~CBwp>ylH;1em7!|74&0iBVg2a)l2gfGDzOH z^j=4>&QuACeDUJUxn7#QwKX_J?apj+=SEwg-i z+TnQJ^#C!w{(=5&pLdMbzg2iMiotS-W$V~y}mN?9|MFXPjxA9ug9W=i%r z;$1`eF@WUo7N75`)KylVUp`jl^)_MI1%{3t1GapOsyHP`pII@VXq*Z+0xIR>b<8jL z--Z8r6Tqp!B%mw;oU6^;5SU^=-w9Lf*mMJBy0GZBwC0fSRDwNz>R|4+milW`qmp)U z(GU^Fd?El2D703$k~tXQVj-Ppyq!3+uspHixCQPE<&`o|bi(5+q(Y!{$rSVfWyKeL zhk(#3iACQ54e!BL4U?l=Ba|fl4Q>sl#p0bS^E=0)M;+5w7aXH9-0IBlxWvj=;le?W zClODBibXB|&gxC+n^jkSAri&y{&gg?dGPho-1)i(dGa})sKyDaBv^Lqqz z2<3QohBUFG&b7(Zwho#4TgY{@tSXsi$T3@rzU!DsdL}ZPda7zZZu<*U{5<0vNtM&= zDH|(iX}y5Xm_={wcK62rHva*W|F3qy&gf^gfoDg#b-9#PXVM!^{D>`9*_Y@&>jkVI z+wq@^q81jil~}ZGw{vk|ayxcvitWUy;g~?v2`}(C2=+l~OoLxDdR<{y401Y?u1gm% z)KL^5iQbD~EuU>?w6kl+hQQhyydl78)=f=GigsrX;vQRE+lUyyq7Q4o-ng;ZH<={9 z{Z{vmcTOyO}9T3*4Dd$DxH&Xz0&RQfTNE%_tdq z42V*p?ynm2G4yYK^EOT4-o%LMp#u9^W*chR%j_FCqPP+F7I7Ez#(!r5Xj0rDcGJc4$Fk+s4ThgOOC zGx`90P+=&2Sb_%}E_uyLl;U z(VIyRxqISYdW=cD=k8nMEkgWHCuAc%i!)5UcNPTZZYKA9iw4))2B;E;mP4EyjmEz_g7uq?>Vg=a}V`f}5k3iz+ny(>!ig z#(k#Z)gONd*M*-&zNgA}tX{5;_>6FarVYOA>~I2%4WDd{b7-A&Sljc4F63+TId#ke znoWl=tVbA%`vnGfY)N{VT);#0jiy9Tf;naUYr!`^U}8vdh7O2gaoT%LetjA90F9Bu zfY(vj4t_x5B$HV%@eat13vE`XI1zSQa!yleJSBIEPa)TYxt9{h#b#uF1sEAJEpG1M zT@3PV5r**kGC&(KCOH-3P>{3|-43VVAdV*WYIZ8~?gFq;(5Z&wC#*VULg5-`OulRt z^!i$bU&H(wL-GF5aLy83d6a>RC5QBG;| z-%s=~GdDVM{S~zMbnHSrJ{gx;Yd6DF649FANQq?%quX)YPH*Oh&K(SnDSWYHV#)gb zI1wyUBLoKB{2f7Mk3b!aAsrVvcd+6i;rCe_NMItu7lNiq;emlE>$EdEAIf30+|6Eh z&?m$@7OzLC-dVvl?fJ9Uqx7{5Jh9kVJ{}SpWRcbl_H)J^-Zlo9ZD1f}oWp0Kup=RA zBYT3HSX_uSL4|c=6o$lP8=XT6J~%Hj*f3E!Fg9hr;t6}a$iO$l0MZuw@RCav=EYZ> ztv}~P+SRJ!Y(8<8Jx?_@lItneM%}^0#)bJ{-VVyW0{e@)0+4BFKkXK8J?e|X(JivY z+T6ieoF*210Rn7`Ft^GM1TKYgO0ZOQOeFOd(pkF;qlC43v+6xMN(b9db+0VL`m5@3 zYNJEDn_bQ!>9)y~rw3M_I+T5)#tB5nYA2*XBYT7)$g`hcc@~GMK7M5wCrswC3?$yg zjR6z0YCue7!v-EdKb z*92<$mu6d0<_ZDAP*+$5`O#U`Wq|Lj6fh|?+#=L^;&nA*^)F~E!u1IAbrp8!lQ?ri z!Ib+AWAw?maE%ofmExY_Ns9j^Bdztav<^@vZ*K-KAnt!LQI!TiMjIA|m`d^i%v?&; za4iBxO)H<0Az^Cn>^1^KQP6_(kI5)bV-B<{jBJ@NWjlQwU%OJ}r|csSILDu4K0NMH zKMYv9dvq8vOOxXd?nVz;H`F!8e00v1oqs4gx-aYVUW*BTjm?fBW=-8?1f z!`_;rJu{J8+f16gEq^o$1t|g~**HU~!+FXx%%98CV&!t?(*Ep?cOEH!!;l<}JtPRd z3H~YSiyLyZAnP2};k={8nbqUGQ*`RaB$o#g&QY&Jry6We%u#0sVj>dgbV8(s|0>*h;n`oQ z4n@i3KCXOoHSOk(Q1P7eEm;S~vz&&Du5Xs=_h_q~MxQfVbl%m}A7;g-F(gPDM{ zLW^@W7i$zo$3_B_MLD~G7ZnS6AK^d1f`S!BbdJeQzA=quh0&rgCV0IPBL6O;yEyG8 z%R^qHkWFR=ADltY*m{G}nLRfW$3N%}xPr7ww zD|Qg0FlH%XmVSY5VTE+|A+O;j=#Y+?bAFuo(*zOzgImRk#3-QA=jq~kS3!1n;}Vj% zG&r}?@}k$#be^A7X?cNIW_hDFclHm^U}b>lJeP^ke_2N7k4hon5z}b|N2f`TE*~fT zSfl@{1uzIqagFnCi*u}A#LkmbC)_PEuYNp%nhx~9-RbK@d=nVH6UeVdX71o9I7(6J zyUtsLoF@G;7#ufCtT2`yxX;HB);YGI?W#w}kS7Rp>KH{CRJi4NDAlm^gn4ymT14o_ zVaTiuZqcge?g}fRf7mCS@%X7qRK1YdB4l+4ck~E%ivBKE7?lAm-~Dx}9^KuI z|AAlfu8d5U_5L(||Mpvr5oG@d56H5upQhs2zkhTO8|oT_>EUgJW|ebX)MsP4VHS3k z*esd!L9t$Inik|UDkd-Zp%2EvYV(KLxZW`8MazzX9sfCGEJi4PXI&Sn1C z(=7FTtL?g0*>k)1s}IEOlrHZE{uzX=5g#VQBYsGgwA3R516wo1Spu}{cpEwav*$UAh6BjBmA@!g!sZanL z7TptY%pwzXX#%vutOh^=m`q`nv1yzhg9uz5=%viRVmn1op7$9t_Si>Cvvv0g)41|^ zS2X6Y#RJY=HieV%_N-ZNuLU3H-I;{&_#ld4*D3RID42}!R0tUu;8*DN7OXK+r`dIemivE@T>QG#7<|*38+$~iJUm&J0y&R%1 znuLP-LuEFX(bLYBZ$YWP#pQ?_nn7Dpm+9p?RLo^Awtdd$J#d|MSpvj1P5I~P;GF!0 z$O^KzA)~k9^a*sF`ZB!@zr$bEMEpR5{5eWCW_lA_f88uIsHl<=-B$S6u0qsR-k)-< zN0`3`-IgR8mzNT=@fV74Mu)@{(3Ij=qIftT@F zF<#*6%RKi|>h>7sU-Z!=>Y(9(U*;qF7*2*!;4{s!T~9$j)Rs&;(lYYiDHi;7UX?5h z%!VgdbHh@z8Sv@z!ihfJz9L&c) zO~C1N-jLGNZg!+?3*(U(50jUnUt2r}QxDS0)(AIdAArNobV*C(7l z2D1kXyI|9hlo5mRm7_6s$Hefga>~liF2_VPrbKr3;X(Kk_#}qbV`9WuW5l==QJXR( zHYIxymuxPlook%G2%V?n;rrv{i)ER#vs`Hv!jnHL*43hzS8`cO_1J6^=zvy_ELeWC zta*wDape7c%`o@4pZO0*x<{Sj?=G+Quey6}Tlke_n0xd-{`HaWjBogl%RgRA^}I!- zucoVkYf%MVn;p=DbK<|;=PB_qDKN2(54Wb_qGZUC%)d(FL>8M68$ra03@nog%d-<1 z=wTM{*Rhmw@!0O23CBvi0{OH-?2^f~jV~flone9Wod%XzsO1Yn_TQSlaBSW&3Hp?* zTfEbDt0bzJGcMsCxmUy~di~HnuOW>^oMJK!O&BdfB#nBDQ_wN4TxdL%<(xER|LDx7 z@qO+|I5uOdx^1?7Pat4-o6K)f?sp$HFFu;suIy}RgG={7JxRJ2xGouD8k`A1#Hw*$ zs=6YTX=xvOQa1M^nz=V)kj*|i<;9fE{a>JabL}@D1Rnbk^y-w&{Z_2*&1GM{STcjQ z-=4C0fQ`>)vzrpd9-{H5~J$`)N> zw!dg-{}O5IGB;BzdIX9#2j2exf$Gf7enpH^w7E<%?9becZxydRMVp-s^7PEy+-vHv z*__o^2Rbm~yt2N}U5p%)3(+*jR@e06x@x%_(Jb7~)K7t2k(#-nyuIW16p7Bi3rT+bqXiZ(4pKQhI{ zy7TK@5o10|*&+Jri2*7LxowAgjX%qe9h8-V?X_;!&05-(=%e4+=RdmqGSzv8ENsG0gh8@pVXvp|M z2*MsWe`7Cvf*jF@hziu0LutjmDf&rrD_&qD#<;bx8R<1eZTPOQ8LICN168Gf{Mz3J zRZCwRa+?q5{YUCe-rLBAZ~G&Bdl+uG3beoUXRi9DFZ0~JhbtPWHF`1i?v1X%If8YP zz0|8Wch&G+Ps#hl{Bqk~T4m#i&EX@+ z{LSJX31G6GJvR~-#`yMJO3=iJfy~@@4%hzFPV*mSX;VO#|72013`P~=9E>;Op9)Lc z@V91EAyJIL|3raBs=oQWI(^gd#dpEo&z8eA{%+s91Z3y__6^^AduR2=?>+u5Pz%5B zTkvLoj|8tBF8^9;sFjYK4Zxam!3~%Q*0JQsAa`P1bKrUlZ0m1TrDQ&llCNWC6NUuVMQL9 z`>iCb0l*?@$VW=pMdr3kaNz*)a6JF;qhn56yCOog_aeCsBj&1~{U7^3w?AfBpxmP8+hUG4la+l*; zIX`!nWcYbKEi}^-9yJ(`i4A|1RL@JySzM&JN9B~J+P_pGP*-HeucgQm_=s+jHANGv zZlbfSx@Zz-#a~}hp8TGME%I^HQe=ZOM?89p>`vL1%2hN&ep`TFd(i{(FP#{cqS^BA zgYxfO`PU);&X<1|$iHs+ccJ{dNd8?S|Ncq-Es}qi_IqQFyJ;7Pq)xzXov`~Ee_KP#9&%V(P8d&ON`T)UEea1wY>i^ZZh z@@G^Ml?iZclVMOrXrHvP&PebHcspPEeP|VJI6QEL7y6=ooCpHEeev?Pl2kq0Ikto? z+NYX(SW}Yb6D^iIhIct|19;YSRlaChnorLBc4Fl#J?LA5!rR8%s+a9KIeIt+d?xsie#mBg` zw&l92GZJo~Z9WF?U3f1~@v!;ef}Mjn0XDS|-F$fMsck!XI!xThyk+)G8a+sf{Z zfbtETClCKKDt>W%ET<2WAeHUJ2C)B&d#)4K)I@5jEKuKNN~+h3VQJ2Z_$V9`Ikti& zG1v@EkmKQbyG3_Pe$c4Xn5SfmDh&GoLmjZrzvQ4n9bOX|bsOY9^qP#T@sm^(^dtnz zrQ8sPv?a|13j?ax3X6W=T&H=!opx^?7mofPdHj4-&SMzOBLR62$isQZ&XPNJA_sh> z7wVVK6QbfLrjEJeae(VHEd8<-Zfzd47<Y$Nz}1*IVm_ zj1E(R@4#bzK7GYSvwSaQqin(hnU<5L8TQ?e7?)&OEqIb*&9v5E^;FDjeOfNfG(#U#-bULUi;3FSp7uE1)B zI4U)(*OYk}J!@q)y%wtEnVVERpN>2s7fBy~7jgMLejlag12BEgm zhz}`hFDtWFm_LhgefflJ6#c*8ZC8yrK^#z&!25eqIYB@#u14I!bsh1Xxmr@4iJQu2CCNqe(lJkdtqY_ zO%BBZfs3&R2s7iT5K;Z^(nUHe<5&=cEZzY#y-9o&f(X{{~X>{ z9n`W~Nh20Kz405}PhyhsZ7;Ox5@-e*0fKx?SWhy3m`~UtG zRvnn{>8SseEbfwRm!ND?h7Njsv?pIG8Bvw*G#9(I9{)9E_u$4rrJcT5}$g(fH* z%h&&RFRYLbDy9y@2gIBOVgdbd2PW?$_Qj+}Uof+|6%67Qmr^mLTo!Kn1L({8=_9Dl zR&V^`(S7kJ^~r78iu+@a?x(Jx)V5+6Xi!n`2vkpA9`Zm1b`50XO?tR)0vQIBsel9y z%ZKrLprp8O!wQRplfFcXKBBVpQIliv%i|suO&=^jp-2(Wo(G8th`WdCTn87Ys@|~R4H&UahU{;E}Z)9&?}!!K~PZe;%Tyu2~#4bd`N7#Kz14x5OpNZpbTsmYto4 zU7xGZNOm)!uFqd`!CQH!6gm@x1TA!HoB9JOl+;#HOMlhdrBGs9#ryPE{hk!MrL6)k z+HYx7zb%DsZmWQc_M6+(Z%Uz?+A83p{iZhc>r!ZVTSbkOlu)$9zU|YFZB=k9KR$JQ z;`m6e^Xbn<3#+82&6OD&{n7m{<@4?$6?e&Q8O)8+Lj6kOBQa;MHZO>Wt zTy<>RXOR{31oeG(gCfrs^fQrGK6LF2YB^Zr4D9cE^#HxJI%&_p<7A8LVj z_ia$FLqd?y61aIEWZ(9=9T{DfYG_9&4%zdz&?ng;yWLEX3=Y}z0<^2@%uHr+#owja zI6REcbD5dEze!6Y&ca{(dvViZYVdqSLKRi0U=+#$nA-#>w9Ji&9rRgbW3&7K#{)D* z-ZzqNg=lg_D{HE7(7fAl%C;9PPjhMOG}Wn+xsU*_{r z8tWW>dKg7~akR=XFtV6B7X{@w!J1?K&}u#iY&6oA?PK}dP18eoBl=aU^@nV0TT2{m zPG{TWPj)S*8=qxluF3Re@gzRXG+dAimrV(lK`BMI`Sx5+&uV zjyX%|)3~{@%o!RA-EmS0Frnw$^e+$=J{K5aFugr>WNzipY4zuLqQEZ{Z9QP#W$3hp zf!sM?-Vah~hq_fNt!_Llbp)bYYTDKRKtR*tZ*Htp0@o_GBfz%6i~aiuFfD-@>UZT= zfxk4qg+O9U;O&Yxr4GN;0+04@fD+qM!>V6H02$uV=vM*{V(!qK;oW`{0;-mp57n=L zDFS0R`4AVnegwvI9QPDhKuN>UF!>b-^C@B000JGZIZBNAFbw6mNix@Hr5r_}&?t8Q z6QB&Z3&>glN?9FBSwrP$i{yk*#YI*lK;bS7AdHryY#l(MrEv=e5N1*WJuk`ygllZ~ z|8oF^)@RN?1`wX2Y3P*eP4faJs0I*T2f^-Fb}*%GAJQm~BFca^m2GYH&eyd)qI0{r0b}{(!qZ$M}2>f~x0TGvO{!#gifG&s@n7|PYnT^eM#9|$?v@(S{4Rxu9 zvoWu)&7TzH;u9xPRBSO2BSJF+qIWrQxz4*xSM^LQj(KHE9xe9J^IqF(-79IdFu80O zihPWgU5&uyi}LwmHnUi_QrK-iXglS^9ou&VI!L570;TVzI&rdA_^>t1B7rGAvI0yR z3b^eK!2eg`8Z?^RWFoTypvBB8{S~2N+=cAgENB<=iXPG~^8s6@v)6Yq+Q&KxgdSjl z&n3buN95)ocdq*+s^j+vyHYj{ci$Cq9-&+8ttg(e=gvCR5_k$jhx2`=eA?e%--SmU z@H6F`2saOX;C3CUT63gq4b9M#X6a@9TJUHqJ7O7moJ;6k2aXTm64CzFF}dh(=pv=l z9g(rf4~jw(bC3KmT5;VMzMRlB43i_jG13%cBER`Ncutq!{X6?I<%fr1D z_uJQ1#9`Ta4OOD-O_;s#%~zzDorhY$0EU9sAqpvy^6qf>waaE2*P&WTSv*-rL9$ze zbftsdE`38kGt463ZM2EHag+x{?_wm@l*S$qc)p6~pHePnTry6ibgndCIvj0Klu0sW zC#~QS$EIV>W`c!;jPVq7M+TQi2Cb3ly5NjR&gh?|>zbqk!=%X#e%vUucd`&%7P%ez zR5&<4ipVrT57CPwF;?K!D@G@r5ubmom9YoDf(QsHgZU$xpq1w-TyU0-`SLJlLE*o3E89DY@|c&NG;|$y zo~46fPdScLKMlB#n{CR4*`gfxnYzPtHr*!9v-D2`ZivP2RVL2cho@M8jbl1bFQ~My zm@S8?H(LdZnSOFiKp`a47?jXk3%V!Mxwr8!Zo^6fOW-M*;>7_e<_}1r#DDfM=lV?n zYY*cT9WL=pn!bEMjxvuwTqLb`88X=|gh~%bcv#*ml|5pMk`noIoI-i? ze^B0#Df8s*a;Uts{4yX8-C6AZASeU27OGW@OBo#)*he=HqeaS!T~N-P*Oy%^H<~7f zteaM!77(lK#~fYg;CmNDkg(LJa5D$Qp&gN=Y-at|Zv_8Lh;+zA$T4h1;9*4T6daVj zs&*)v#X4BspvX2}$Gr0_;@K`8;UbkF^9Us{H`m}7e5qr$bC9MmuT!Gz6eA$NUP6D* zQlF?cfL2B_oBG~wl;69Q_s#7`vf`LyM-W+@N*680PCIY{oREY=vCRFHa+YNdDX|zD z%i0%fvK)$K^5|ctnZ}_PeQ_$=Y3{w}o1Wrv9c*z%*_|Q-QBi)j8REi^NK0Qd7ecR+1--|x@o|L@m_m$~=+ ze4Ssf^E$8d`Y|vks%hsJ(1Q!l={0pIAaU!#Enk{Fk#RY^evLr4exa-{wtzdrigRzW z3=oAy$PL9g;|1H&e_}og122e6|Cv}m7geARr>u zYb<Z8QfY7ad++<7rHk`h2ZF`quT?FpUCvMC79&#v*0`uRc zI9g&Dpbs-c`whWR8)p8OZUp~)^*auqM-vqFx26BQ;3S<+y2a*Re4@JZwK7vB?SKMy zB_r7XcNMr)WzQ?A=$)}0`(6moUOePZ!Tv`sy2-z<{BZS^tx%uvxMO*n9`YhJ#?op`Z4Hgq0sRGN#$~nz=f$z7@?0Eo@37!n4&wz!@-a+?+SIn9xsPw!$MFkM9w9js8u8xO15 zD32X&R>Jas7RF_bA)E6hVQ8hJ;8`^kCmIDtk3#DjU6FXc;q?IFnEFveVgSCNEv=z2 zhb?$CBnokF8pu)8a2s5@rn0V!6Pqu7n3VV?zei6Rh2g>1gV6pxAes)mZXyw^kef?@ zS<3w+_>XNUqtz4&S=+Da)14-2V105(h^_jq zP$W~0@}-O#ue|`h0qC-T3%QJQ553@yF1Y)ID442z!aSK?+lGA1x9jP;%TRmp>r0tv zGErmR!X^Ec@~KUVR_5}9XG$3}xM|~Ig9DZ~z)nv*#~~}DgTu5adz)~;lA#3l8Lde? zcE~-%+-T$@&(!&ZA&RQs5|_y~zk1eIo7-Fh-{g-`m(V{TWhDIdgSRLXlI$Y|Z5?G4R^B78KfI#U80sn&vNE*X`tqWRbBvx0v za2S&N(DY+BJxthtaQ_D<4E6{yQolw%-ah~;4pK&$3F#?^1FzTHB zGSd9t6zcvTb$g~C{{MA*{y(7G1531rt+U()(;3H={BxQfHQ!bH+~I@eV8%7irtq&x7k4G zYwhdd;Bjp2t)UWJsWDxqXPIz4qOzD_pm4yi_=3=*@dyi*#4BO6wmpt1O^jh2do7#K zrpx)KBB4*$2N&$G^4Ce259>#UVSpHDKLB8$hXGjAzUM31Vkrc$`?(Z;&qW|FMQ?mM z@X|}zPaCdOPi*uRW?cr>4JYho4+x5j6!h!=Wdf*2H5+OiWS%7P_pR zoqGC?&85o6gboE;(MRyrhp_0wN=%HRa@dbh=%RM0l~JgbF@^JJD4avigY~gQ^Y}?n zKzy)n{#MCttomER2!l6e0RPzXIyMHE*VMt&HP0J1*KIhc=$pTpFk*x^C0AkG@bUES z_8a=<>|%R0j6;U?y6LR;8~Wxf3U*P$Q885dwMd1I z)V_m?Ude|s-0CB8C)CUTE^Gm+%05V!vs7C~MD&=ykMyS4`k@$m1HiI_KZn9{0}3VT z^ufzb2U1KV+OFU_J!n2c!2e0w3J&6#fd$-mG)C#$Fz%y9d^F8|4VJPF2__Vs7#RX1 zKXMPOr1tC8mo@R)GO%)?QO~ITKA;qRd)i*s1hsZ0Qn{4rk6c8rwki7XO~~id5#;;t zYVEYE?RpP~+x9Ug*&H^%RLo38-Ias0&f`u#-%x#~>G0NL$B%8W9_3P)E{cO$fb$Q% zd|sKiO<%SBj~3trj_IO21|V=CdNzC;#Z)8v0vWz5W$00pL9e!CrbiaC{8i5*C zh8BVS7TzviH`sNVfz_857vcY*vv?B_I;2e2Y(2<~%WQrlPjNf;+8cc03IhUsRfR71nS=8Wq(b~x9o^I-TLi;d zRD5XsddpEGIcn)M=2my;k@c4kGL>hh@XTb)CWWRRyL?Q~H#gfcJ8_D!G;iBij^$#3g#ud zs#dLwHt+-Ya|(jKzz}o?5cHjG=5yNrK+yN=!uV0K)%V+h3_&~E!U%f&bp*|>Kqn(g zs|G%v6V9M`ib0s(blTB2@aK5=`jzpA^~qs8y!soNA9Z67`67&!ajgkaoN%r2ZE(wa z11o2pm%;C8U=|->&gB?Zid%F?U#UA&eYkvIDQs}?$A+{)Gn^MepK(Goe?u3XbAt%K zm~=jcw>24YREdFx^MZls*?z_EC{TAy4VvLuIPQ#s^v;1k&2JdXgywhU!G6W>%465{ zz5{~sy5e_KHZVYRSn=B?m<~Z-JBsOXvx8(<6BCnWnt0$yDEt-f1XKsYE`mW^z+F-_ zx36ny7aPNApt%jpQIVLXDS$VuxqS$>`=H#(KxWt)n%j{$%rvn!ggIpH)76*j((-Wt zX?BuB5@CKs`s_{?1LxRrR>VAEg7!)IXRL}I)KG0Shwv@$AqG8s$l`j9N?d&J3hz#b)Nu?4&nNIJ~D2Nr;fPZ zBG%5&>)(1jwI_J#j{{&BTO{NTaSunnu)Hpc-0%N^Kg5z1g5De!PUo#nd5S@9_WsKz zrM~B1YG%ypn-si=@^2Je9%62Q7r4)q-wg+#^w|z%vsu=|TNqOYO8b>xvF?aK&az%n zEcwh&6pPo}INPp{O(8uO3WY;>O{%?+*OD0;`%JYY5gPbBP7TxE%&@1AL;kU06zgNV zCukG;_~+2lCO6Di-o%(%3!N{1K&i{?W{zyIE)6E{ps1?Gz1kWbDd--uf54t!5U=ys zd(EPbn0d?DM*93BbQ;av>OL=*W_XMB;6{M`Ve$LJvebosrD1;E@l$)v`|?3st$1yP z3l3$>M}9=i*2!DzZ}Ars$W`-3686aWu%E7Eg(l`_N2f_sV-f?_Gr!hzSq~8J>=ktNV~#n$TZ!BWmt*G{$PKvG{doPVG%dL#+ULYQm922+be5RT|?j zhAx`%#=U}{E>dc(V!G+{0rp-QSC+FpHnGYYxd!#mAl{;qy_3-s=3?X7opioZzjmv; zQ7+Z?*WZl#TN#tGS!p@I(S3Vr@8o?DL&*jVHXWHY`N$85cVBLBCHRYV;6w96`mF}} zX@&xW18u(gG3pe-%7A1Qtn)`Rd50v5dT&$eJ>AgP*Z;Lf_aEibV~h4`_gT|cOw}rF zPv?&?OGWu#H2k-=C$K`(tYvilpyjH-5KY;TJi^Ilvnh$1SH;!r>NO|Dd7Z_Hkk3X>MzWIg|F+1cA!nU5 zf_(uD>$?rE(QM$uZ1^HJSkh>}?nGz)wngRl%K#*H!($!|Ssq((X#^s-ZfW>$Gv)F^ zl$Z5OOpX5f&a)6}-69}>vxDgO>SORwV{#EepucT}1C}kTj%Ng*sngL3CzAG1Cx1CE#qb7o|=Y>iqgtzGG4K z*(j>-9QLj{KH?g0U7=foSu(nOjT?kA&=>yd!~+&GI<2}mHz5-xhco)X;rguMihRKLpi29 zM1CRt&V&AD7SFRyncXspv*%xw`9Y$FkO_65%or0ilT=Lk1}}T9Oq{`pGOgdj+A3s% z?5XTBQBgr)`xoaX^n@%0DMwf&Nv+lujldCyOstdM!rq(eI4Y;68ezFBbDWBPA+ux_ zON*5i&ME#s{ZKuC`(2mm-i$ODBTN{i^QmDnpd?`>l0$DRPmlsjwH^{~e`# zJN_2VYs(17J9hSehvThp_ort)1Nte*z{cgZ0i6PE6O6p7g8gK^txCrsfLB+nRNb^6 zE>rk?{Tbj9A)Tj>vkv4rBv-fiRml3i+$yzfS82SsbM3oQ@*`iBlDESk%!fG@W;z{q zaMj+?X5k7eWl7&KKs>bNxQvsncTh4LrRf&xVNs!EOM0ZHRK@HaWt-+vXykgMxt6z3 zVZ{&3Ibg*ld9StI(I;?%wyh7>*X-svH|=z*K}>6pa^@m^x_UXy)hy7qbi=JmdX#WU zrn6WT=KFMz>^dhGM`hzck(4jYStu0`0Znr-|E(hzXdSzWVv9P(4~-!9vXmiBR|;F* zoS*@O=+0cC>EKGU76Nmgor~x|ik~0aQEBWGvtR0`Ygsv297$K_YK$gJCa3zD2p`!D zxEt^U75FiyD10Ni+{FBxDp!@x@nYsfDlPgaW=N{jVzF764&{R?&~|hPYX#`BicVSh zUZyeZvk#L%A4xbXr%@WEq`87UiunL2o#mLHzubMM?r`DLEJN#? z8IeXV4L*GMn4=W&lPsK;`IR<_h|#!H$^09ad5G(quj353K1f?7)jhyJ2hxv!$9hx_ z)RQ%X){OQ!BYjTZGh6SOt#i#DAkB^vXAe{s(_j02V4B$oL!Vs))%__Q&ZUYCV5aZz z<02)=v!=fB*rB^qfZ?d`5H{zPxuo;)#RpAZ;3fe$1M@|n$l zcx>!D7yzdAjuybR{2)m^iRbK&cxiW!;=l)Gb)oON@u+hIJCA1~9(I4HjL>0WpXuOl zWJ_q-kz@fbPq8}_F82hzmG#MLc;1WPgN0Ty#p@36blJ$gq!ohQXcBx7jT9Jm$16_b1nPZ58f?vk&}ouK4HQbn9qP*po&$&!i4w)n@Kn) zTfdW~`f0SM5aC)GNB;8`i*asY9v2*dgB6!MspU(#Id@7za%w`3CZQ_b`~Fxla?)In z(A0rVrGjghf*;r-C#CR^q0do+onyvMqQX9nm@757{n$CFlwzf;>xT><-m{UoT(!Q>`Ezlb1%(KQTb( zEvVkGEp0!N^TX_Stdw$ZPo27Q>i&+3&=V8>)>J7AZSsZIIQk4r+jXl&^KBdaFny!+ z-cu|LT_>dsnzsPG*l|zjUePXw=yKMT*j~_+El1n33`E!qXZ0*~%0SI26i{)pP1r5d z-zh;5e|iv3=)P>zv?#-N(~K98w|!A!&?Eyp+%)XNf8e9+$N;iKsuHUn?;|5=pVeZB08`gYBp{<7yOWpkN- zCDxaE`Q87$?7LZ_mYw0U-}-skF}cc`V0+C=Y))9KdifLoRt%k?0QVfNc>DUS2;8hZPWs$JO~sE2xpP^*PF*oH5vu_9oxF!_?PMbA*^PBR z9ls?*pfQ|9$c$bTeUGN_Vej28} zC&6Fh4bk&#a`BJV1pgJ_CvE*wt~S;VF=rC2Sk&Z9^j9wPmph)&ad2L9y(7qGv>6Q)MxbZ0 z+j3Hxa7|94n)lkQvAs6cq`AkVG!JpDfkbMnyNLPwR$Ko`D~uQBpuZg9G7h;_VbT$V z@rw2oIR1kXVY8$M4nC;qO;!OdO2L2ip$QC2ty zzVa9JBdE#9`Bm8WGx56x-?ey3+6Zvify3@A<;*It!EsKNst#=m-u_XPZIHU@ zA3cQ=OjBFQ#L%YE)A&dip*})xS+sccNbg*Flnl_^g6S4IIr{4?9sCQ;>{N^VZB@}N zE%MFR(jWrBMh+BAiutl>BH<@_(g9^uuX#C<#;NNC!V-v{J`Pf3->+h zxo=r#q{jLD4>cFEMms^HaHn7>wc=G<-z_HuFY{IHY(^*NJC!>6uDbxkBqon)N0 zAumtu${Am?uNyjNwO^8zFHcD`KQVO>DTz;A8hU7n2X>ltb{L!0ounW!A-ufImUC$8x$z*U4rlFM?N#W9YISaQl=uwq3`uYW!@`S9Rh(wcd&rW$CVS)@2(RbRlq4nP|r-PyDt2`HCZ8B6kN;! z(*QcA7gtfzcJRAyU=~anvqg*ZFAuVBT66AgG|0-u`R#i-ZDmdHdz)%tAaYW|pjkN8 zIYxcQh}rnn_MD3y878`pC8hh>-JUBl9i@54=$muXE2`wxD(t><3$LDFETyOfWvAacanE3%a*xD-t!}fy7Y>3G8B@*guDUq|j zlN&L@!6@+~`p$$1(T>vqZE=t+oUWp6cA{~R)nBtoaF<}uM*A(2CERY|uW%AVXHkv2 zt!Zm_c%hgr8lDq#rinSzS#KAGTg{WSmCT?U8qKFC3`(QxSmPu<-NR4v#+ZefJ=U2R zj;qQRNefse3|Apqd5ItE%Rwvq+K9sj){HIqJ;*Q-n_BFUxt3*EpZP7S7}(r#Fp;o=^h3QNu0eUH*H42nZ> zkDC9c5#yGnN7Cp82#9O9q+aCfr`QB8d646*>^>{&ChAE>gwN0dp%gMBog1;tb0#A&LS4az|+iq%XXv~vT4<_ieIxi ztC=m|G$n`ya4TyHjEaf~g;MTikXSRjK^cjvDVV6=_u$zR= zZtL-GY10yVfu+Z2z*lsatPyV_hzN!-_<>+!;{FC|<0jExbmLsWVKPaRyq1Uxw@l}D z<5NiL_8P~5wqoSQY?JU&x3v{zm(ef#%AQ#W=Y7*!Kh=nGZGEQHzwCsjZfg?~K1~ny zCDdffijB2Yv`evp$k;1%ABzRmC4yW{YfGfl9|hklrJppg4(JwD6WLxb8k5yHSBlPw z>V?P?ZtRbiH*8RL^Q$_SmVq|;>?NsY@DfD zz9IO_7iHr2x82r5C|MKJCX{ts58$<8P@C{+uk~YAUvwM8bo*HXytc~LRxmdkc(V`J zn40-?zKPdpHnj^MLY4rIt%D8pG1il%f4jz;Ju|1m77cS*iEA2Cg+3sD7}%F()iS*E zV?c3Ow_Sq)0V1hxGdPYc^Qfj*6)eEEs#Ou6Y7%&!k2%b*sv@g>&4{+dd^Tp8(QS$4n!gi$ox+4ls`fai8A@B>t$I49w#RuJ zOiJ5=vDj`}{_%t8)*pdA*KX_7Zt2xwG`nwxh$8G^#U@54xoOXvXiQv1cKMQ0&zuO? zoB=roF6hsW0kUmWs~Q>>lCWWz3{`#b0|W-ts^E1-UxvyTWO@`Xwd#g7jtrGM=KcJ? z%Luo{Q21EHi!X*KTIt5TuRi=<#zP4MY}P74|lD7+@v6PT$@taxxH$EnNjy#^XJyHq*Ms>>?U zs^8VoKgkWjISo4;m>0qKObxGFUekGWBmiS9Q2F<(yWpP-RO(DJYms^7Y2jIUv%9jq zW&n+g00XAx4q926tn+0@(QEgigR=ev9OrOc3v)=Y={~BSyO83Fi1Di(w_WS!on)#R zR|39|U&i?NuRTJ)VPy!`Ys$&VPsqaXsXKE%xrucMPLF~kGFAQCHz8#6&&p|M<%r-x z(Y}mqiIN7SK~9*H-Dhfwy#_49&Qs|)sL)oH0h^ACpGNEprJPA~7uwGLh)ACE#!M7* z(uq4h!F;#SaLw9qO?q`D4Y3SBWSaAGl`r#d!g#m&Kht9H#&@!OrSS=iO+x)OYd!M) zfj0K#t2iLr;udMboO$D`1>Zistf9T;)0Go_N+!rFZDRuJQ{-I}Y;>x|3CU$DT5Y_M5uPANmh~mKV~>6x{dNR2OKZ6Qpi{Q@>OKLsO!sqUzlMILti4Mz zGeb3Np0juq-lCdk)@7JP4BIbT{O!kzUn|{s_2A5Iaq;cV`;F;z z#YGtMt84d0{|;xXE;&s_=Y;z}Pt0A~2#Z;a@LC=a9=IP2{j&l3CIbt zk1&3|Z9MMgzZUMfUr&)zPaN;dci3%e0{he%QtJzHA~#J$cfuouF6?VhOY3m7`L@92TF4c^sbiHl?$=WiA>XHaHih zx3YkKi0(tW>-Z@1-Oq0VgRH<=8MHZyX;xT#%y^$>$LB47>g7i^otCSl&YVOXE;`2J z>W5Zz|9EiSWoRm9UXr;WId)#&k)pvN@zUs6apUPje3ETsSnP)OE<*i08JnWva+0t$ z9m+}4T>7!InLCsm0rp8pr!f3zr^Izelf>xsC|Ywbl8;RvbP!w z#T~$*;)sshEy5?*m`P^+=i$rIzNTUSDF3N*1cCoX(uX57KlBqvY^*@=fc_Ca05irA z;G_{1n?HB#!Yz^Tp3M9Y#$>+q`3?Tas&Ic|lF-*=5sda|jdFss;sUSb<-Tr1zXK4V z4vbVVCfJO!NmlD$WU+Z7m5qSi|v|VvhA9d zntBl;R&eLY(+0LwuJelcUD_-1+Q0YC$Qf_6e>#cXu_S`~tKgX{?lbw!Qh-6wOlxm) zZ9eZ>aIhHng5uJcFrulr7l>w5BGq%3>?7;GlV1?H^KT+-p=;(Jj0q*Dq|jyar-Cc=lle!BCv?f|9qbGJX#Q}RH`p2&NRI5KPcSgC zdLU@m5w@;a%T-G9|-YA^ms-zM!iAlN-N{k@q-0l0A`gcnvsQ z@XyQ@PFi^f!y54VpdgOcH&B$L^i^B%QQN{6*FaKm4G|QMr$G);B{J)j`+y8sn zqEhw@c{MCOD!mf-zZKozD~oR`xFGP=f9;kCR?r@woETkkkg-2X@0A}f0Yw(!1rbK) zv+0!eFzc_&*bi~DxldULWzxKWO{dmtbVWuo*+Ix0T&M)$xSLoEnt+aYf?aE~jfG2$ z-c_?8tHiG)S_k5S#68<;Ce`Q+mWlQjNc-pdT(0CH(Cc#UcXUW_h z-YDUpGW9X^l_<;$K;51dyyvv+{XFAH>lZYa!31Is*Getlu)mob;VY}-;M`Y_&Al%|GCyl_MUf*d z^kud&Va$9f{;u%MR4)A?1Av*CSe#Zx+t}y?khl`bYH-^>tgGMFX$@}spJfFA`FzZh z;dej#s^-<*PF#2R)9USTi8!T4pXha>~o^m_@cD%l7{)zxjniKtji4B#e zKdi1S+ouN`*47$V;+qJK^T)kYe=PzAMxOj943Dx3^i?9!@+wPwJbjbFu-Zbr(PNje zlC`94qQ6{SQrQqloVic$(XxUI-Rcr=gUvgW=k^Q+4e^suD^qzsa@L@teRM$|)Bv+9 zEMTZWT@R?gIfaHk$0}(?(kj5ziGDG5eP`^m4uXEUi)9DJ_j7SjWnRO@vN`dP_GRR)?Opt7@3%+8h&+>~8-W|TP-Fuf2=I$6@ zTQMZCpG%BR%b6Ojui}hEiqjIZeP+jiwB+!eIn?uPyCIizkwV@CSlnho5|F478S}-& zIH-nF*z#qA$3L1G=()au*khIZayA#4v4Z^^-TRAUA8y)Wvk`LSI33IySj?gEpcgG+ zDLaM01jVU4aSEmiBEif<8gr*k5svldo;`S?N1wigz&akt%e)`aghE%#sC8ou4P#8> zEM=a8DVnrKk&7?brdB5U4mQzuT%YJmm5H9f2lD*O3QLypgPApp$AU|SthfwQ7Jitr zfF;`@*$`v{!8?o4TUhmbI^`|N)i3-4zVeQ|259R+-A2GN18&>H;-{c)kF(X%KUjSO z(_UDxpgXanfa|tdvI;g{lPuW<8P~QX=Rffamxdg91x0yKl&-|f~T`5`Zz;)3u-KX7Orrs)GY6;+<37Srin2reNU@kCi-JMgv140(-jy zb0f;eq8kE3C_G@}rDg~Y29|2uLUz4Xl zP8I7!3%ygU7}*t;J-VFF=sd=$AtV)JqO2P>vkkN}_#;}L`H`GCg;<&`W{>`msP>5T zqXqNLT%^9rcxvr2CJt1gCk6FAT%@Xc{^pq-+~PttdBRbZU1ONz9U2EQE-WZ1SuNP- zK^8qxf;t2gAvCXaA;a7b4VmIF|MQCDn2bnoj1HIiyJhWhCjHfyZGw``70y;M;4F?< zKO=PkcNz8yJfMeAA#v&Fw!@bh`Iu-XUr@qjXw@w4REKpJjgETU(RK$+eR8e0To8y7?HfWulbXN70`C>{4tO-_vVhoKBB_71qo7R9 zjli_po;8RRJa8?s+}qiJ6uVdoTO>^~rA~GfsPxhZYPWBnMfV6O52wDC6+Ju`wpw$! zl$i{{T^u(;Wg7v;DkBw${-RCLCu~zs*UWt;&H@)fAII8ubpstvyWO@cw&ikfl?&pL zLd%t22_^}m)QcDXMYm`pE=0?Eu#?X{u13#PP3GhF?3DTB)$hu_5vl+Re~ej%DJi?? z!=duy0WClEnxnfCtLH(!&-QU_UPegT-3`=w$6eCySWQ~5c4wHlzZCdY>BesTlm+zy_66l~npG^-q-H-Z-Uy_bFBjv+wQOL_kG1-Tlg0 zBmFbWRIEm+AaLzr%&w5bHqfibPYE;c&G&WBo5YQ|!ywcedHs?S&!Rh8y}r7{$A9Hp zbmy9q8W=WLP%Y@=;r4#H+j`K)Yr^pCHC=~*)g;(%hG9H|;dlQR7!vNy&sSi`xdB5C zgCUi{ko&*Eu;jnMpaKTG{0?~BpvhwKwC@n@p|J+ssPblDZ|mf4Lq0BPCNx+~!^ybO zvpkYC79wx1=Ggf@um3a;yQqCp9%-ygibtH+a(0#qe5b;-sd>R!gS)(@X?eFL6eesN zP7n)~v|B_mGsbH_$`emrY^tR}@?>!#`jE>7yv(wHD;4EPMR(NHr3UH}|FH6fXKIRa z14VbbKa)%Sn=m+@#l00NJ&+gzhg+&=>fR?A-+I7n^fgn(v^L>m#APB&F`yH|Xa|I24R+K0A&DCZS46~6th-c~vxTXS2&c;PrY}#MXB_l_Ef^iKXz=j2Bxhsav}v zb%O=sZEI^C12(K(yWOtD_>kl=mZUM3z}ji>y7~Wkq@;vl|0RJO)e^059)051+Ow1R zXss3}?+^5>_(sr3?-^6W+-bXt@0V&!)`BOU%_QG!;7Tj@R@r-oN*@6H06rl#wl+_I zs}@U-<3sSCSigWsjw7o-ksVK!*`gy7qwkoI811N9!9{~ly*(`cVBMO>O?ILZM( z-RbvFFcnU)JTXR3G$F8cl;xGbT?U^ulwpEC56&qziAupwQqz{<#>XacxW?r}+8r{+ zz5#T>_`kv~*8))9@S*kk>x6t*3dM+f2sxgH?{T!KIaaf^Y1?AS3c)SpYuDP^ODcm+vuFr=)9-VxvbIot43#4qw|lA&Sx8)&ow$* z8=dj!KIV&XRZpqnFQ#8J&XgazYIyjJfy_a7faOMP@ zxdCT!z_~Qw%m_F$1I~p3=c0hKHsE|I;CwmYd?n!A5^%m5aBdGc-wrt64>wohkLsf_mq#>zz;4JJ;1aKdyIvE;{2y z=NQp>zv%p(=v*y2_jroTuA-6E&&f4K#{BiNd!6hl5?w{{)h{3vhb8#_k>(uG)yc?l!_8?2eCCEJF4ZnKOit!Dw@_<6fG9rzI8Pg zyX-5nG!~63eF85N%YP#Wiek%G;;&7SLxz)G0zm1J>$!`&zG^nmoZ1oSSDuVh#AFVMuwQN@cP;zqzW>(9%;ZwB0S|5E?fKz zxbUQFy3u}db?*#29zWin#jhpZXy?;-cq{L6!$X-gn6a#I(%8?5;*c7+RFrfH(bk&c zVZI!7AV=dV9?liVrtnQeVz*%0D63osjE` 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

Of(axZx z&v%#BRO7nMT}9NCmag^Uc~@4~RhGHG7F{7%<2iU|@#%7Pd_B5Hb$w;^S~q01kbL?~ zQ~3Pcw76Q-E3OtD2vxl6PkDaM0O9M<2W7KA1+AZK8R3pgw3aE}IHm6ScBkT_2tqQw zZa2TsEz>f}LdePrI9H-mdF%POTHfVd!~5w&`-9uNuClJi%h%No2i7LiBynZDYeT&o zeHz`TTIP-QH6ZuOIy_qwjV!P6mbpA@@OaBn+@0{XN_b5vjagggE*p+f+9tcu|BNOO za9zzB5K^X9niYaN`#av^oGe};6~83V{X>-bO*+YOSJiko@Uq8KQz|RZ8!f6w53MZq z54|e6fp$7NO-JcRZDC+ z)+y#M7p~vDJoPtqo6av87nn5lE3zftvy#7<1%tT?>YPN Date: Sat, 30 Sep 2017 18:02:26 +0200 Subject: [PATCH 17/41] Delete BME680_Timer_I2C.bin --- .../firmware/BME680_Timer_I2C.bin | Bin 244384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin diff --git a/examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin b/examples/bme680/bme680_timer_i2c/firmware/BME680_Timer_I2C.bin deleted file mode 100644 index 8b455f1a9a0ca784e83ce3377b052ff746e1fb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244384 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

oR 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≠C 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ÐvbZwuyr27ihzjflrf-aBQ%u$8j6$7z#~7 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 K^A(Opw*5OK1qlcM From c420d82c42ac768c3c526bcd0c9738259425bf05 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 18:44:00 +0200 Subject: [PATCH 18/41] Driver for the brand new Bosch BME680 sensor added I have written a driver for Bosch Sensortec's BME680 sensor. This sensor integrates temperature, pressure, humidity and gas sensors in a single unit. --- extras/bme680/README.md | 341 +++++++++++ extras/bme680/bme680.c | 1105 +++++++++++++++++++++++++++++++++++ extras/bme680/bme680.h | 225 +++++++ extras/bme680/bme680_defs.h | 529 +++++++++++++++++ extras/bme680/bme680_drv.c | 733 +++++++++++++++++++++++ extras/bme680/bme680_drv.h | 398 +++++++++++++ extras/bme680/component.mk | 9 + 7 files changed, 3340 insertions(+) create mode 100644 extras/bme680/README.md create mode 100644 extras/bme680/bme680.c create mode 100644 extras/bme680/bme680.h create mode 100644 extras/bme680/bme680_defs.h create mode 100644 extras/bme680/bme680_drv.c create mode 100644 extras/bme680/bme680_drv.h create mode 100644 extras/bme680/component.mk diff --git a/extras/bme680/README.md b/extras/bme680/README.md new file mode 100644 index 0000000..e870f76 --- /dev/null +++ b/extras/bme680/README.md @@ -0,0 +1,341 @@ +# Driver for BME680 digital temperature and humidity sensor + +This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). + +Please note: + +1. The driver supports multiple sensors that are connected either to I2C as well as SPI. + +2. Due to the complexity of the sensor output value compputation based on many calibration parameters, the original Bosch Sensortec BME680 driver that is released as open source [https://github.com/BoschSensortec/BME680_driver] is integrated for internal use. Please note the license of this part, which is an extended BSD license and can be found in each of that source files. + +## About the sensor + +BME680 is an low power environmental sensor that integrates a temperature, a pressure, a humidity and a gas sensor in only one unit. It can be connected to controller using either I2C or SPI. + +### Sensor modes + +BME680 can operate in two different low-level power modes, the *sleep mode* and the *forced mode*. + +#### Sleep mode + +This mode is the default mode. The sensor starts automatically in this mode after power-up sequence. In this mode it does not perform any measurement and therefore just consumes 0.15 μA. + +#### Forced Mode + +Using the mode switch command, the sensor switches from sleep mode into the forced mode. In this mode, temperature, pressure, humidity and gas measurements are performed sequentially exactly once. Such a measurement cycle is also called TPHG (Temperature, Pressure, Humidity and Gas). + +Each of these measurements can be influenced, activated or skipped separately via the sensor settings, see section **Measurement settings**. + +### Measurement settings + +The sensor allows to change different measurement parameters. + +#### Oversampling rates + +For temperature, pressure, and humidity measurements, it is possible by the user task to individually define different over-sampling rates for each of these measurements. Possible over-sampling rates are 1x (default by the driver) 2x, 4x, 8x and 16x. + +It is also possible to define an oversampling rate of 0. This deactivates the corresponding measurement and the output values become invalid. + +#### IIR Filter + +The sensor integrates an internal IIR filter (low pass filter) to reduce short-term changes in sensor output values caused by external disturbances. It effectively reduces the bandwidth of the sensor output values. + +The filter can optionally be used for pressure and temperature data that are subject to many short-term changes. Humidity and gas inside the sensor does not fluctuate rapidly and does not require such a low pass filtering. + +The user task can change the size of the filter. The default size is 3. If the size of the filter becomes 0, the filter is not used. + +#### Heater profile + +For gas measurement the sensor integrates a heater. The paremeters for this heater are defined by a heater profile. Such a heater profile consists of a temperature setting point (the target temperature) and the heating duration. + +Even though the sensor supports up to 10 different such profiles at them same time, only one profile is used by the driver for simplicity reasons. The temperature setting point and the heating duration of this one profile can be defined by the user task. Default values used by the driver are 320 degree Celcius as target temperature and 150 ms heating duration. + +According to the datasheet, target temperatures of between 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary for the heater to reach the desired target temperature. + +If heating duration is 0 ms, the gas measurement is skipped and output values become invalid. + +### Communication interfaces + +The sensor can be connected using I2C or SPI. The driver support both communication interfaces. + +The I2C interface supports the Standard, Fast and High Speed modes up to 3.4 Mbps. It is possible to connect multiple BME680 with two different I2C slave addresses (0x76 and 0x77) to one I2C bus or with same I2C addresses to different I2C busses. + +The SPI interface allows clock rates up to 10 MHz and SPI modes '00' (CPOL=CPHA=0) and '11' (CPOL=CPHA=1). + +Interface selection is done automatically using the CS signal. As long as the CS signal keeps high after power-on reset, the I2C interface is used. Once the CS signal has been pulled down, SPI interface is used until next power-on reset. + +## How the driver works + +To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These background tasks are created implicitly when a user task calls function *bme680_create_sensor* for each connected BME680 sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *bme680_set_measurement_period* (default period is 1000 ms). + +### Measurement method + +The driver triggers a measurement cycle using functions of the original Bosch Sensortec BME680 driver, which has been released as open source [https://github.com/BoschSensortec/BME680_driver] and is integrated for internal use. These functions call up recall functions of the driver which implement the communication with the sensor. + +The duration of a THPG measuring cycle can vary from a few milliseconds to a half a second, depending on which measurements of the THPG measuring cycle are activated and the measurement settings such as the oversampling rate and heating profile as well as sensor value processing parameters such as the IIR filter size. + +Therefore, the measurement period should be not less than 1 second. + +### Measured data + +At each measurement, *actual sensor values* for temperature, pressure, humidity as well as gas are determined as floating point values from the measured data sets. Temperature is given in °C, pressure in hectopascals, Humidity in percent and gas is given in Ohm representing the resistance of sensor's gas sensitive layer. + +If average value computation is enabled (default), the background task also computes successively at each measurement the *average sensor values* based on these *actual sensor values* using the exponential moving average + + Average[k] = W * Actual + (1-W) * Average [k-1] + +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function *bme680_set_average_weight*. The default value of W is 0.2. The average value computation can be enabled or disabled using function *bme680_enable_average_computation*. + +If average computation is disabled, *average sensor values* correspond to the *actual sensor values*. + +### Getting results. + +As soon as a measurement is completed, the actual sensor values * and * average sensor values * can be read by user tasks. There are two ways to do this: + +- define a callback function or +- call the function * bme680_get_values * explicitly. + +#### Using callback function + +For each connected BME680 sensor, the user task can register a callback function using function *bme680_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. + +Using the callback function is the easiest way to get the results. + +#### Using function bme680_get_values + +If no recall function is registered, the user task must call *bme680_get_values* to get the *current sensor values* and *average sensor values*. These values are stored in data structures of type *bme680_value_set_t*, which are passed as pointer parameters to the function. By NULL pointers for one of these parameters, the user task can decide which results are not interesting. + +To ensure that the actual and average sensor values are up-to-date, the rate of periodic measurements realized by the background task should be at least equal to or higher than the rate of calling the function *bme680_get_values*. That is, the measurement period in the background task which is set by function *bme680_set_measurement_period* must be less than or equal to the rate of calling function *bme680_get_values*. + +Please note: If gas measurement is activated, the measuring period should be at least 1 second. + +## Usage + +First, the hardware configuration has to be establisch. This can differ dependent on the communication interface and the number of sensors to be used. + +### Hardware configuration + +First figure shows a possible configuration with only one I2C busses. + +``` + +------------------------+ +--------+ + | ESP8266 Bus 0 | | BME680 | + | GPIO 5 (SCL) +---->+ SCL | + | GPIO 4 (SDA) +-----+ SDA | + | | +--------+ + +------------------------+ +``` +Next figure shows a possible configuration with two I2C busses. + +``` + +------------------------+ +----------+ + | ESP8266 Bus 0 | | BME680_1 | + | GPIO 5 (SCL) ------> SCL | + | GPIO 4 (SDA) ------- SDA | + | | +----------+ + | Bus 1 | | BME680_2 | + | GPIO 12 (SCL) ------> SCL | + | GPIO 14 (SDA) ------- SDA | + +------------------------+ +----------+ +``` + +Last figure shows a possible configuration using SPI bus 1. + + +-------------------------+ +--------+ + | ESP8266 Bus 0 | | BME680 | + | GPIO 12 (MISO) <------ SDO | + | GPIO 13 (MOSI) >-----> SDA | + | GPIO 14 (SCK) >-----> SCK | + | GPIO 2 (CS) >-----> CS | + +-------------------------+ +--------+ + +Please note: + +1. Since the system flash memory is connected to SPI bus 0, the sensor has to be connected to SPI bus 1. + +2. GPIO15 used as CS signal of SPI bus 1 by default, does not work correctly together with BME680's signal. Therefore, the user has to specify another GPIO pin as CS signal when the sensor is created, e.g. GPIO2. + +### Communication interface dependent part + +According to the hardware configuration, some constants should be defined, e.g. for +only one I2C and the SPI. + +``` +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +#define SPI_BUS 1 +#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used +``` +Only in case of I2C, the I2C driver has to initialized before it can be used. This is not neccessary for SPI. + +``` +... +i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)) +``` + +Next, the BME680 driver itself has to be initialized using function *bme680_init*. This is independent on the communication interface. + +``` +bme680_init_driver(); +``` + +If BME680 driver initialization was successful, function *bme680_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. + +In the case of I2C interface, this call looks like following. The last parameter is the SPI CS signal pin is ignored in case of I2C. + +``` +sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); +``` + +For SPI the call looks like this. The second parameter is the I2C slave address, that is invalid. It is used by function *bme680_create_sensor* to determine the communication infertace to be used. In cas of SPI, the GPIO for CS signal has to be specified. + +``` + sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); +``` + +On success this function returns the *ID* of a sensor descriptor between 0 and *BME680_MAX_SENSORS* or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. + +The remaining part of the software is independent on the communication interface. + +If you want to use a callback function defined like following to get the measurement results + +``` +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + ... +} +``` + +You have to register this callback function using *bme680_set_callback_function*. + +``` +bme680_set_callback_function (sensor, &my_callback_function); +``` + +Optionally, you could wish to set some measurement parameters. For details see the section **Measurement settings** above, the header file of the driver **bme680_driver.h**, and of course the datasheet of the sensor. + +``` +// Change the period of measurements (default 1000 ms) to 500 ms. +bme680_set_measurement_period (sensor, 500); + +// Changes the oversampling rates (default os_1x) to 4x oversampling for +// temperature and 2x oversampling for pressure. Humidity measurement is +// skipped. +bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + +// Change the IIR filter size (default iir_size_3) for temperature and +// and pressure to 7. +bme680_set_filter_size(sensor, iir_size_7); + +// Change the heaeter profile (default 320 degree Celcius for 150 ms) to +// 200 degree Celcius for 100 ms. +bme680_set_heater_profile (sensor, 200, 100); +``` + +All functions return a boolean that allows effective error handling. + +## Full Example for one sensor connected to I2C bus + +``` + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} +``` + +## Further Examples + +For further examples see [examples directory](../../examples/bme680/README.md) + + diff --git a/extras/bme680/bme680.c b/extras/bme680/bme680.c new file mode 100644 index 0000000..1b53aa5 --- /dev/null +++ b/extras/bme680/bme680.c @@ -0,0 +1,1105 @@ +/**\mainpage + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * File bme680.c + * @date 5 Jul 2017 + * @version 3.5.1 + * + */ + +/*! @file bme680.c + @brief Sensor driver for BME680 sensor */ +#include "bme680.h" + +/**static variables */ +/**Look up table for the possible gas range values */ +uint32_t lookupTable1[16] = { UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), + UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2130303777), UINT32_C(2147483647), + UINT32_C(2147483647), UINT32_C(2143188679), UINT32_C(2136746228), UINT32_C(2147483647), UINT32_C(2126008810), + UINT32_C(2147483647), UINT32_C(2147483647) }; +/**Look up table for the possible gas range values */ +uint32_t lookupTable2[16] = { UINT32_C(4096000000), UINT32_C(2048000000), UINT32_C(1024000000), UINT32_C(512000000), + UINT32_C(255744255), UINT32_C(127110228), UINT32_C(64000000), UINT32_C(32258064), UINT32_C(16016016), UINT32_C( + 8000000), UINT32_C(4000000), UINT32_C(2000000), UINT32_C(1000000), UINT32_C(500000), UINT32_C(250000), + UINT32_C(125000) }; + +/*! + * @brief This internal API is used to read the calibrated data from the sensor. + * + * This function is used to retrieve the calibration + * data from the image registers of the sensor. + * + * @note Registers 89h to A1h for calibration data 1 to 24 + * from bit 0 to 7 + * @note Registers E1h to F0h for calibration data 25 to 40 + * from bit 0 to 7 + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_calib_data(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to set the gas configuration of the sensor. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t set_gas_config(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to get the gas configuration of the sensor. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_gas_config(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Heat duration value. + * + * @param[in] dur :Value of the duration to be shared. + * + * @return uint8_t threshold duration after calculation. + */ +static uint8_t calc_heater_dur(uint16_t dur); + +/*! + * @brief This internal API is used to calculate the temperature value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] temp_adc :Contains the temperature ADC value . + * + * @return uint32_t calculated temperature. + */ +static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the pressure value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] pres_adc :Contains the pressure ADC value . + * + * @return uint32_t calculated pressure. + */ +static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the humidity value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] hum_adc :Contains the humidity ADC value. + * + * @return uint32_t calculated humidity. + */ +static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Gas Resistance value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] gas_res_adc :Contains the Gas Resistance ADC value. + * @param[in] gas_range :Contains the range of gas values. + * + * @return uint32_t calculated gas resistance. + */ +static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Heat Resistance value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] temp :Contains the temporary value. + * + * @return uint8_t calculated heater resistance. + */ +static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the field data of sensor. + * + * @param[out] data :Structure instance to hold the data + * @param[in] dev :Structure instance of bme680_dev. + * + * @return int8_t result of the field data from sensor. + */ +static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to set the memory page + * based on register address. + * + * The value of memory page + * value | Description + * --------|-------------- + * 0 | BME680_PAGE0_SPI + * 1 | BME680_PAGE1_SPI + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] reg_addr :Contains the register address array. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to get the memory page based + * on register address. + * + * The value of memory page + * value | Description + * --------|-------------- + * 0 | BME680_PAGE0_SPI + * 1 | BME680_PAGE1_SPI + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_mem_page(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to validate the device pointer for + * null conditions. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t null_ptr_check(const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to check the boundary + * conditions. + * + * @param[in] value :pointer to the value. + * @param[in] min :minimum value. + * @param[in] max :maximum value. + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev); + +/****************** Global Function Definitions *******************************/ +/*! + *@brief This API is the entry point. + *It reads the chip-id and calibration data from the sensor. + */ +int8_t bme680_init(struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) + { + /* Soft reset to restore it to default values*/ + rslt = bme680_soft_reset(dev); + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev); + if (rslt == BME680_OK) { + if (dev->chip_id == BME680_CHIP_ID) { + rslt = get_calib_data(dev); + } else { + rslt = BME680_E_DEV_NOT_FOUND; + } + } + } + } + + return rslt; +} + +/*! + * @brief This API reads the data from the given register address of the sensor. + */ +int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (dev->intf == BME680_SPI_INTF) { + /* Set the memory page */ + rslt = set_mem_page(reg_addr, dev); + if (rslt == BME680_OK) + reg_addr = reg_addr | BME680_SPI_RD_MSK; + } + dev->com_rslt = dev->read(dev->dev_id, reg_addr, reg_data, len); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + + return rslt; +} + +/*! + * @brief This API writes the given data to the register address + * of the sensor. + */ +int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev) +{ + int8_t rslt; + /* Length of the temporary buffer is 2*(length of register)*/ + uint8_t tmp_buff[BME680_TMP_BUFFER_LENGTH] = { 0 }; + uint16_t index; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if ((len > 0) && (len < BME680_TMP_BUFFER_LENGTH / 2)) { + /* Interleave the 2 arrays */ + for (index = 0; index < len; index++) { + if (dev->intf == BME680_SPI_INTF) { + /* Set the memory page */ + rslt = set_mem_page(reg_addr[index], dev); + tmp_buff[(2 * index)] = reg_addr[index] & BME680_SPI_WR_MSK; + } else { + tmp_buff[(2 * index)] = reg_addr[index]; + } + tmp_buff[(2 * index) + 1] = reg_data[index]; + } + /* Write the interleaved array */ + if (rslt == BME680_OK) { + dev->com_rslt = dev->write(dev->dev_id, tmp_buff[0], &tmp_buff[1], (2 * len) - 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + } else { + rslt = BME680_E_INVALID_LENGTH; + } + } + + return rslt; +} + +/*! + * @brief This API performs the soft reset of the sensor. + */ +int8_t bme680_soft_reset(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg_addr = BME680_SOFT_RESET_ADDR; + /* 0xb6 is the soft reset command */ + uint8_t soft_rst_cmd = BME680_SOFT_RESET_CMD; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (dev->intf == BME680_SPI_INTF) + rslt = get_mem_page(dev); + + /* Reset the device */ + if (rslt == BME680_OK) { + rslt = bme680_set_regs(®_addr, &soft_rst_cmd, 1, dev); + /* Wait for 5ms */ + dev->delay_ms(BME680_RESET_PERIOD); + + if (rslt == BME680_OK) { + /* After reset get the memory page */ + if (dev->intf == BME680_SPI_INTF) + rslt = get_mem_page(dev); + } + } + } + + return rslt; +} + +/*! + * @brief This API is used to set the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + */ +int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg_addr; + uint8_t data = 0; + uint8_t count = 0; + uint8_t reg_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + uint8_t intended_power_mode = dev->power_mode; /* Save intended power mode */ + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (desired_settings & BME680_GAS_MEAS_SEL) + rslt = set_gas_config(dev); + + dev->power_mode = BME680_SLEEP_MODE; + if (rslt == BME680_OK) + rslt = bme680_set_sensor_mode(dev); + + /* Selecting the filter */ + if (desired_settings & BME680_FILTER_SEL) { + rslt = boundary_check(&dev->tph_sett.filter, BME680_FILTER_SIZE_0, BME680_FILTER_SIZE_127, dev); + reg_addr = BME680_CONF_ODR_FILT_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_FILTER_SEL) + data = BME680_SET_BITS(data, BME680_FILTER, dev->tph_sett.filter); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting heater control for the sensor */ + if (desired_settings & BME680_HCNTRL_SEL) { + rslt = boundary_check(&dev->gas_sett.heatr_ctrl, BME680_ENABLE_HEATER, BME680_DISABLE_HEATER, dev); + reg_addr = BME680_CONF_HEAT_CTRL_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + data = BME680_SET_BITS_POS_0(data, BME680_HCTRL, dev->gas_sett.heatr_ctrl); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting heater T,P oversampling for the sensor */ + if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { + rslt = boundary_check(&dev->tph_sett.os_temp, BME680_OS_NONE, BME680_OS_16X, dev); + reg_addr = BME680_CONF_T_P_MODE_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_OST_SEL) + data = BME680_SET_BITS(data, BME680_OST, dev->tph_sett.os_temp); + + if (desired_settings & BME680_OSP_SEL) + data = BME680_SET_BITS(data, BME680_OSP, dev->tph_sett.os_pres); + + reg_array[count] = reg_addr; + data_array[count] = data; + count++; + } + + /* Selecting humidity oversampling for the sensor */ + if (desired_settings & BME680_OSH_SEL) { + rslt = boundary_check(&dev->tph_sett.os_hum, BME680_OS_NONE, BME680_OS_16X, dev); + reg_addr = BME680_CONF_OS_H_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + data = BME680_SET_BITS_POS_0(data, BME680_OSH, dev->tph_sett.os_hum); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting the runGas and NB conversion settings for the sensor */ + if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { + rslt = boundary_check(&dev->gas_sett.run_gas, BME680_RUN_GAS_DISABLE, BME680_RUN_GAS_ENABLE, dev); + if (rslt == BME680_OK) + rslt = boundary_check(&dev->gas_sett.nb_conv, BME680_NBCONV_MIN, BME680_NBCONV_MAX, dev); + reg_addr = BME680_CONF_ODR_RUN_GAS_NBC_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_RUN_GAS_SEL) + data = BME680_SET_BITS(data, BME680_RUN_GAS, dev->gas_sett.run_gas); + + if (desired_settings & BME680_NBCONV_SEL) + data = BME680_SET_BITS_POS_0(data, BME680_NBCONV, dev->gas_sett.nb_conv); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + if (rslt == BME680_OK) + rslt = bme680_set_regs(reg_array, data_array, count, dev); + + /* Restore previous intended power mode */ + dev->power_mode = intended_power_mode; + } + + return rslt; +} + +/*! + * @brief This API is used to get the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + */ +int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) +{ + int8_t rslt; + /* starting address of the register array for burst read*/ + uint8_t reg_addr = BME680_CONF_HEAT_CTRL_ADDR; + uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(reg_addr, data_array, BME680_REG_BUFFER_LENGTH, dev); + + if (rslt == BME680_OK) { + if (desired_settings & BME680_GAS_MEAS_SEL) + rslt = get_gas_config(dev); + + /* get the T,P,H ,Filter,ODR settings here */ + if (desired_settings & BME680_FILTER_SEL) + dev->tph_sett.filter = BME680_GET_BITS(data_array[BME680_REG_FILTER_INDEX], BME680_FILTER); + + if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { + dev->tph_sett.os_temp = BME680_GET_BITS(data_array[BME680_REG_TEMP_INDEX], BME680_OST); + dev->tph_sett.os_pres = BME680_GET_BITS(data_array[BME680_REG_PRES_INDEX], BME680_OSP); + } + + if (desired_settings & BME680_OSH_SEL) + dev->tph_sett.os_hum = BME680_GET_BITS_POS_0(data_array[BME680_REG_HUM_INDEX], BME680_OSH); + + /* get the gas related settings */ + if (desired_settings & BME680_HCNTRL_SEL) + dev->gas_sett.heatr_ctrl = BME680_GET_BITS_POS_0(data_array[BME680_REG_HCTRL_INDEX], BME680_HCTRL); + + if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { + dev->gas_sett.nb_conv = BME680_GET_BITS_POS_0(data_array[BME680_REG_NBCONV_INDEX], BME680_NBCONV); + dev->gas_sett.run_gas = BME680_GET_BITS(data_array[BME680_REG_RUN_GAS_INDEX], BME680_RUN_GAS); + } + } + } else { + rslt = BME680_E_NULL_PTR; + } + + return rslt; +} + +/*! + * @brief This API is used to set the power mode of the sensor. + */ +int8_t bme680_set_sensor_mode(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t tmp_pow_mode; + uint8_t pow_mode = 0; + uint8_t reg_addr = BME680_CONF_T_P_MODE_ADDR; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + /* Call recursively until in sleep */ + do { + rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &tmp_pow_mode, 1, dev); + if (rslt == BME680_OK) { + /* Put to sleep before changing mode */ + pow_mode = (tmp_pow_mode & BME680_MODE_MSK); + + if (pow_mode != BME680_SLEEP_MODE) { + tmp_pow_mode = tmp_pow_mode & (~BME680_MODE_MSK); /* Set to sleep */ + rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); + dev->delay_ms(BME680_POLL_PERIOD_MS); + } + } + } while (pow_mode != BME680_SLEEP_MODE); + + /* Already in sleep */ + if (dev->power_mode != BME680_SLEEP_MODE) { + tmp_pow_mode = (tmp_pow_mode & ~BME680_MODE_MSK) | (dev->power_mode & BME680_MODE_MSK); + if (rslt == BME680_OK) + rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); + } + } + + return rslt; +} + +/*! + * @brief This API is used to get the power mode of the sensor. + */ +int8_t bme680_get_sensor_mode(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t mode; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &mode, 1, dev); + /* Masking the other register bit info*/ + dev->power_mode = mode & BME680_MODE_MSK; + } + + return rslt; +} + +/*! + * @brief This API is used to set the profile duration of the sensor. + */ +void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev) +{ + uint32_t tph_dur; /* Calculate in us */ + + /* TPH measurement duration */ + tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); + tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ + tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ + tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ + tph_dur /= UINT32_C(1000); /* Convert to ms */ + + tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ + /* The remaining time should be used for heating */ + dev->gas_sett.heatr_dur = duration - (uint16_t) tph_dur; +} + +/*! + * @brief This API is used to get the profile duration of the sensor. + */ +void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev) +{ + uint32_t tph_dur; /* Calculate in us */ + + /* TPH measurement duration */ + tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); + tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ + tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ + tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ + tph_dur /= UINT32_C(1000); /* Convert to ms */ + + tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ + /* The remaining time should be used for heating */ + *duration = dev->gas_sett.heatr_dur + (uint16_t) tph_dur; +} + +/*! + * @brief This API reads the pressure, temperature and humidity and gas data + * from the sensor, compensates the data and store it in the bme680_data + * structure instance passed by the user. + */ +int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + /* Reading the sensor data in forced mode only */ + rslt = read_field_data(data, dev); + if (rslt == BME680_OK) { + if (data->status & BME680_NEW_DATA_MSK) + dev->new_fields = 1; + else + dev->new_fields = 0; + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to read the calibrated data from the sensor. + */ +static int8_t get_calib_data(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t coeff_array[BME680_COEFF_SIZE] = { 0 }; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_COEFF_ADDR1, coeff_array, BME680_COEFF_ADDR1_LEN, dev); + /* Append the second half in the same array */ + if (rslt == BME680_OK) + rslt = bme680_get_regs(BME680_COEFF_ADDR2, &coeff_array[BME680_COEFF_ADDR1_LEN], BME680_COEFF_ADDR2_LEN, + dev); + + /* Temperature related coefficients */ + dev->calib.par_t1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T1_MSB_REG], + coeff_array[BME680_T1_LSB_REG])); + dev->calib.par_t2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T2_MSB_REG], + coeff_array[BME680_T2_LSB_REG])); + dev->calib.par_t3 = (int8_t) (coeff_array[BME680_T3_REG]); + + /* Pressure related coefficients */ + dev->calib.par_p1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P1_MSB_REG], + coeff_array[BME680_P1_LSB_REG])); + dev->calib.par_p2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P2_MSB_REG], + coeff_array[BME680_P2_LSB_REG])); + dev->calib.par_p3 = (int8_t) coeff_array[BME680_P3_REG]; + dev->calib.par_p4 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P4_MSB_REG], + coeff_array[BME680_P4_LSB_REG])); + dev->calib.par_p5 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P5_MSB_REG], + coeff_array[BME680_P5_LSB_REG])); + dev->calib.par_p6 = (int8_t) (coeff_array[BME680_P6_REG]); + dev->calib.par_p7 = (int8_t) (coeff_array[BME680_P7_REG]); + dev->calib.par_p8 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P8_MSB_REG], + coeff_array[BME680_P8_LSB_REG])); + dev->calib.par_p9 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P9_MSB_REG], + coeff_array[BME680_P9_LSB_REG])); + dev->calib.par_p10 = (uint8_t) (coeff_array[BME680_P10_REG]); + + /* Humidity related coefficients */ + dev->calib.par_h1 = (uint16_t) (((uint16_t) coeff_array[BME680_H1_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) + | (coeff_array[BME680_H1_LSB_REG] & BME680_BIT_H1_DATA_MSK)); + dev->calib.par_h2 = (uint16_t) (((uint16_t) coeff_array[BME680_H2_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) + | ((coeff_array[BME680_H2_LSB_REG]) >> BME680_HUM_REG_SHIFT_VAL)); + dev->calib.par_h3 = (int8_t) coeff_array[BME680_H3_REG]; + dev->calib.par_h4 = (int8_t) coeff_array[BME680_H4_REG]; + dev->calib.par_h5 = (int8_t) coeff_array[BME680_H5_REG]; + dev->calib.par_h6 = (uint8_t) coeff_array[BME680_H6_REG]; + dev->calib.par_h7 = (int8_t) coeff_array[BME680_H7_REG]; + + /* Gas heater related coefficients */ + dev->calib.par_gh1 = (int8_t) coeff_array[BME680_GH1_REG]; + dev->calib.par_gh2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_GH2_MSB_REG], + coeff_array[BME680_GH2_LSB_REG])); + dev->calib.par_gh3 = (int8_t) coeff_array[BME680_GH3_REG]; + + /* Other coefficients */ + uint8_t temp_var = 0; /* Temporary variable */ + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_RANGE_ADDR, &temp_var, 1, dev); + + dev->calib.res_heat_range = ((temp_var & BME680_RHRANGE_MSK) / 16); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_VAL_ADDR, &temp_var, 1, dev); + + dev->calib.res_heat_val = (int8_t) temp_var; + if (rslt == BME680_OK) + rslt = bme680_get_regs(BME680_ADDR_RANGE_SW_ERR_ADDR, &temp_var, 1, dev); + } + } + dev->calib.range_sw_err = ((int8_t) temp_var & (int8_t) BME680_RSERROR_MSK) / 16; + } + + return rslt; +} + +/*! + * @brief This internal API is used to set the gas configuration of the sensor. + */ +static int8_t set_gas_config(struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + + uint8_t reg_addr[2], reg_data[2]; + + if (dev->power_mode == BME680_FORCED_MODE) { + reg_addr[0] = BME680_RES_HEAT0_ADDR; + reg_data[0] = calc_heater_res(dev->gas_sett.heatr_temp, dev); + reg_addr[1] = BME680_GAS_WAIT0_ADDR; + reg_data[1] = calc_heater_dur(dev->gas_sett.heatr_dur); + dev->gas_sett.nb_conv = 0; + } else { + rslt = BME680_W_DEFINE_PWR_MODE; + } + if (rslt == BME680_OK) + rslt = bme680_set_regs(reg_addr, reg_data, 2, dev); + } + + return rslt; +} + +/*! + * @brief This internal API is used to get the gas configuration of the sensor. + */ +static int8_t get_gas_config(struct bme680_dev *dev) +{ + int8_t rslt; + /* starting address of the register array for burst read*/ + uint8_t reg_addr1 = BME680_ADDR_SENS_CONF_START; + uint8_t reg_addr2 = BME680_ADDR_GAS_CONF_START; + uint8_t data_array[BME680_GAS_HEATER_PROF_LEN_MAX] = { 0 }; + uint8_t index; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (BME680_SPI_INTF == dev->intf) { + /* Memory page switch the SPI address*/ + rslt = set_mem_page(reg_addr1, dev); + } + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(reg_addr1, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); + if (rslt == BME680_OK) { + for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) + dev->gas_sett.heatr_temp = data_array[index]; + } + + rslt = bme680_get_regs(reg_addr2, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); + if (rslt == BME680_OK) { + for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) + dev->gas_sett.heatr_dur = data_array[index]; + } + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to calculate the temperature value. + */ +static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev) +{ + int64_t var1; + int64_t var2; + int64_t var3; + int16_t calc_temp; + + var1 = ((int32_t) temp_adc / 8) - ((int32_t) dev->calib.par_t1 * 2); + var2 = (var1 * (int32_t) dev->calib.par_t2) / 2048; + var3 = ((var1 / 2) * (var1 / 2)) / 4096; + var3 = ((var3) * ((int32_t) dev->calib.par_t3 * 16)) / 16384; + dev->calib.t_fine = (int32_t) (var2 + var3); + calc_temp = (int16_t) (((dev->calib.t_fine * 5) + 128) / 256); + + return calc_temp; +} + +/*! + * @brief This internal API is used to calculate the pressure value. + */ +static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) +{ + int32_t var1; + int32_t var2; + int32_t var3; + int32_t calc_pres; + + var1 = (((int32_t) dev->calib.t_fine) / 2) - 64000; + var2 = ((var1 / 4) * (var1 / 4)) / 2048; + var2 = ((var2) * (int32_t) dev->calib.par_p6) / 4; + var2 = var2 + ((var1 * (int32_t) dev->calib.par_p5) * 2); + var2 = (var2 / 4) + ((int32_t) dev->calib.par_p4 * 65536); + var1 = ((var1 / 4) * (var1 / 4)) / 8192; + var1 = (((var1) * ((int32_t) dev->calib.par_p3 * 32)) / 8) + (((int32_t) dev->calib.par_p2 * var1) / 2); + var1 = var1 / 262144; + var1 = ((32768 + var1) * (int32_t) dev->calib.par_p1) / 32768; + calc_pres = (int32_t) (1048576 - pres_adc); + calc_pres = (int32_t) ((calc_pres - (var2 / 4096)) * (3125)); + calc_pres = ((calc_pres / var1) * 2); + var1 = ((int32_t) dev->calib.par_p9 * (int32_t) (((calc_pres / 8) * (calc_pres / 8)) / 8192)) / 4096; + var2 = ((int32_t) (calc_pres / 4) * (int32_t) dev->calib.par_p8) / 8192; + var3 = ((int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) + * (int32_t) dev->calib.par_p10) / 131072; + calc_pres = (int32_t) (calc_pres) + ((var1 + var2 + var3 + ((int32_t) dev->calib.par_p7 * 128)) / 16); + + return (uint32_t) calc_pres; +} + +/*! + * @brief This internal API is used to calculate the humidity value. + */ +static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev) +{ + int32_t var1; + int32_t var2; + int32_t var3; + int32_t var4; + int32_t var5; + int32_t var6; + int32_t temp_scaled; + int32_t calc_hum; + + temp_scaled = (((int32_t) dev->calib.t_fine * 5) + 128) / 256; + var1 = (int32_t) (hum_adc - ((int32_t) ((int32_t) dev->calib.par_h1 * 16))) + - (((temp_scaled * (int32_t) dev->calib.par_h3) / ((int32_t) 100)) / 2); + var2 = ((int32_t) dev->calib.par_h2 + * (((temp_scaled * (int32_t) dev->calib.par_h4) / ((int32_t) 100)) + + (((temp_scaled * ((temp_scaled * (int32_t) dev->calib.par_h5) / ((int32_t) 100))) / 64) + / ((int32_t) 100)) + (int32_t) (1 * 16384))) / 1024; + var3 = var1 * var2; + var4 = (int32_t) dev->calib.par_h6 * 128; + var4 = ((var4) + ((temp_scaled * (int32_t) dev->calib.par_h7) / ((int32_t) 100))) / 16; + var5 = ((var3 / 16384) * (var3 / 16384)) / 1024; + var6 = (var4 * var5) / 2; + calc_hum = (((var3 + var6) / 1024) * ((int32_t) 1000)) / 4096; + + if (calc_hum > 100000) /* Cap at 100%rH */ + calc_hum = 100000; + else if (calc_hum < 0) + calc_hum = 0; + + return (uint32_t) calc_hum; +} + +/*! + * @brief This internal API is used to calculate the Gas Resistance value. + */ +static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev) +{ + int64_t var1; + uint64_t var2; + int64_t var3; + uint32_t calc_gas_res; + + var1 = (int64_t) ((1340 + (5 * (int64_t) dev->calib.range_sw_err)) * ((int64_t) lookupTable1[gas_range])) / 65536; + var2 = (((int64_t) ((int64_t) gas_res_adc * 32768) - (int64_t) (16777216)) + var1); + var3 = (((int64_t) lookupTable2[gas_range] * (int64_t) var1) / 512); + calc_gas_res = (uint32_t) ((var3 + ((int64_t) var2 / 2)) / (int64_t) var2); + + return calc_gas_res; +} + +/*! + * @brief This internal API is used to calculate the Heat Resistance value. + */ +static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev) +{ + uint8_t heatr_res; + int32_t var1; + int32_t var2; + int32_t var3; + int32_t var4; + int32_t var5; + int32_t heatr_res_x100; + + if (temp < 200) /* Cap temperature */ + temp = 200; + else if (temp > 400) + temp = 400; + + var1 = (((int32_t) dev->amb_temp * dev->calib.par_gh3) / 1000) * 256; + var2 = (dev->calib.par_gh1 + 784) * (((((dev->calib.par_gh2 + 154009) * temp * 5) / 100) + 3276800) / 10); + var3 = var1 + (var2 / 2); + var4 = (var3 / (dev->calib.res_heat_range + 4)); + var5 = (131 * dev->calib.res_heat_val) + 65536; + heatr_res_x100 = (int32_t) (((var4 / var5) - 250) * 34); + heatr_res = (uint8_t) ((heatr_res_x100 + 50) / 100); + + return heatr_res; +} + +/*! + * @brief This internal API is used to calculate the Heat duration value. + */ +static uint8_t calc_heater_dur(uint16_t dur) +{ + uint8_t factor = 0; + uint8_t durval; + + if (dur >= 0xfc0) { + durval = 0xff; /* Max duration*/ + } else { + while (dur > 0x3F) { + dur = dur / 4; + factor += 1; + } + durval = (uint8_t) (dur + (factor * 64)); + } + + return durval; +} + +/*! + * @brief This internal API is used to calculate the field data of sensor. + */ +static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t buff[BME680_FIELD_LENGTH] = { 0 }; + uint8_t gas_range; + uint32_t adc_temp; + uint32_t adc_pres; + uint16_t adc_hum; + uint16_t adc_gas_res; + uint8_t tries = 10; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + do { + if (rslt == BME680_OK) { + rslt = bme680_get_regs(((uint8_t) (BME680_FIELD0_ADDR)), buff, (uint16_t) BME680_FIELD_LENGTH, dev); + + data->status = buff[0] & BME680_NEW_DATA_MSK; + data->gas_index = buff[0] & BME680_GAS_INDEX_MSK; + data->meas_index = buff[1]; + + /* read the raw data from the sensor */ + adc_pres = (uint32_t) (((uint32_t) buff[2] * 4096) | ((uint32_t) buff[3] * 16) | ((uint32_t) buff[4] / 16)); + adc_temp = (uint32_t) (((uint32_t) buff[5] * 4096) | ((uint32_t) buff[6] * 16) | ((uint32_t) buff[7] / 16)); + adc_hum = (uint16_t) (((uint32_t) buff[8] * 256) | (uint32_t) buff[9]); + adc_gas_res = (uint16_t) ((uint32_t) buff[13] * 4 | (((uint32_t) buff[14]) / 64)); + gas_range = buff[14] & BME680_GAS_RANGE_MSK; + + data->status |= buff[14] & BME680_GASM_VALID_MSK; + data->status |= buff[14] & BME680_HEAT_STAB_MSK; + + if (data->status & BME680_NEW_DATA_MSK) { + data->temperature = calc_temperature(adc_temp, dev); + data->pressure = calc_pressure(adc_pres, dev); + data->humidity = calc_humidity(adc_hum, dev); + data->gas_resistance = calc_gas_resistance(adc_gas_res, gas_range, dev); + break; + } else { + dev->delay_ms(BME680_POLL_PERIOD_MS); + } + } + tries--; + } while (tries); + + if (!tries) + rslt = BME680_W_NO_NEW_DATA; + + return rslt; +} + +/*! + * @brief This internal API is used to set the memory page based on register address. + */ +static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg; + uint8_t mem_page; + + /* Check for null pointers in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (reg_addr > 0x7f) + mem_page = BME680_MEM_PAGE1; + else + mem_page = BME680_MEM_PAGE0; + + if (mem_page != dev->mem_page) { + dev->mem_page = mem_page; + + dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + + if (rslt == BME680_OK) { + reg = reg & (~BME680_MEM_PAGE_MSK); + reg = reg | (dev->mem_page & BME680_MEM_PAGE_MSK); + + dev->com_rslt = dev->write(dev->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to get the memory page based on register address. + */ +static int8_t get_mem_page(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + else + dev->mem_page = reg & BME680_MEM_PAGE_MSK; + } + + return rslt; +} + +/*! + * @brief This internal API is used to validate the boundary + * conditions. + */ +static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev) +{ + int8_t rslt = BME680_OK; + + if (value != NULL) { + /* Check if value is below minimum value */ + if (*value < min) { + /* Auto correct the invalid value to minimum value */ + *value = min; + dev->info_msg |= BME680_I_MIN_CORRECTION; + } + /* Check if value is above maximum value */ + if (*value > max) { + /* Auto correct the invalid value to maximum value */ + *value = max; + dev->info_msg |= BME680_I_MAX_CORRECTION; + } + } else { + rslt = BME680_E_NULL_PTR; + } + + return rslt; +} + +/*! + * @brief This internal API is used to validate the device structure pointer for + * null conditions. + */ +static int8_t null_ptr_check(const struct bme680_dev *dev) +{ + int8_t rslt; + + if ((dev == NULL) || (dev->read == NULL) || (dev->write == NULL) || (dev->delay_ms == NULL)) { + /* Device structure pointer is not valid */ + rslt = BME680_E_NULL_PTR; + } else { + /* Device structure is fine */ + rslt = BME680_OK; + } + + return rslt; +} diff --git a/extras/bme680/bme680.h b/extras/bme680/bme680.h new file mode 100644 index 0000000..38b8628 --- /dev/null +++ b/extras/bme680/bme680.h @@ -0,0 +1,225 @@ +/** + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bme680.h + * @date 5 Jul 2017 + * @version 3.5.1 + * @brief + * + */ +/*! @file bme680.h + @brief Sensor driver for BME680 sensor */ +/*! + * @defgroup BME680 SENSOR API + * @{*/ +#ifndef BME680_H_ +#define BME680_H_ + +/*! CPP guard */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Header includes */ +#include "bme680_defs.h" + +/* function prototype declarations */ +/*! + * @brief This API is the entry point. + * It reads the chip-id and calibration data from the sensor. + * + * @param[in,out] dev : Structure instance of bme680_dev + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_init(struct bme680_dev *dev); + +/*! + * @brief This API writes the given data to the register address + * of the sensor. + * + * @param[in] reg_addr : Register address from where the data to be written. + * @param[in] reg_data : Pointer to data buffer which is to be written + * in the sensor. + * @param[in] len : No of bytes of data to write.. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev); + +/*! + * @brief This API reads the data from the given register address of the sensor. + * + * @param[in] reg_addr : Register address from where the data to be read + * @param[out] reg_data : Pointer to data buffer to store the read data. + * @param[in] len : No of bytes of data to be read. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev); + +/*! + * @brief This API performs the soft reset of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_soft_reset(struct bme680_dev *dev); + +/*! + * @brief This API is used to set the power mode of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev + * @note : Pass the value to bme680_dev.power_mode structure variable. + * + * value | mode + * -------------|------------------ + * 0x00 | BME680_SLEEP_MODE + * 0x01 | BME680_FORCED_MODE + * + * * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_set_sensor_mode(struct bme680_dev *dev); + +/*! + * @brief This API is used to get the power mode of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev + * @note : bme680_dev.power_mode structure variable hold the power mode. + * + * value | mode + * ---------|------------------ + * 0x00 | BME680_SLEEP_MODE + * 0x01 | BME680_FORCED_MODE + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_sensor_mode(struct bme680_dev *dev); + +/*! + * @brief This API is used to set the profile duration of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] duration : Duration of the measurement in ms. + * + * @return Nothing + */ +void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev); + +/*! + * @brief This API is used to get the profile duration of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] duration : Duration of the measurement in ms. + * + * @return Nothing + */ +void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev); + +/*! + * @brief This API reads the pressure, temperature and humidity and gas data + * from the sensor, compensates the data and store it in the bme680_data + * structure instance passed by the user. + * + * @param[out] data: Structure instance to hold the data. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev); + +/*! + * @brief This API is used to set the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] desired_settings : Variable used to select the settings which + * are to be set in the sensor. + * + * Macros | Functionality + *-------------------------|---------------------------------------------- + * BME680_OST_SEL | To set temperature oversampling. + * BME680_OSP_SEL | To set pressure oversampling. + * BME680_OSH_SEL | To set humidity oversampling. + * BME680_GAS_MEAS_SEL | To set gas measurement setting. + * BME680_FILTER_SEL | To set filter setting. + * BME680_HCNTRL_SEL | To set humidity control setting. + * BME680_RUN_GAS_SEL | To set run gas setting. + * BME680_NBCONV_SEL | To set NB conversion setting. + * BME680_GAS_SENSOR_SEL | To set all gas sensor related settings + * + * @note : Below are the macros to be used by the user for selecting the + * desired settings. User can do OR operation of these macros for configuring + * multiple settings. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); + +/*! + * @brief This API is used to get the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] desired_settings : Variable used to select the settings which + * are to be get from the sensor. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); +#ifdef __cplusplus +} +#endif /* End of CPP guard */ +#endif /* BME680_H_ */ +/** @}*/ diff --git a/extras/bme680/bme680_defs.h b/extras/bme680/bme680_defs.h new file mode 100644 index 0000000..4ef701f --- /dev/null +++ b/extras/bme680/bme680_defs.h @@ -0,0 +1,529 @@ +/** + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bme680_defs.h + * @date 5 Jul 2017 + * @version 3.5.1 + * @brief + * + */ + +/*! @file bme680_defs.h + @brief Sensor driver for BME680 sensor */ +/*! + * @defgroup BME680 SENSOR API + * @brief + * @{*/ +#ifndef BME680_DEFS_H_ +#define BME680_DEFS_H_ + +/********************************************************/ +/* header includes */ +#ifdef __KERNEL__ +#include +#else +#include +#endif + +#ifdef __KERNEL__ +#if (LONG_MAX) > 0x7fffffff +#define __have_long64 1 +#elif (LONG_MAX) == 0x7fffffff +#define __have_long32 1 +#endif + +#if !defined(UINT8_C) +#define INT8_C(x) x +#if (INT_MAX) > 0x7f +#define UINT8_C(x) x +#else +#define UINT8_C(x) x##U +#endif +#endif + +#if !defined(UINT16_C) +#define INT16_C(x) x +#if (INT_MAX) > 0x7fff +#define UINT16_C(x) x +#else +#define UINT16_C(x) x##U +#endif +#endif + +#if !defined(INT32_C) && !defined(UINT32_C) +#if __have_long32 +#define INT32_C(x) x##L +#define UINT32_C(x) x##UL +#else +#define INT32_C(x) x +#define UINT32_C(x) x##U +#endif +#endif + +#if !defined(INT64_C) && !defined(UINT64_C) +#if __have_long64 +#define INT64_C(x) x##L +#define UINT64_C(x) x##UL +#else +#define INT64_C(x) x##LL +#define UINT64_C(x) x##ULL +#endif +#endif +#endif +/**@}*/ + +/**\name C standard macros */ +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *) 0) +#endif +#endif + +/** BME680 General config */ +#define BME680_POLL_PERIOD_MS UINT8_C(10) + +/** BME680 I2C addresses */ +#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76) +#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77) + +/** BME680 unique chip identifier */ +#define BME680_CHIP_ID UINT8_C(0x61) + +/** BME680 coefficients related defines */ +#define BME680_COEFF_SIZE UINT8_C(0x41) +#define BME680_COEFF_ADDR1_LEN UINT8_C(25) +#define BME680_COEFF_ADDR2_LEN UINT8_C(16) + +/** BME680 field_x related defines */ +#define BME680_FIELD_LENGTH UINT8_C(15) +#define BME680_FIELD_ADDR_OFFSET UINT8_C(17) + +/** Soft reset command */ +#define BME680_SOFT_RESET_CMD UINT8_C(0xb6) + +/** Error code definitions */ +#define BME680_OK INT8_C(0) +/* Errors */ +#define BME680_E_NULL_PTR INT8_C(-1) +#define BME680_E_COM_FAIL INT8_C(-2) +#define BME680_E_DEV_NOT_FOUND INT8_C(-3) +#define BME680_E_INVALID_LENGTH INT8_C(-4) + +/* Warnings */ +#define BME680_W_DEFINE_PWR_MODE INT8_C(1) +#define BME680_W_NO_NEW_DATA INT8_C(2) + +/* Info's */ +#define BME680_I_MIN_CORRECTION UINT8_C(1) +#define BME680_I_MAX_CORRECTION UINT8_C(2) + +/** Register map */ +/** Other coefficient's address */ +#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00) +#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02) +#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04) +#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A) +#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64) + +/** Field settings */ +#define BME680_FIELD0_ADDR UINT8_C(0x1d) + +/** Heater settings */ +#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a) +#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64) + +/** Sensor configuration registers */ +#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70) +#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71) +#define BME680_CONF_OS_H_ADDR UINT8_C(0x72) +#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3) +#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74) +#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75) + +/** Coefficient's address */ +#define BME680_COEFF_ADDR1 UINT8_C(0x89) +#define BME680_COEFF_ADDR2 UINT8_C(0xe1) + +/** Chip identifier */ +#define BME680_CHIP_ID_ADDR UINT8_C(0xd0) + +/** Soft reset register */ +#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0) + +/** Heater control settings */ +#define BME680_ENABLE_HEATER UINT8_C(0x00) +#define BME680_DISABLE_HEATER UINT8_C(0x08) + +/** Gas measurement settings */ +#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00) +#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01) + +/** Over-sampling settings */ +#define BME680_OS_NONE UINT8_C(0) +#define BME680_OS_1X UINT8_C(1) +#define BME680_OS_2X UINT8_C(2) +#define BME680_OS_4X UINT8_C(3) +#define BME680_OS_8X UINT8_C(4) +#define BME680_OS_16X UINT8_C(5) + +/** IIR filter settings */ +#define BME680_FILTER_SIZE_0 UINT8_C(0) +#define BME680_FILTER_SIZE_1 UINT8_C(1) +#define BME680_FILTER_SIZE_3 UINT8_C(2) +#define BME680_FILTER_SIZE_7 UINT8_C(3) +#define BME680_FILTER_SIZE_15 UINT8_C(4) +#define BME680_FILTER_SIZE_31 UINT8_C(5) +#define BME680_FILTER_SIZE_63 UINT8_C(6) +#define BME680_FILTER_SIZE_127 UINT8_C(7) + +/** Power mode settings */ +#define BME680_SLEEP_MODE UINT8_C(0) +#define BME680_FORCED_MODE UINT8_C(1) + +/** Delay related macro declaration */ +#define BME680_RESET_PERIOD UINT32_C(10) + +/** SPI memory page settings */ +#define BME680_MEM_PAGE0 UINT8_C(0x10) +#define BME680_MEM_PAGE1 UINT8_C(0x00) + +/** Ambient humidity shift value for compensation */ +#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4) + +/** Run gas enable and disable settings */ +#define BME680_RUN_GAS_DISABLE UINT8_C(0) +#define BME680_RUN_GAS_ENABLE UINT8_C(1) + +/** Buffer length macro declaration */ +#define BME680_TMP_BUFFER_LENGTH UINT8_C(40) +#define BME680_REG_BUFFER_LENGTH UINT8_C(6) +#define BME680_FIELD_DATA_LENGTH UINT8_C(3) +#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20) +#define BME680_GAS_HEATER_PROF_LEN_MAX UINT8_C(10) + +/** Settings selector */ +#define BME680_OST_SEL UINT16_C(1) +#define BME680_OSP_SEL UINT16_C(2) +#define BME680_OSH_SEL UINT16_C(4) +#define BME680_GAS_MEAS_SEL UINT16_C(8) +#define BME680_FILTER_SEL UINT16_C(16) +#define BME680_HCNTRL_SEL UINT16_C(32) +#define BME680_RUN_GAS_SEL UINT16_C(64) +#define BME680_NBCONV_SEL UINT16_C(128) +#define BME680_GAS_SENSOR_SEL UINT16_C(BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL) + +/** Number of conversion settings*/ +#define BME680_NBCONV_MIN UINT8_C(0) +#define BME680_NBCONV_MAX UINT8_C(10) + +/** Mask definitions */ +#define BME680_GAS_MEAS_MSK UINT8_C(0x30) +#define BME680_NBCONV_MSK UINT8_C(0X0F) +#define BME680_FILTER_MSK UINT8_C(0X1C) +#define BME680_OST_MSK UINT8_C(0XE0) +#define BME680_OSP_MSK UINT8_C(0X1C) +#define BME680_OSH_MSK UINT8_C(0X07) +#define BME680_HCTRL_MSK UINT8_C(0x08) +#define BME680_RUN_GAS_MSK UINT8_C(0x10) +#define BME680_MODE_MSK UINT8_C(0x03) +#define BME680_RHRANGE_MSK UINT8_C(0x30) +#define BME680_RSERROR_MSK UINT8_C(0xf0) +#define BME680_NEW_DATA_MSK UINT8_C(0x80) +#define BME680_GAS_INDEX_MSK UINT8_C(0x0f) +#define BME680_GAS_RANGE_MSK UINT8_C(0x0f) +#define BME680_GASM_VALID_MSK UINT8_C(0x20) +#define BME680_HEAT_STAB_MSK UINT8_C(0x10) +#define BME680_MEM_PAGE_MSK UINT8_C(0x10) +#define BME680_SPI_RD_MSK UINT8_C(0x80) +#define BME680_SPI_WR_MSK UINT8_C(0x7f) +#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F) + +/** Bit position definitions for sensor settings */ +#define BME680_GAS_MEAS_POS UINT8_C(4) +#define BME680_FILTER_POS UINT8_C(2) +#define BME680_OST_POS UINT8_C(5) +#define BME680_OSP_POS UINT8_C(2) +#define BME680_RUN_GAS_POS UINT8_C(4) + +/** Array Index to Field data mapping for Calibration Data*/ +#define BME680_T2_LSB_REG (1) +#define BME680_T2_MSB_REG (2) +#define BME680_T3_REG (3) +#define BME680_P1_LSB_REG (5) +#define BME680_P1_MSB_REG (6) +#define BME680_P2_LSB_REG (7) +#define BME680_P2_MSB_REG (8) +#define BME680_P3_REG (9) +#define BME680_P4_LSB_REG (11) +#define BME680_P4_MSB_REG (12) +#define BME680_P5_LSB_REG (13) +#define BME680_P5_MSB_REG (14) +#define BME680_P7_REG (15) +#define BME680_P6_REG (16) +#define BME680_P8_LSB_REG (19) +#define BME680_P8_MSB_REG (20) +#define BME680_P9_LSB_REG (21) +#define BME680_P9_MSB_REG (22) +#define BME680_P10_REG (23) +#define BME680_H2_MSB_REG (25) +#define BME680_H2_LSB_REG (26) +#define BME680_H1_LSB_REG (26) +#define BME680_H1_MSB_REG (27) +#define BME680_H3_REG (28) +#define BME680_H4_REG (29) +#define BME680_H5_REG (30) +#define BME680_H6_REG (31) +#define BME680_H7_REG (32) +#define BME680_T1_LSB_REG (33) +#define BME680_T1_MSB_REG (34) +#define BME680_GH2_LSB_REG (35) +#define BME680_GH2_MSB_REG (36) +#define BME680_GH1_REG (37) +#define BME680_GH3_REG (38) + +/** BME680 register buffer index settings*/ +#define BME680_REG_FILTER_INDEX UINT8_C(5) +#define BME680_REG_TEMP_INDEX UINT8_C(4) +#define BME680_REG_PRES_INDEX UINT8_C(4) +#define BME680_REG_HUM_INDEX UINT8_C(2) +#define BME680_REG_NBCONV_INDEX UINT8_C(1) +#define BME680_REG_RUN_GAS_INDEX UINT8_C(1) +#define BME680_REG_HCTRL_INDEX UINT8_C(0) + +/** Macro to combine two 8 bit data's to form a 16 bit data */ +#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb) + +/** Macro to SET and GET BITS of a register */ +#define BME680_SET_BITS(reg_data, bitname, data) \ + ((reg_data & ~(bitname##_MSK)) | \ + ((data << bitname##_POS) & bitname##_MSK)) +#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \ + (bitname##_POS)) + +/** Macro variant to handle the bitname position if it is zero */ +#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \ + ((reg_data & ~(bitname##_MSK)) | \ + (data & bitname##_MSK)) +#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK)) + +/** Type definitions */ +/* + * Generic communication function pointer + * @param[in] dev_id: Place holder to store the id of the device structure + * Can be used to store the index of the Chip select or + * I2C address of the device. + * @param[in] reg_addr: Used to select the register the where data needs to + * be read from or written to. + * @param[in/out] reg_data: Data array to read/write + * @param[in] len: Length of the data array + */ +typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len); + +/* + * Delay function pointer + * @param[in] period: Time period in milliseconds + */ +typedef void (*bme680_delay_fptr_t)(uint32_t period); + +/*! + * @brief Interface selection Enumerations + */ +enum bme680_intf { + /*! SPI interface */ + BME680_SPI_INTF, + /*! I2C interface */ + BME680_I2C_INTF +}; + +/* structure definitions */ +/*! + * @brief Sensor field data structure + */ +struct bme680_field_data { + /*! Contains new_data, gasm_valid & heat_stab */ + uint8_t status; + /*! The index of the heater profile used */ + uint8_t gas_index; + /*! Measurement index to track order */ + uint8_t meas_index; + /*! Temperature in degree celsius x100 */ + int16_t temperature; + /*! Pressure in Pascal */ + uint32_t pressure; + /*! Humidity in % relative humidity x1000 */ + uint32_t humidity; + /*! Gas resistance in Ohms */ + uint32_t gas_resistance; +}; + +/*! + * @brief Structure to hold the Calibration data + */ +struct bme680_calib_data { + /*! Variable to store calibrated humidity data */ + uint16_t par_h1; + /*! Variable to store calibrated humidity data */ + uint16_t par_h2; + /*! Variable to store calibrated humidity data */ + int8_t par_h3; + /*! Variable to store calibrated humidity data */ + int8_t par_h4; + /*! Variable to store calibrated humidity data */ + int8_t par_h5; + /*! Variable to store calibrated humidity data */ + uint8_t par_h6; + /*! Variable to store calibrated humidity data */ + int8_t par_h7; + /*! Variable to store calibrated gas data */ + int8_t par_gh1; + /*! Variable to store calibrated gas data */ + int16_t par_gh2; + /*! Variable to store calibrated gas data */ + int8_t par_gh3; + /*! Variable to store calibrated temperature data */ + uint16_t par_t1; + /*! Variable to store calibrated temperature data */ + int16_t par_t2; + /*! Variable to store calibrated temperature data */ + int8_t par_t3; + /*! Variable to store calibrated pressure data */ + uint16_t par_p1; + /*! Variable to store calibrated pressure data */ + int16_t par_p2; + /*! Variable to store calibrated pressure data */ + int8_t par_p3; + /*! Variable to store calibrated pressure data */ + int16_t par_p4; + /*! Variable to store calibrated pressure data */ + int16_t par_p5; + /*! Variable to store calibrated pressure data */ + int8_t par_p6; + /*! Variable to store calibrated pressure data */ + int8_t par_p7; + /*! Variable to store calibrated pressure data */ + int16_t par_p8; + /*! Variable to store calibrated pressure data */ + int16_t par_p9; + /*! Variable to store calibrated pressure data */ + uint8_t par_p10; + /*! Variable to store t_fine size */ + int32_t t_fine; + /*! Variable to store heater resistance range */ + uint8_t res_heat_range; + /*! Variable to store heater resistance value */ + int8_t res_heat_val; + /*! Variable to store error range */ + int8_t range_sw_err; +}; + +/*! + * @brief BME680 sensor settings structure which comprises of ODR, + * over-sampling and filter settings. + */ +struct bme680_tph_sett { + /*! Humidity oversampling */ + uint8_t os_hum; + /*! Temperature oversampling */ + uint8_t os_temp; + /*! Pressure oversampling */ + uint8_t os_pres; + /*! Filter coefficient */ + uint8_t filter; +}; + +/*! + * @brief BME680 gas sensor which comprises of gas settings + * and status parameters + */ +struct bme680_gas_sett { + /*! Variable to store nb conversion */ + uint8_t nb_conv; + /*! Variable to store heater control */ + uint8_t heatr_ctrl; + /*! Run gas enable value */ + uint8_t run_gas; + /*! Pointer to store heater temperature */ + uint16_t heatr_temp; + /*! Pointer to store duration profile */ + uint16_t heatr_dur; +}; + +/*! + * @brief BME680 device structure + */ +struct bme680_dev { + /*! Chip Id */ + uint8_t chip_id; + /*! Device Id */ + uint8_t dev_id; + /*! SPI/I2C interface */ + enum bme680_intf intf; + /*! Memory page used */ + uint8_t mem_page; + /*! Ambient temperature in Degree C*/ + int8_t amb_temp; + /*! Sensor calibration data */ + struct bme680_calib_data calib; + /*! Sensor settings */ + struct bme680_tph_sett tph_sett; + /*! Gas Sensor settings */ + struct bme680_gas_sett gas_sett; + /*! Sensor power modes */ + uint8_t power_mode; + /*! New sensor fields */ + uint8_t new_fields; + /*! Store the info messages */ + uint8_t info_msg; + /*! Burst read structure */ + bme680_com_fptr_t read; + /*! Burst write structure */ + bme680_com_fptr_t write; + /*! Delay in ms */ + bme680_delay_fptr_t delay_ms; + /*! Communication function result */ + int8_t com_rslt; +}; + +#endif /* BME680_DEFS_H_ */ +/** @}*/ +/** @}*/ diff --git a/extras/bme680/bme680_drv.c b/extras/bme680/bme680_drv.c new file mode 100644 index 0000000..fc020d2 --- /dev/null +++ b/extras/bme680/bme680_drv.c @@ -0,0 +1,733 @@ +/* + * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and + * gas sensor connected to I2C or SPI + * + * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * + * PLEASE NOTE: + * Due to the complexity of the sensor output value computation based on many + * calibration parameters, the original Bosch Sensortec BME680 driver that is + * released as open source [https://github.com/BoschSensortec/BME680_driver] + * and integrated for internal use. Please note the license of this part, which + * is an extended BSD license and can be found in each of that source files. + * + * --------------------------------------------------------------------------- + * + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "bme680_drv.h" +#include "FreeRTOS.h" +#include "task.h" + +#include "espressif/esp_common.h" +#include "espressif/sdk_private.h" + +#ifdef BME680_DEBUG +#define debug(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) +#else +#define debug(s, f, ...) +#endif + +#define error(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) + +#define BME680_BG_TASK_PRIORITY 9 + +/** + * Forward declation of internal functions used by embedded Bosch Sensortec BME680 driver. + */ +static void bme680_user_delay_ms(uint32_t period); +static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); + +/** + * Sensor data structures + */ +bme680_sensor_t bme680_sensors[BME680_MAX_SENSORS]; + +/** */ + +static bool bme680_valid_sensor (uint32_t sensor, const char* function) +{ + if (sensor < 0 || sensor > BME680_MAX_SENSORS) + { + debug("Wrong sensor id %d.", function, sensor); + return false; + } + + if (!bme680_sensors[sensor].active) + { + debug("Sensor with id %d is not active.", function, sensor); + return false; + } + + return true; +} + + +static bool bme680_is_available (uint32_t id) +{ + struct bme680_dev *dev = &bme680_sensors[id].dev; + + if (!bme680_valid_sensor(id, __FUNCTION__) || + bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev) != BME680_OK) + { + return false; + } + + return true; +} + + +static void bme680_compute_values (uint8_t id, struct bme680_field_data* data) +{ + if (!bme680_valid_sensor(id, __FUNCTION__) || !data) + return; + + bme680_value_set_t act; + bme680_value_set_t avg = bme680_sensors[id].average; + float w = bme680_sensors[id].average_weight; + + act.temperature = bme680_sensors[id].dev.tph_sett.os_temp ? data->temperature / 100.0f : 0; + act.pressure = bme680_sensors[id].dev.tph_sett.os_pres ? data->pressure / 100.0f : 0; + act.humidity = bme680_sensors[id].dev.tph_sett.os_hum ? data->humidity / 1000.0f : 0; + act.gas = bme680_sensors[id].dev.gas_sett.heatr_dur ? data->gas_resistance : 0; + + if (bme680_sensors[id].average_first_measurement || + !bme680_sensors[id].average_computation) + { + bme680_sensors[id].average_first_measurement = false; + + avg = act; + } + else + { + avg.temperature = w * act.temperature + (1-w) * avg.temperature; + avg.humidity = w * act.humidity + (1-w) * avg.humidity; + avg.pressure = w * act.pressure + (1-w) * avg.pressure; + avg.gas = w * act.gas + (1-w) * avg.gas; + } + + bme680_sensors[id].actual = act; + bme680_sensors[id].average = avg; +} + + +static void bme680_background_task (void *pvParameters) +{ + uint32_t id = (uint32_t)pvParameters; + uint32_t next_time = sdk_system_get_time (); + + while (1) + { + debug("%.3f Sensor %d", __FUNCTION__, (double)sdk_system_get_time()*1e-3, id); + + struct bme680_dev* dev = &bme680_sensors[id].dev; + struct bme680_field_data data; + + uint8_t set_required_settings; + int8_t rslt = BME680_OK; + + /* Select the power mode */ + /* Must be set before writing the sensor configuration */ + dev->power_mode = BME680_FORCED_MODE; + + debug ("Using oversampling rates: %d %d %d", __FUNCTION__, + bme680_sensors[id].dev.tph_sett.os_temp, + bme680_sensors[id].dev.tph_sett.os_pres, + bme680_sensors[id].dev.tph_sett.os_hum); + + /* Set the required sensor settings needed */ + set_required_settings = BME680_OST_SEL | + BME680_OSP_SEL | + BME680_OSH_SEL | + BME680_FILTER_SEL | + BME680_GAS_SENSOR_SEL; + + /* Set the desired sensor configuration */ + rslt = bme680_set_sensor_settings(set_required_settings, dev); + + /* Set the power mode to forced mode to trigger one TPHG measurement cycle */ + rslt = bme680_set_sensor_mode(dev); + + /* Get the total measurement duration so as to sleep or wait till the + * measurement is complete */ + uint16_t meas_period; + bme680_get_profile_dur(&meas_period, dev); + vTaskDelay(meas_period/portTICK_PERIOD_MS); /* Delay till the measurement is ready */ + + if ((rslt = bme680_get_sensor_data(&data, dev)) == BME680_OK) + { + bme680_compute_values(id, &data); + + debug("%d ms: %.2f C, %.2f Percent, %.2f hPa, %.2f Ohm", __FUNCTION__, + sdk_system_get_time (), + bme680_sensors[id].actual.temperature, + bme680_sensors[id].actual.humidity, + bme680_sensors[id].actual.pressure, + bme680_sensors[id].actual.gas); + + if (bme680_sensors[id].cb_function) + bme680_sensors[id].cb_function(id, + bme680_sensors[id].actual, + bme680_sensors[id].average); + + } + else + error("Could not get data from sensor with id %d", __FUNCTION__,id); + + /* Compute next measurement time as well as remaining cycle time*/ + uint32_t system_time = sdk_system_get_time (); + uint32_t remaining_time; + + next_time = next_time + bme680_sensors[id].period*1000; // in us + + if (next_time < system_time) + // in case of timer overflow + remaining_time = UINT32_MAX - system_time + next_time; + else + // normal case + remaining_time = next_time - system_time; + + /* Delay the background task by the cycle time */ + vTaskDelay(remaining_time/1000/portTICK_PERIOD_MS); + } +} + + +bool bme680_init_driver() +{ + for (int id=0; id < BME680_MAX_SENSORS; id++) + bme680_sensors[id].active = false; + + return true; +} + + +uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) +{ + static uint32_t id; + static char bg_task_name[20]; + + // search for first free sensor data structure + for (id=0; id < BME680_MAX_SENSORS; id++) + { + debug("id=%d active=%d", __FUNCTION__, id, bme680_sensors[id].active); + if (!bme680_sensors[id].active) + break; + } + debug("id=%d", __FUNCTION__, id); + + if (id == BME680_MAX_SENSORS) + { + debug("No more sensor data structures available.", __FUNCTION__); + return -1; + } + // init sensor data structure + bme680_sensors[id].bus = bus; + bme680_sensors[id].addr = addr; + bme680_sensors[id].period = 1000; + bme680_sensors[id].average_computation = true; + bme680_sensors[id].average_first_measurement = true; + bme680_sensors[id].average_weight = 0.2; + bme680_sensors[id].cb_function = NULL; + bme680_sensors[id].bg_task = NULL; + + bme680_sensors[id].dev.dev_id = id; + + if (bme680_sensors[id].addr) + { + // I2C interface used + bme680_sensors[id].addr = addr; + bme680_sensors[id].dev.intf = BME680_I2C_INTF; + bme680_sensors[id].dev.read = bme680_user_i2c_read; + bme680_sensors[id].dev.write = bme680_user_i2c_write; + bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; + } + else + { + // SPI interface used + bme680_sensors[id].spi_cs_pin = cs; + bme680_sensors[id].dev.intf = BME680_SPI_INTF; + bme680_sensors[id].dev.read = bme680_user_spi_read; + bme680_sensors[id].dev.write = bme680_user_spi_write; + bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; + + gpio_enable(bme680_sensors[id].spi_cs_pin, GPIO_OUTPUT); + gpio_write (bme680_sensors[id].spi_cs_pin, true); + } + + // initialize embedded Bosch Sensortec driver + if (bme680_init(&bme680_sensors[id].dev)) + { + error("Could not initialize the sensor device with id %d", __FUNCTION__, id); + return -1; + } + + bme680_sensors[id].active = true; + + /* Set the default temperature, pressure and humidity settings */ + bme680_set_oversampling_rates (id, os_1x, os_1x, os_1x); + bme680_set_filter_size (id, iir_size_3); + + /* Set heater default profile 320 degree Celcius for 150 ms */ + bme680_set_heater_profile (id, 320, 150); + + // check whether sensor is available + if (!bme680_is_available(id)) + { + debug("Sensor with id %d is not available", __FUNCTION__, id); + bme680_sensors[id].active = false; + return -1; + } + + snprintf (bg_task_name, 20, "bme680_bg_task_%d", id); + + if (xTaskCreate (bme680_background_task, bg_task_name, 256, (void*)id, + BME680_BG_TASK_PRIORITY, + &bme680_sensors[id].bg_task) != pdPASS) + { + vTaskDelete(bme680_sensors[id].bg_task); + error("Could not create the background task %s for sensor with id %d\n", + __FUNCTION__, bg_task_name, id); + bme680_sensors[id].active = false; + return false; + } + + return id; +} + + +bool bme680_delete_sensor(uint32_t sensor) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].active = false; + + if (bme680_sensors[sensor].bg_task) + vTaskDelete(bme680_sensors[sensor].bg_task); + + return true; +} + + +bool bme680_set_measurement_period (uint32_t sensor, uint32_t period) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (period < 20) + error("Period of %d ms is less than the minimum " + "period of 20 ms for sensor with id %d.", + __FUNCTION__, period, sensor); + + bme680_sensors[sensor].period = period; + + return true; +} + + +bool bme680_set_callback_function (uint32_t sensor, bme680_cb_function_t bme680_user_function) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].cb_function = bme680_user_function; + + debug("Set callback function done.", __FUNCTION__); + + return false; +} + + +bool bme680_get_values(uint32_t sensor, bme680_value_set_t *actual, bme680_value_set_t *average) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (actual) *actual = bme680_sensors[sensor].actual; + if (average) *average = bme680_sensors[sensor].average; + + return true; +} + + +bool bme680_enable_average_computation (uint32_t sensor, bool enabled) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].average_computation = enabled; + bme680_sensors[sensor].average_first_measurement = enabled; + + return true; +} + + +bool bme680_set_average_weight (uint32_t sensor, float weight) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].average_first_measurement = true; + bme680_sensors[sensor].average_weight = weight; + + return true; +} + + +bool bme680_set_oversampling_rates (uint32_t sensor, + bme680_oversampling_t ost, + bme680_oversampling_t osp, + bme680_oversampling_t osh) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.tph_sett.os_temp = ost; + bme680_sensors[sensor].dev.tph_sett.os_pres = osp; + bme680_sensors[sensor].dev.tph_sett.os_hum = osh; + + debug ("Setting oversampling rates done: osrt=%d osp=%d osrh=%d", __FUNCTION__, + bme680_sensors[sensor].dev.tph_sett.os_temp, + bme680_sensors[sensor].dev.tph_sett.os_pres, + bme680_sensors[sensor].dev.tph_sett.os_hum); + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + +bool bme680_set_heater_profile (uint32_t sensor, uint16_t temperature, uint16_t duration) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.gas_sett.heatr_temp = temperature; /* degree Celsius */ + bme680_sensors[sensor].dev.gas_sett.heatr_dur = duration; /* milliseconds */ + + debug ("Setting heater profile done: temperature=%d duration=%d", __FUNCTION__, + bme680_sensors[sensor].dev.gas_sett.heatr_temp, + bme680_sensors[sensor].dev.gas_sett.heatr_dur); + + /* Set the remaining default gas sensor settings and link the heating profile */ + if (temperature == 0 || duration == 0) + bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_DISABLE_GAS_MEAS; + else + bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + + +bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.tph_sett.filter = size; + + debug ("Setting filter size done: size=%d", __FUNCTION__, + bme680_sensors[sensor].dev.tph_sett.filter); + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + + +/** + * Internal functions used by embedded Bosch Sensortec BME680 driver. + */ + +static void bme680_user_delay_ms(uint32_t period) +{ + /* + * Return control or wait, + * for a period amount of milliseconds + */ + + vTaskDelay(period / portTICK_PERIOD_MS); +} + +#define BME680_SPI_BUF_SIZE 64 // SPI register data buffer size of ESP866 + +static const spi_settings_t bus_settings = { + .mode = SPI_MODE0, + .freq_divider = SPI_FREQ_DIV_10M, + .msb = true, + .minimal_pins = true, + .endianness = SPI_LITTLE_ENDIAN +}; + + +static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to select which Chip Select pin has + * to be set low to activate the relevant device on the SPI bus + */ + + /* + * Data on the bus should be like + * |----------------+---------------------+-------------| + * | MOSI | MISO | Chip Select | + * |----------------+---------------------|-------------| + * | (don't care) | (don't care) | HIGH | + * | (reg_addr) | (don't care) | LOW | + * | (don't care) | (reg_data[0]) | LOW | + * | (....) | (....) | LOW | + * | (don't care) | (reg_data[len - 1]) | LOW | + * | (don't care) | (don't care) | HIGH | + * |----------------+---------------------|-------------| + */ + + // debug("dev_id=%d, reg_addr=%0x, len=%d\n", __FUNCTION__, dev_id, reg_addr, len); + + if (len >= BME680_SPI_BUF_SIZE) + { + error("Error on read from SPI slave on bus 1. Tried to transfer more" + "than %d byte in one read operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); + return -1; + } + + spi_settings_t old_settings; + + static uint8_t mosi[BME680_SPI_BUF_SIZE]; + static uint8_t miso[BME680_SPI_BUF_SIZE]; + + memset (mosi, 0xff, BME680_SPI_BUF_SIZE); + memset (miso, 0xff, BME680_SPI_BUF_SIZE); + + mosi[0] = reg_addr; + + uint8_t bus = bme680_sensors[dev_id].bus; + uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; + + spi_get_settings(bus, &old_settings); + spi_set_settings(bus, &bus_settings); + gpio_write(spi_cs_pin, false); + + size_t success = spi_transfer (bus, (const void*)mosi, (void*)miso, len+1, SPI_8BIT); + + gpio_write(spi_cs_pin, true); + spi_set_settings(bus, &old_settings); + + if (!success) + { + error("Could not read data from SPI bus %d", __FUNCTION__, bus); + return -1; + } + + for (int i=0; i < len; i++) + reg_data[i] = miso[i+1]; + +# ifdef BME680_DEBUG + printf("BME680 %s: Read the following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return 0; +} + + +static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to select which Chip Select pin has + * to be set low to activate the relevant device on the SPI bus + */ + + /* + * Data on the bus should be like + * |---------------------+--------------+-------------| + * | MOSI | MISO | Chip Select | + * |---------------------+--------------|-------------| + * | (don't care) | (don't care) | HIGH | + * | (reg_addr) | (don't care) | LOW | + * | (reg_data[0]) | (don't care) | LOW | + * | (....) | (....) | LOW | + * | (reg_data[len - 1]) | (don't care) | LOW | + * | (don't care) | (don't care) | HIGH | + * |---------------------+--------------|-------------| + */ + + static uint8_t mosi[BME680_SPI_BUF_SIZE]; + + if (len >= BME680_SPI_BUF_SIZE) + { + error("Error on write to SPI slave on bus 1. Tried to transfer more" + "than %d byte in one write operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); + return -1; + } + + mosi[0] = reg_addr; + + for (int i = 0; i < len; i++) + mosi[i+1] = reg_data[i]; + +# ifdef BME680_DEBUG + printf("BME680 %s: Write the following bytes: ", __FUNCTION__); + for (int i = 0; i < len+1; i++) + printf("%0x ", mosi[i]); + printf("\n"); +# endif + + spi_settings_t old_settings; + + uint8_t bus = bme680_sensors[dev_id].bus; + uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; + + spi_get_settings(bus, &old_settings); + spi_set_settings(bus, &bus_settings); + gpio_write(spi_cs_pin, false); + + size_t success = spi_transfer (bus, (const void*)mosi, NULL, len+1, SPI_8BIT); + + gpio_write(spi_cs_pin, true); + spi_set_settings(bus, &old_settings); + + if (!success) + { + error("Could not write data to SPI bus %d", __FUNCTION__, bus); + return -1; + } + + return 0; +} + +static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to store the I2C address of the device + */ + + /* + * Data on the bus should be like + * |------------+---------------------| + * | I2C action | Data | + * |------------+---------------------| + * | Start | - | + * | Write | (reg_addr) | + * | Stop | - | + * | Start | - | + * | Read | (reg_data[0]) | + * | Read | (....) | + * | Read | (reg_data[len - 1]) | + * | Stop | - | + * |------------+---------------------| + */ + + debug ("Read %d byte from i2c slave on bus %d with addr %0x.", + __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + + int result = i2c_slave_read(bme680_sensors[dev_id].bus, + bme680_sensors[dev_id].addr, + ®_addr, reg_data, len); + + if (result) + { + error("Error %d on read %d byte from I2C slave on bus %d with addr %0x.", + __FUNCTION__, result, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + return result; + } + +# ifdef BME680_DEBUG + printf("BME680 %s: Read following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return result; +} + +static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to store the I2C address of the device + */ + + /* + * Data on the bus should be like + * |------------+---------------------| + * | I2C action | Data | + * |------------+---------------------| + * | Start | - | + * | Write | (reg_addr) | + * | Write | (reg_data[0]) | + * | Write | (....) | + * | Write | (reg_data[len - 1]) | + * | Stop | - | + * |------------+---------------------| + */ + + debug ("Write %d byte to i2c slave on bus %d with addr %0x.", + __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + + int result = i2c_slave_write(bme680_sensors[dev_id].bus, + bme680_sensors[dev_id].addr, + ®_addr, reg_data, len); + + if (result) + { + error("Error %d on write to i2c slave on bus %d with addr %0x.", + __FUNCTION__, result, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + return result; + } + +# ifdef BME680_DEBUG + printf("BME680 %s: Wrote the following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return result; +} + + diff --git a/extras/bme680/bme680_drv.h b/extras/bme680/bme680_drv.h new file mode 100644 index 0000000..95881a0 --- /dev/null +++ b/extras/bme680/bme680_drv.h @@ -0,0 +1,398 @@ +/* + * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and + * gas sensor connected to I2C or SPI + * + * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * + * PLEASE NOTE: + * Due to the complexity of the sensor output value compputation based on many + * calibration parameters, the original Bosch Sensortec BME680 driver that is + * released as open source [https://github.com/BoschSensortec/BME680_driver] + * and integrated for internal use. Please note the license of this part, which + * is an extended BSD license and can be found in each of that source files. + * + * --------------------------------------------------------------------------- + * + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BME680_DRV_H_ +#define BME680_DRV_H_ + +#include "stdint.h" +#include "stdbool.h" + +#include "FreeRTOS.h" +#include + +#include "i2c/i2c.h" +#include "esp/spi.h" + +#include "bme680/bme680.h" + +// Uncomment to enable debug output +// #define BME680_DEBUG + +// Change this if you need more than 3 BME680 sensors +#define BME680_MAX_SENSORS 3 + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @brief Type for actual and average sensor values (called TPHG values) + */ +typedef struct { + float temperature; // temperature in degree Celcius + float pressure; // barometric pressure in hPascal + float humidity; // humidity in percent + float gas; // gas resistance in Ohm +} bme680_value_set_t; + +/** + * @brief callback unction type to pass result of measurement to user tasks + */ +typedef void (*bme680_cb_function_t)(uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average); + +/** + * @brief BME680 sensor device data structure type + */ +typedef struct { + + bool active; + + uint8_t bus; // I2C = 0, SPI = 1 + uint8_t addr; // I2C = slave address, SPI = 0 + uint8_t spi_cs_pin; // GPIO used as SPI CS + + uint32_t period; + + bme680_value_set_t actual; + bme680_value_set_t average; + + bool average_computation; + bool average_first_measurement; + float average_weight; + + bme680_cb_function_t cb_function; + TaskHandle_t bg_task; + + struct bme680_dev dev; // internal Bosch BME680 driver data structure + +} bme680_sensor_t; + + +/** + * @brief BME680 oversampling rate values + */ +typedef enum { + none = 0, // measurement is skipped, output values are invalid + os_1x = 1, // default oversampling rates + os_2x = 2, + os_4x = 3, + os_8x = 4, + os_16x = 5 +} bme680_oversampling_t; + + +/** + * @brief BME680 IIR filter sizes + */ +typedef enum { + iir_size_0 = 0, // filter is not used + iir_size_1 = 1, + iir_size_3 = 2, + iir_size_7 = 3, + iir_size_15 = 4, + iir_size_31 = 5, + iir_size_63 = 6, + iir_size_127 = 7 +} bme680_filter_size_t; + +/** + * @brief Initialize the BME680 driver + * + * This function initializes all internal data structures. It must be called + * exactly once at the beginning. + * + * @return true on success, false on error + */ +bool bme680_init_driver (); + + +/** + * @brief Create and initialize a BME680 sensor + * + * This function initializes the BME680 sensor and checks its availability. + * + * Furthermore, the starts a background task for measurements with + * the sensor. The background task carries out the measurements periodically + * using BME680's single shot data acquisition mode with a default period + * of 1000 ms. This period be changed using function *set_measurment_period*. + * + * During each measurement the background task + * + * 1. determines *actual sensor values* + * 2. computes optionally *average sensor values* + * 3. calls back optionally a registered function of user task. + * + * The average value computation uses an exponential moving average + * and can be activated (default) or deactivated with function + * *bme680_enable_average_computation*. If the average value computation is + * deactivated, *average sensor values* correspond to *actual sensor values*. + * The weight (smoothing factor) used in the average value computatoin is 0.2 + * by default and can be changed with function *bme680_set_average_weight*. + * + * If a callback method has been registered with function + * *bme680_set_callback_function*, it is called after each measurement + * to pass measurement results to user tasks. Otherwise, user tasks have to + * use function *bme680_get_values* explicitly to get the results. + * + * The sensor can either be connected to an I2C or SPI bus. If *addr* is + * greater than 0, it defines a valid I2C slave address and the sensor is + * connected to an I2C bus using this address. If *addr* is 0, the sensor + * is connected to a SPI bus. In both cases, the *bus* parameter specifies + * the ID of the corresponding bus. In case of SPI, parameter *cs* defines + * the GPIO used as CS signal. + * + * @param bus I2C or SPI bus at which BME680 sensor is connected + * @param addr I2C addr of the BME680 sensor or 0 for SPI + * @param cs SPI CS GPIO, ignored for I2C + * + * @return ID of the sensor (0 or greater on success or -1 on error) + */ +uint32_t bme680_create_sensor (uint8_t bus, uint8_t addr, uint8_t cs_pin); + + +/** + * @brief Set the period of the background measurement task for the given + * sensor + * + * Please note: The minimum period is 20 ms since each measurement takes + * about 20 ms. + * + * @param sensor ID of the sensor + * @param period Measurement period in ms (default 1000 ms) + * + * @return true on success, false on error + */ +bool bme680_set_measurement_period (uint32_t sensor, uint32_t period); + + +/** + * @brief Set the callback function for the background measurement task for + * the given sensor + * + * If a callback method is registered, it is called after each measurement to + * pass measurement results to user tasks. Thus, callback function is executed + * at the same rate as the measurements. + * + * @param sensor ID of the sensor + * @param function user function called after each measurement + * (NULL to delete it for the sensor) + * + * @return true on success, false on error + */ +bool bme680_set_callback_function (uint32_t sensor, + bme680_cb_function_t user_function); + + +/** + * @brief Deletes the BME680 sensor given by its ID + * + * @param sensor ID of the sensor + * + * @return true on success, false on error + */ +bool bme680_delete_sensor (uint32_t sensor); + + +/** + * @brief Get the actual and average sensor values + * + * This function returns the actual and average sensor values of the last + * measurement. The parameters *actual* and *average* are pointers to data + * structures of the type *bme680_value_set_t*, which are filled with the + * of last measurement. Use NULL for the appropriate parameter if you are + * not interested in specific results. + * + * If average value computation is deactivated, average sensor values + * correspond to the actual sensor values. + * + * Please note: Calling this function is only necessary if no callback + * function has been registered for the sensor. + * + * @param sensor ID of the sensor + * @param actual Pointer to a data structure for actual sensor values + * @param average Pointer to a data structure for average sensor values + * + * @return true on success, false on error + */ +bool bme680_get_values (uint32_t sensor, + bme680_value_set_t *actual, + bme680_value_set_t *average); + + +/** + * @brief Enable (default) or disable the average value computation + * + * In case, the average value computation is disabled, average sensor values + * correspond to the actual sensor values. + * + * Please note: All average sensor values are reset if parameters for + * measurement are changed using either function *bme680_set_average_weight*, + * *bme680_set_oversampling_rates*, *bme680_set_heater_profile* or + * *bme680_set_filter_size*. + * + * @param sensor id of the sensor + * @param enabled true to enable or false to disable average computation + * + * @return true on success, false on error +*/ +bool bme680_enable_average_computation (uint32_t sensor, bool enabled); + + +/** + * @brief Set the weight (smoothing factor) for average value computation + * + * At each measurement carried out by the background task, actual sensor + * values are determined. If average value computation is enabled (default), + * exponential moving average values are computed according to following + * equation + * + * Average[k] = W * Value + (1-W) * Average [k-1] + * + * where coefficient W represents the degree of weighting decrease, a constant + * smoothing factor between 0 and 1. A higher W discounts older observations + * faster. W is 0.2 by default. + * + * @param sensor id of the sensor + * @param weight coefficient W (default is 0.2) + * + * @return true on success, false on error + */ +bool bme680_set_average_weight (uint32_t sensor, float weight); + + +/** + * @brief Set the oversampling rates for measurements + * + * The BME680 sensor allows to define different oversampling rates for the + * measurements of temperature, pressure and humidity, separatly. Possible + * oversampling rates defined by enumaration type are none, 1x (default), + * 2x, 4x, 8x, and 16x. In case of *none*, the corressponing measurement is + * skipped and output values are invalid. + * + * Please note: To disable the measurement of either temperature, pressure + * or humidity, set the corresponding oversamling rate to *none*. + * + * @param sensor id of the sensor + * @param ost oversampling rate for temperature measurements + * @param osp oversampling rate for pressure measurements + * @param osh oversampling rate for humidity measurements + * + * @return true on success, false on error + */ +bool bme680_set_oversampling_rates (uint32_t sensor, + bme680_oversampling_t ost, + bme680_oversampling_t osp, + bme680_oversampling_t osh); + +/** + * @brief Set the heater profile for gas measurements + * + * For gas measurement the sensor integrates a heater. The paremeters for + * this heater are defined by a heater profile. Such a heater profile + * consists of a temperature setting point (the target temperature) and the + * heating duration. + * + * Even though the sensor supports up to 10 different profiles, only one + * profile is used by this driver for simplicity. The temperature setting + * point and the heating duration of this profile can be defined by this + * function. Default values are 320 degree Celcius as target temperature and + * 150 ms heating duration. If heating duration is 0 ms, the gas measurement + * is skipped and output values are invalid. + * + * Please note: To disable the measurement of gas, set the heating duration + * to 0 ms. + * + * Please note: According to the datasheet, target temperatures of between + * 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary + * for the heater to reach the desired target temperature. + * + * @param sensor id of the sensor + * @param temperature heating temperature in degree Celcius + * @param duration heating duration in milliseconds + * + * @return true on success, false on error + */ +bool bme680_set_heater_profile (uint32_t sensor, + uint16_t temperature, + uint16_t duration); + + +/** + * @brief Set the size of the IIR filter + * + * The sensor integrates an internal IIR filter (low pass filter) to + * reduce short-term changes in sensor output values caused by external + * disturbances. It effectively reduces the bandwidth of the sensor output + * values. + * + * The filter can optionally be used for pressure and temperature data that + * are subject to many short-term changes. Humidity and gas inside the sensor + * does not fluctuate rapidly and does not require such a low pass filtering. + * + * This function sets the size of the filter. The default filter size is + * 3 (iir_size_3). + * + * Please note: If the size of the filter is 0, the filter is not used. + * + * @param sensor id of the sensor + * @param size IIR filter size + * + * @return true on success, false on error + */ +bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size); + + + +#ifdef __cplusplus +} +#endif /* End of CPP guard */ + +#endif /* BME680_DRV_H_ */ + diff --git a/extras/bme680/component.mk b/extras/bme680/component.mk new file mode 100644 index 0000000..f890ad0 --- /dev/null +++ b/extras/bme680/component.mk @@ -0,0 +1,9 @@ +# Component makefile for extras/bme60 + +# expected anyone using bme680 driver includes it as 'bme680/bme680.h' +INC_DIRS += $(bme680_ROOT).. + +# args for passing into compile rule generation +bme680_SRC_DIR = $(bme680_ROOT) + +$(eval $(call component_compile_rules,bme680)) From ff6785a65616dd06757300a6d261920ba779b3f6 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:47:36 +0200 Subject: [PATCH 19/41] Delete bme680_callback_i2c.c --- .../bme680_callback_i2c/bme680_callback_i2c.c | 99 ------------------- 1 file changed, 99 deletions(-) delete mode 100644 examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c diff --git a/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c b/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c deleted file mode 100644 index 5ed1098..0000000 --- a/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Simple example with one sensor connected to I2C bus 0 - * using BME680 driver and callback function to get the results. - * - * Harware configuration: - * - * ESP8266 BME680 - * GPIO 5 (SCL) -> SCL - * GPIO 4 (SDA) -- SDA - */ - -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -// define I2C interfaces at which BME680 sensors can be connected -#define I2C_BUS 0 -#define I2C_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_SDA_PIN GPIO_ID_PIN((4)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static uint32_t sensor; - -/** - * Everything you need is a callback function that can handle - * callbacks from the background measurement task of the - * BME680 driver. This function is called periodically - * and delivers the actual and average sensor value sets for - * given sensor. - */ - -static void my_callback_function (uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average) -{ - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); -} - - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init all I2C bus interfaces at which BME680 sensors are connected - i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to - // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. - sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); - - // Register the callback function to get measurement results. - bme680_set_callback_function (sensor, &my_callback_function); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 500 ms. - bme680_set_measurement_period (sensor, 500); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // temperature and 2x oversampling for pressure. Humidity measurement is - // skipped. - bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 7. - bme680_set_filter_size(sensor, iir_size_7); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms. - bme680_set_heater_profile (sensor, 200, 100); -} - From 803af1b98e1307f9c8fe55dea44a53b65578e7cb Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:47:45 +0200 Subject: [PATCH 20/41] Delete Makefile --- examples/bme680/bme680_callback_i2c/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/bme680/bme680_callback_i2c/Makefile diff --git a/examples/bme680/bme680_callback_i2c/Makefile b/examples/bme680/bme680_callback_i2c/Makefile deleted file mode 100644 index 7dc4772..0000000 --- a/examples/bme680/bme680_callback_i2c/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROGRAM=BME680_Callback_I2C -EXTRA_COMPONENTS = extras/i2c extras/bme680 -include ../../../common.mk From 201d296f3f652da99b67a438ad9271d288ee8cf6 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:47:56 +0200 Subject: [PATCH 21/41] Delete Makefile --- examples/bme680/bme680_callback_i2c_two_sensors/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/Makefile diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/Makefile b/examples/bme680/bme680_callback_i2c_two_sensors/Makefile deleted file mode 100644 index 5b2d776..0000000 --- a/examples/bme680/bme680_callback_i2c_two_sensors/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROGRAM=BME680_Callback_I2C_Two_Sensors -EXTRA_COMPONENTS = extras/i2c extras/bme680 -include ../../../common.mk From 1d94dd83e0806c08a42f717d7884d8302d443c16 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:48:08 +0200 Subject: [PATCH 22/41] Delete bme680_callback_i2c_two_sensors.c --- .../bme680_callback_i2c_two_sensors.c | 117 ------------------ 1 file changed, 117 deletions(-) delete mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c b/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c deleted file mode 100644 index 153fc2a..0000000 --- a/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Simple example with two sensors connected to differen I2C busses - * using BME680 driver and callback function to get the results. - * - * Harware configuration: - * - * ESP8266 Bus 0 BME680_1 - * GPIO 5 (SCL) -> SCL - * GPIO 4 (SDA) -- SDA - * - * Bus 1 BME680_2 - * GPIO 12 (SCL) -> SCL - * GPIO 14 (SDA) -- SDA - */ - -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -// define I2C interfaces at which BME680 sensors can be connected -#define I2C_1_BUS 0 -#define I2C_1_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_1_SDA_PIN GPIO_ID_PIN((4)) - -#define I2C_2_BUS 1 -#define I2C_2_SCL_PIN GPIO_ID_PIN((12)) -#define I2C_2_SDA_PIN GPIO_ID_PIN((14)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static uint32_t sensor1; -static uint32_t sensor2; - -/** - * Everything you need is a callback function that can handle - * callbacks from the background measurement task of the - * BME680 driver. This function is called periodically - * and delivers the actual and average sensor value sets for - * given sensor. - */ - -static void my_callback_function (uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average) -{ - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); -} - - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init all I2C bus interfaces at which BME680 sensors are connected - i2c_init(I2C_1_BUS, I2C_1_SCL_PIN, I2C_1_SDA_PIN, I2C_FREQ_100K); - i2c_init(I2C_2_BUS, I2C_2_SCL_PIN, I2C_2_SDA_PIN, I2C_FREQ_100K); - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensors connected to I2C bus 0 (I2C_BUS_1) and (I2C_BUS_1). - // They can use same or different addresses. Parameter *cs* is ignored - // in case of I2C. - sensor1 = bme680_create_sensor (I2C_1_BUS, BME680_ADDR2, 0); - sensor2 = bme680_create_sensor (I2C_2_BUS, BME680_ADDR2, 0); - - // Register the callback functions to get measurement results. - bme680_set_callback_function (sensor1, &my_callback_function); - bme680_set_callback_function (sensor2, &my_callback_function); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 2000 ms and - // 5000 ms, respectively. - bme680_set_measurement_period (sensor1, 2000); - bme680_set_measurement_period (sensor2, 5000); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // sensor1 and 16x oversampling for sensor2. Humidity measurement is - // skipped for sensor1. - bme680_set_oversampling_rates(sensor1, os_2x, os_2x, none); - bme680_set_oversampling_rates(sensor2, os_8x, os_8x, os_8x); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 15 and 63, respectively. - bme680_set_filter_size(sensor1, iir_size_15); - bme680_set_filter_size(sensor2, iir_size_63); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms and 400 degrees for 150 ms, respectively. - bme680_set_heater_profile (sensor1, 200, 100); - bme680_set_heater_profile (sensor2, 400, 150); -} - From 4f4df8dbef96f24aaa57b633399570e85219052c Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:48:19 +0200 Subject: [PATCH 23/41] Delete Makefile --- examples/bme680/bme680_callback_spi/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/bme680/bme680_callback_spi/Makefile diff --git a/examples/bme680/bme680_callback_spi/Makefile b/examples/bme680/bme680_callback_spi/Makefile deleted file mode 100644 index a0dc401..0000000 --- a/examples/bme680/bme680_callback_spi/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROGRAM=BME680_Callback_SPI -EXTRA_COMPONENTS = extras/i2c extras/bme680 -include ../../../common.mk From fba947db3f671bec61caba1349d4db3411f47c32 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:48:28 +0200 Subject: [PATCH 24/41] Delete bme680_callback_spi.c --- .../bme680_callback_spi/bme680_callback_spi.c | 97 ------------------- 1 file changed, 97 deletions(-) delete mode 100644 examples/bme680/bme680_callback_spi/bme680_callback_spi.c diff --git a/examples/bme680/bme680_callback_spi/bme680_callback_spi.c b/examples/bme680/bme680_callback_spi/bme680_callback_spi.c deleted file mode 100644 index 94b0aaf..0000000 --- a/examples/bme680/bme680_callback_spi/bme680_callback_spi.c +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Simple example with one sensor connected to SPI bus 1 - * using BME680 driver and callback function to get the results. - * - * Harware configuration: - * - * ESP8266 BME680 - * GPIO 12 (MISO) <- SDO - * GPIO 13 (MOSI) -> SDI - * GPIO 14 (SCK) -> SCK - * GPIO 2 (CS) -> CS - */ - -#include "espressif/esp_common.h" -#include "esp/uart.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -#define SPI_BUS 1 -#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static uint32_t sensor; - -/** - * Everything you need is a callback function that can handle - * callbacks from the background measurement task of the - * BME680 driver. This function is called periodically - * and delivers the actual and average sensor value sets for - * given sensor. - */ - -static void my_callback_function (uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average) -{ - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); -} - - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensor at bus SPI_BUS with SPI_CS_GPIO as CS signal. - // Parameter *addr* has to be 0 in case of SPI bus. - sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); - - // Register the callback function to get measurement results. - bme680_set_callback_function (sensor, &my_callback_function); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 500 ms. - bme680_set_measurement_period (sensor, 500); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // temperature and 2x oversampling for pressure. Humidity measurement is - // skipped. - bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 7. - bme680_set_filter_size(sensor, iir_size_7); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms. - bme680_set_heater_profile (sensor, 200, 100); - - // That's it. -} - From bed16da1b85d48ae8449bdd59b51b575512086cf Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:48:39 +0200 Subject: [PATCH 25/41] Delete Makefile --- examples/bme680/bme680_task_i2c/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/bme680/bme680_task_i2c/Makefile diff --git a/examples/bme680/bme680_task_i2c/Makefile b/examples/bme680/bme680_task_i2c/Makefile deleted file mode 100644 index b7bab98..0000000 --- a/examples/bme680/bme680_task_i2c/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROGRAM=BME680_Task_I2C -EXTRA_COMPONENTS = extras/i2c extras/bme680 -include ../../../common.mk From dfac33e56cff23bc604f7d32f96cc99952b8b083 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:48:48 +0200 Subject: [PATCH 26/41] Delete bme680_task_i2c.c --- .../bme680/bme680_task_i2c/bme680_task_i2c.c | 106 ------------------ 1 file changed, 106 deletions(-) delete mode 100644 examples/bme680/bme680_task_i2c/bme680_task_i2c.c diff --git a/examples/bme680/bme680_task_i2c/bme680_task_i2c.c b/examples/bme680/bme680_task_i2c/bme680_task_i2c.c deleted file mode 100644 index 91f106f..0000000 --- a/examples/bme680/bme680_task_i2c/bme680_task_i2c.c +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Simple example with one sensor connected to I2C bus 0 - * using BME680 driver and a user task that polls the results. - * - * Harware configuration: - * - * ESP8266 BME680 - * GPIO 5 (SCL) -> SCL - * GPIO 4 (SDA) -- SDA - */ - -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -// define I2C interfaces at which BME680 sensors can be connected -#define I2C_BUS 0 -#define I2C_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_SDA_PIN GPIO_ID_PIN((4)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static uint32_t sensor; - -/** - * Task that executes function bme680_get_values to get last - * actual and average sensor values. - */ -void my_user_task(void *pvParameters) -{ - bme680_value_set_t actual; - bme680_value_set_t average; - - while (1) - { - bme680_get_values(sensor, &actual, &average); - - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); - - // Delay value has to be equal or greater than the period of measurment - // task - vTaskDelay(1000 / portTICK_PERIOD_MS); - } -} - - - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init all I2C bus interfaces at which BME680 sensors are connected - i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to - // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. - sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); - - // Create a task for getting results - xTaskCreate(my_user_task, "my_user_task", 256, NULL, 2, NULL); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 500 ms. - bme680_set_measurement_period (sensor, 500); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // temperature and 2x oversampling for pressure. Humidity measurement is - // skipped. - bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 7. - bme680_set_filter_size(sensor, iir_size_7); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms. - bme680_set_heater_profile (sensor, 200, 100); -} - From d14dd260288e217f516a2286b53fba62956f81e2 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:49:01 +0200 Subject: [PATCH 27/41] Delete Makefile --- examples/bme680/bme680_timer_i2c/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/bme680/bme680_timer_i2c/Makefile diff --git a/examples/bme680/bme680_timer_i2c/Makefile b/examples/bme680/bme680_timer_i2c/Makefile deleted file mode 100644 index 68049cb..0000000 --- a/examples/bme680/bme680_timer_i2c/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROGRAM=BME680_Timer_I2C -EXTRA_COMPONENTS = extras/i2c extras/bme680 -include ../../../common.mk From 309cbd93875e9142e6b59b7fce1e02ededf03551 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:49:09 +0200 Subject: [PATCH 28/41] Delete bme680_timer_i2c.c --- .../bme680_timer_i2c/bme680_timer_i2c.c | 105 ------------------ 1 file changed, 105 deletions(-) delete mode 100644 examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c diff --git a/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c b/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c deleted file mode 100644 index 26b5b57..0000000 --- a/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Simple example with one sensor connected to I2C bus 0 - * using BME680 driver and a timer to poll the results. - * - * Harware configuration: - * - * ESP8266 BME680 - * GPIO 5 (SCL) -> SCL - * GPIO 4 (SDA) -- SDA - */ - -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" -#include "timers.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -// define I2C interfaces at which BME680 sensors can be connected -#define I2C_BUS 0 -#define I2C_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_SDA_PIN GPIO_ID_PIN((4)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static TimerHandle_t timerHandle; -static uint32_t sensor; - -/** - * Timer callback function that executes function bme680_get_values to get last - * actual and average sensor values for given sensor. - */ - -static void my_sensor_timer_cb(TimerHandle_t xTimer) -{ - bme680_value_set_t actual; - bme680_value_set_t average; - - bme680_get_values(sensor, &actual, &average); - - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); -} - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init all I2C bus interfaces at which BME680 sensors are connected - i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to - // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. - sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); - - // Create and start a timer that calls my_sensor_timer_cb every 1000 ms - // Timer value has to be equal or greater than the period of measurment - // task above - - if ((timerHandle = xTimerCreate("BME680 Trigger", 1000/portTICK_PERIOD_MS, - pdTRUE, NULL, my_sensor_timer_cb))) - xTimerStart(timerHandle, 0); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 500 ms. - bme680_set_measurement_period (sensor, 500); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // temperature and 2x oversampling for pressure. Humidity measurement is - // skipped. - bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 7. - bme680_set_filter_size(sensor, iir_size_7); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms. - bme680_set_heater_profile (sensor, 200, 100); -} - From 457cf8203901843a39c445b0009f3ef34ce23672 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:49:21 +0200 Subject: [PATCH 29/41] Delete README.md --- examples/bme680/README.md | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 examples/bme680/README.md diff --git a/examples/bme680/README.md b/examples/bme680/README.md deleted file mode 100644 index d39c258..0000000 --- a/examples/bme680/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# BME680 Driver Examples - -These examples references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [bme680](https://github.com/gschorcht/esp-open-rtos/extras/bme680), which are provided in the `../../extras` folder. - -If you plan to use one or both of this drivers in your own projects, please check the main development pages for updated versions or reported issues. - -## Hardware setup - -There are examples using I2C with one or two sensors as well as examples using SPI with one sensor. - -To run examples with **one sensor** as I2C slave, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the BME680 sensor's I2C interface. - -If you want to run examples with **two sensors**, you could do this with only one bus and different I2C addresses or with two buses and the same or different I2C addresses. In later case, use GPIO16 (SCL) and GPIO14 (SDA) for the second I2C bus. - -## Example description - -__*shtx_callback_i2c*__ - -In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. - -__*shtx_callback_i2c_two_sensors*__ - -In this example, **two sensors** are used which are connected to **different I2C buses** but with the same slave addresses. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters for both sensors differently. In this example, there is no error handling. - -__*shtx_callback_spi*__ - -In this example, only **one sensor** connected to **SPI** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. - -__*shtx_task_one_sensor*__ - -In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **task** in conjunction with function __*bme680_get_values*__ to get the results of the periodic measurements. The task uses the *vTaskDelay* function to perform a periodic execution of the *bme680_get_values* function at the same rate as that of the periodic measurements. In this example, there is no error handling. - -__*shtx_timer_one_sensor*__ - -In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **software timer** and a **timer callback function** in conjunction with function __*bme680_get_values*__ to get the results of periodic measurements. The timer callback function executes function *bme680_get_values* to get the results. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. From 19e97d164a397ca2e87ce70094992ccd6895705b Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:49:59 +0200 Subject: [PATCH 30/41] Delete bme680_drv.c --- extras/bme680/bme680_drv.c | 733 ------------------------------------- 1 file changed, 733 deletions(-) delete mode 100644 extras/bme680/bme680_drv.c diff --git a/extras/bme680/bme680_drv.c b/extras/bme680/bme680_drv.c deleted file mode 100644 index fc020d2..0000000 --- a/extras/bme680/bme680_drv.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and - * gas sensor connected to I2C or SPI - * - * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] - * - * PLEASE NOTE: - * Due to the complexity of the sensor output value computation based on many - * calibration parameters, the original Bosch Sensortec BME680 driver that is - * released as open source [https://github.com/BoschSensortec/BME680_driver] - * and integrated for internal use. Please note the license of this part, which - * is an extended BSD license and can be found in each of that source files. - * - * --------------------------------------------------------------------------- - * - * The BSD License (3-clause license) - * - * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -#include "bme680_drv.h" -#include "FreeRTOS.h" -#include "task.h" - -#include "espressif/esp_common.h" -#include "espressif/sdk_private.h" - -#ifdef BME680_DEBUG -#define debug(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) -#else -#define debug(s, f, ...) -#endif - -#define error(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) - -#define BME680_BG_TASK_PRIORITY 9 - -/** - * Forward declation of internal functions used by embedded Bosch Sensortec BME680 driver. - */ -static void bme680_user_delay_ms(uint32_t period); -static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); -static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); -static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); -static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); - -/** - * Sensor data structures - */ -bme680_sensor_t bme680_sensors[BME680_MAX_SENSORS]; - -/** */ - -static bool bme680_valid_sensor (uint32_t sensor, const char* function) -{ - if (sensor < 0 || sensor > BME680_MAX_SENSORS) - { - debug("Wrong sensor id %d.", function, sensor); - return false; - } - - if (!bme680_sensors[sensor].active) - { - debug("Sensor with id %d is not active.", function, sensor); - return false; - } - - return true; -} - - -static bool bme680_is_available (uint32_t id) -{ - struct bme680_dev *dev = &bme680_sensors[id].dev; - - if (!bme680_valid_sensor(id, __FUNCTION__) || - bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev) != BME680_OK) - { - return false; - } - - return true; -} - - -static void bme680_compute_values (uint8_t id, struct bme680_field_data* data) -{ - if (!bme680_valid_sensor(id, __FUNCTION__) || !data) - return; - - bme680_value_set_t act; - bme680_value_set_t avg = bme680_sensors[id].average; - float w = bme680_sensors[id].average_weight; - - act.temperature = bme680_sensors[id].dev.tph_sett.os_temp ? data->temperature / 100.0f : 0; - act.pressure = bme680_sensors[id].dev.tph_sett.os_pres ? data->pressure / 100.0f : 0; - act.humidity = bme680_sensors[id].dev.tph_sett.os_hum ? data->humidity / 1000.0f : 0; - act.gas = bme680_sensors[id].dev.gas_sett.heatr_dur ? data->gas_resistance : 0; - - if (bme680_sensors[id].average_first_measurement || - !bme680_sensors[id].average_computation) - { - bme680_sensors[id].average_first_measurement = false; - - avg = act; - } - else - { - avg.temperature = w * act.temperature + (1-w) * avg.temperature; - avg.humidity = w * act.humidity + (1-w) * avg.humidity; - avg.pressure = w * act.pressure + (1-w) * avg.pressure; - avg.gas = w * act.gas + (1-w) * avg.gas; - } - - bme680_sensors[id].actual = act; - bme680_sensors[id].average = avg; -} - - -static void bme680_background_task (void *pvParameters) -{ - uint32_t id = (uint32_t)pvParameters; - uint32_t next_time = sdk_system_get_time (); - - while (1) - { - debug("%.3f Sensor %d", __FUNCTION__, (double)sdk_system_get_time()*1e-3, id); - - struct bme680_dev* dev = &bme680_sensors[id].dev; - struct bme680_field_data data; - - uint8_t set_required_settings; - int8_t rslt = BME680_OK; - - /* Select the power mode */ - /* Must be set before writing the sensor configuration */ - dev->power_mode = BME680_FORCED_MODE; - - debug ("Using oversampling rates: %d %d %d", __FUNCTION__, - bme680_sensors[id].dev.tph_sett.os_temp, - bme680_sensors[id].dev.tph_sett.os_pres, - bme680_sensors[id].dev.tph_sett.os_hum); - - /* Set the required sensor settings needed */ - set_required_settings = BME680_OST_SEL | - BME680_OSP_SEL | - BME680_OSH_SEL | - BME680_FILTER_SEL | - BME680_GAS_SENSOR_SEL; - - /* Set the desired sensor configuration */ - rslt = bme680_set_sensor_settings(set_required_settings, dev); - - /* Set the power mode to forced mode to trigger one TPHG measurement cycle */ - rslt = bme680_set_sensor_mode(dev); - - /* Get the total measurement duration so as to sleep or wait till the - * measurement is complete */ - uint16_t meas_period; - bme680_get_profile_dur(&meas_period, dev); - vTaskDelay(meas_period/portTICK_PERIOD_MS); /* Delay till the measurement is ready */ - - if ((rslt = bme680_get_sensor_data(&data, dev)) == BME680_OK) - { - bme680_compute_values(id, &data); - - debug("%d ms: %.2f C, %.2f Percent, %.2f hPa, %.2f Ohm", __FUNCTION__, - sdk_system_get_time (), - bme680_sensors[id].actual.temperature, - bme680_sensors[id].actual.humidity, - bme680_sensors[id].actual.pressure, - bme680_sensors[id].actual.gas); - - if (bme680_sensors[id].cb_function) - bme680_sensors[id].cb_function(id, - bme680_sensors[id].actual, - bme680_sensors[id].average); - - } - else - error("Could not get data from sensor with id %d", __FUNCTION__,id); - - /* Compute next measurement time as well as remaining cycle time*/ - uint32_t system_time = sdk_system_get_time (); - uint32_t remaining_time; - - next_time = next_time + bme680_sensors[id].period*1000; // in us - - if (next_time < system_time) - // in case of timer overflow - remaining_time = UINT32_MAX - system_time + next_time; - else - // normal case - remaining_time = next_time - system_time; - - /* Delay the background task by the cycle time */ - vTaskDelay(remaining_time/1000/portTICK_PERIOD_MS); - } -} - - -bool bme680_init_driver() -{ - for (int id=0; id < BME680_MAX_SENSORS; id++) - bme680_sensors[id].active = false; - - return true; -} - - -uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) -{ - static uint32_t id; - static char bg_task_name[20]; - - // search for first free sensor data structure - for (id=0; id < BME680_MAX_SENSORS; id++) - { - debug("id=%d active=%d", __FUNCTION__, id, bme680_sensors[id].active); - if (!bme680_sensors[id].active) - break; - } - debug("id=%d", __FUNCTION__, id); - - if (id == BME680_MAX_SENSORS) - { - debug("No more sensor data structures available.", __FUNCTION__); - return -1; - } - // init sensor data structure - bme680_sensors[id].bus = bus; - bme680_sensors[id].addr = addr; - bme680_sensors[id].period = 1000; - bme680_sensors[id].average_computation = true; - bme680_sensors[id].average_first_measurement = true; - bme680_sensors[id].average_weight = 0.2; - bme680_sensors[id].cb_function = NULL; - bme680_sensors[id].bg_task = NULL; - - bme680_sensors[id].dev.dev_id = id; - - if (bme680_sensors[id].addr) - { - // I2C interface used - bme680_sensors[id].addr = addr; - bme680_sensors[id].dev.intf = BME680_I2C_INTF; - bme680_sensors[id].dev.read = bme680_user_i2c_read; - bme680_sensors[id].dev.write = bme680_user_i2c_write; - bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; - } - else - { - // SPI interface used - bme680_sensors[id].spi_cs_pin = cs; - bme680_sensors[id].dev.intf = BME680_SPI_INTF; - bme680_sensors[id].dev.read = bme680_user_spi_read; - bme680_sensors[id].dev.write = bme680_user_spi_write; - bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; - - gpio_enable(bme680_sensors[id].spi_cs_pin, GPIO_OUTPUT); - gpio_write (bme680_sensors[id].spi_cs_pin, true); - } - - // initialize embedded Bosch Sensortec driver - if (bme680_init(&bme680_sensors[id].dev)) - { - error("Could not initialize the sensor device with id %d", __FUNCTION__, id); - return -1; - } - - bme680_sensors[id].active = true; - - /* Set the default temperature, pressure and humidity settings */ - bme680_set_oversampling_rates (id, os_1x, os_1x, os_1x); - bme680_set_filter_size (id, iir_size_3); - - /* Set heater default profile 320 degree Celcius for 150 ms */ - bme680_set_heater_profile (id, 320, 150); - - // check whether sensor is available - if (!bme680_is_available(id)) - { - debug("Sensor with id %d is not available", __FUNCTION__, id); - bme680_sensors[id].active = false; - return -1; - } - - snprintf (bg_task_name, 20, "bme680_bg_task_%d", id); - - if (xTaskCreate (bme680_background_task, bg_task_name, 256, (void*)id, - BME680_BG_TASK_PRIORITY, - &bme680_sensors[id].bg_task) != pdPASS) - { - vTaskDelete(bme680_sensors[id].bg_task); - error("Could not create the background task %s for sensor with id %d\n", - __FUNCTION__, bg_task_name, id); - bme680_sensors[id].active = false; - return false; - } - - return id; -} - - -bool bme680_delete_sensor(uint32_t sensor) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - bme680_sensors[sensor].active = false; - - if (bme680_sensors[sensor].bg_task) - vTaskDelete(bme680_sensors[sensor].bg_task); - - return true; -} - - -bool bme680_set_measurement_period (uint32_t sensor, uint32_t period) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - if (period < 20) - error("Period of %d ms is less than the minimum " - "period of 20 ms for sensor with id %d.", - __FUNCTION__, period, sensor); - - bme680_sensors[sensor].period = period; - - return true; -} - - -bool bme680_set_callback_function (uint32_t sensor, bme680_cb_function_t bme680_user_function) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - bme680_sensors[sensor].cb_function = bme680_user_function; - - debug("Set callback function done.", __FUNCTION__); - - return false; -} - - -bool bme680_get_values(uint32_t sensor, bme680_value_set_t *actual, bme680_value_set_t *average) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - if (actual) *actual = bme680_sensors[sensor].actual; - if (average) *average = bme680_sensors[sensor].average; - - return true; -} - - -bool bme680_enable_average_computation (uint32_t sensor, bool enabled) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - bme680_sensors[sensor].average_computation = enabled; - bme680_sensors[sensor].average_first_measurement = enabled; - - return true; -} - - -bool bme680_set_average_weight (uint32_t sensor, float weight) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - bme680_sensors[sensor].average_first_measurement = true; - bme680_sensors[sensor].average_weight = weight; - - return true; -} - - -bool bme680_set_oversampling_rates (uint32_t sensor, - bme680_oversampling_t ost, - bme680_oversampling_t osp, - bme680_oversampling_t osh) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - /* Set the temperature, pressure and humidity settings */ - bme680_sensors[sensor].dev.tph_sett.os_temp = ost; - bme680_sensors[sensor].dev.tph_sett.os_pres = osp; - bme680_sensors[sensor].dev.tph_sett.os_hum = osh; - - debug ("Setting oversampling rates done: osrt=%d osp=%d osrh=%d", __FUNCTION__, - bme680_sensors[sensor].dev.tph_sett.os_temp, - bme680_sensors[sensor].dev.tph_sett.os_pres, - bme680_sensors[sensor].dev.tph_sett.os_hum); - - bme680_sensors[sensor].average_first_measurement = true; - - return true; -} - -bool bme680_set_heater_profile (uint32_t sensor, uint16_t temperature, uint16_t duration) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - /* Set the temperature, pressure and humidity settings */ - bme680_sensors[sensor].dev.gas_sett.heatr_temp = temperature; /* degree Celsius */ - bme680_sensors[sensor].dev.gas_sett.heatr_dur = duration; /* milliseconds */ - - debug ("Setting heater profile done: temperature=%d duration=%d", __FUNCTION__, - bme680_sensors[sensor].dev.gas_sett.heatr_temp, - bme680_sensors[sensor].dev.gas_sett.heatr_dur); - - /* Set the remaining default gas sensor settings and link the heating profile */ - if (temperature == 0 || duration == 0) - bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_DISABLE_GAS_MEAS; - else - bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; - - bme680_sensors[sensor].average_first_measurement = true; - - return true; -} - - -bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size) -{ - if (!bme680_valid_sensor(sensor, __FUNCTION__)) - return false; - - /* Set the temperature, pressure and humidity settings */ - bme680_sensors[sensor].dev.tph_sett.filter = size; - - debug ("Setting filter size done: size=%d", __FUNCTION__, - bme680_sensors[sensor].dev.tph_sett.filter); - - bme680_sensors[sensor].average_first_measurement = true; - - return true; -} - - -/** - * Internal functions used by embedded Bosch Sensortec BME680 driver. - */ - -static void bme680_user_delay_ms(uint32_t period) -{ - /* - * Return control or wait, - * for a period amount of milliseconds - */ - - vTaskDelay(period / portTICK_PERIOD_MS); -} - -#define BME680_SPI_BUF_SIZE 64 // SPI register data buffer size of ESP866 - -static const spi_settings_t bus_settings = { - .mode = SPI_MODE0, - .freq_divider = SPI_FREQ_DIV_10M, - .msb = true, - .minimal_pins = true, - .endianness = SPI_LITTLE_ENDIAN -}; - - -static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - /* - * The parameter dev_id can be used as a variable to select which Chip Select pin has - * to be set low to activate the relevant device on the SPI bus - */ - - /* - * Data on the bus should be like - * |----------------+---------------------+-------------| - * | MOSI | MISO | Chip Select | - * |----------------+---------------------|-------------| - * | (don't care) | (don't care) | HIGH | - * | (reg_addr) | (don't care) | LOW | - * | (don't care) | (reg_data[0]) | LOW | - * | (....) | (....) | LOW | - * | (don't care) | (reg_data[len - 1]) | LOW | - * | (don't care) | (don't care) | HIGH | - * |----------------+---------------------|-------------| - */ - - // debug("dev_id=%d, reg_addr=%0x, len=%d\n", __FUNCTION__, dev_id, reg_addr, len); - - if (len >= BME680_SPI_BUF_SIZE) - { - error("Error on read from SPI slave on bus 1. Tried to transfer more" - "than %d byte in one read operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); - return -1; - } - - spi_settings_t old_settings; - - static uint8_t mosi[BME680_SPI_BUF_SIZE]; - static uint8_t miso[BME680_SPI_BUF_SIZE]; - - memset (mosi, 0xff, BME680_SPI_BUF_SIZE); - memset (miso, 0xff, BME680_SPI_BUF_SIZE); - - mosi[0] = reg_addr; - - uint8_t bus = bme680_sensors[dev_id].bus; - uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; - - spi_get_settings(bus, &old_settings); - spi_set_settings(bus, &bus_settings); - gpio_write(spi_cs_pin, false); - - size_t success = spi_transfer (bus, (const void*)mosi, (void*)miso, len+1, SPI_8BIT); - - gpio_write(spi_cs_pin, true); - spi_set_settings(bus, &old_settings); - - if (!success) - { - error("Could not read data from SPI bus %d", __FUNCTION__, bus); - return -1; - } - - for (int i=0; i < len; i++) - reg_data[i] = miso[i+1]; - -# ifdef BME680_DEBUG - printf("BME680 %s: Read the following bytes: ", __FUNCTION__); - printf("%0x ", reg_addr); - for (int i=0; i < len; i++) - printf("%0x ", reg_data[i]); - printf("\n"); -# endif - - return 0; -} - - -static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - /* - * The parameter dev_id can be used as a variable to select which Chip Select pin has - * to be set low to activate the relevant device on the SPI bus - */ - - /* - * Data on the bus should be like - * |---------------------+--------------+-------------| - * | MOSI | MISO | Chip Select | - * |---------------------+--------------|-------------| - * | (don't care) | (don't care) | HIGH | - * | (reg_addr) | (don't care) | LOW | - * | (reg_data[0]) | (don't care) | LOW | - * | (....) | (....) | LOW | - * | (reg_data[len - 1]) | (don't care) | LOW | - * | (don't care) | (don't care) | HIGH | - * |---------------------+--------------|-------------| - */ - - static uint8_t mosi[BME680_SPI_BUF_SIZE]; - - if (len >= BME680_SPI_BUF_SIZE) - { - error("Error on write to SPI slave on bus 1. Tried to transfer more" - "than %d byte in one write operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); - return -1; - } - - mosi[0] = reg_addr; - - for (int i = 0; i < len; i++) - mosi[i+1] = reg_data[i]; - -# ifdef BME680_DEBUG - printf("BME680 %s: Write the following bytes: ", __FUNCTION__); - for (int i = 0; i < len+1; i++) - printf("%0x ", mosi[i]); - printf("\n"); -# endif - - spi_settings_t old_settings; - - uint8_t bus = bme680_sensors[dev_id].bus; - uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; - - spi_get_settings(bus, &old_settings); - spi_set_settings(bus, &bus_settings); - gpio_write(spi_cs_pin, false); - - size_t success = spi_transfer (bus, (const void*)mosi, NULL, len+1, SPI_8BIT); - - gpio_write(spi_cs_pin, true); - spi_set_settings(bus, &old_settings); - - if (!success) - { - error("Could not write data to SPI bus %d", __FUNCTION__, bus); - return -1; - } - - return 0; -} - -static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - /* - * The parameter dev_id can be used as a variable to store the I2C address of the device - */ - - /* - * Data on the bus should be like - * |------------+---------------------| - * | I2C action | Data | - * |------------+---------------------| - * | Start | - | - * | Write | (reg_addr) | - * | Stop | - | - * | Start | - | - * | Read | (reg_data[0]) | - * | Read | (....) | - * | Read | (reg_data[len - 1]) | - * | Stop | - | - * |------------+---------------------| - */ - - debug ("Read %d byte from i2c slave on bus %d with addr %0x.", - __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); - - int result = i2c_slave_read(bme680_sensors[dev_id].bus, - bme680_sensors[dev_id].addr, - ®_addr, reg_data, len); - - if (result) - { - error("Error %d on read %d byte from I2C slave on bus %d with addr %0x.", - __FUNCTION__, result, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); - return result; - } - -# ifdef BME680_DEBUG - printf("BME680 %s: Read following bytes: ", __FUNCTION__); - printf("%0x ", reg_addr); - for (int i=0; i < len; i++) - printf("%0x ", reg_data[i]); - printf("\n"); -# endif - - return result; -} - -static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - /* - * The parameter dev_id can be used as a variable to store the I2C address of the device - */ - - /* - * Data on the bus should be like - * |------------+---------------------| - * | I2C action | Data | - * |------------+---------------------| - * | Start | - | - * | Write | (reg_addr) | - * | Write | (reg_data[0]) | - * | Write | (....) | - * | Write | (reg_data[len - 1]) | - * | Stop | - | - * |------------+---------------------| - */ - - debug ("Write %d byte to i2c slave on bus %d with addr %0x.", - __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); - - int result = i2c_slave_write(bme680_sensors[dev_id].bus, - bme680_sensors[dev_id].addr, - ®_addr, reg_data, len); - - if (result) - { - error("Error %d on write to i2c slave on bus %d with addr %0x.", - __FUNCTION__, result, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); - return result; - } - -# ifdef BME680_DEBUG - printf("BME680 %s: Wrote the following bytes: ", __FUNCTION__); - printf("%0x ", reg_addr); - for (int i=0; i < len; i++) - printf("%0x ", reg_data[i]); - printf("\n"); -# endif - - return result; -} - - From b8268240f41a98edbdd02376aa1797294c889062 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:11 +0200 Subject: [PATCH 31/41] Delete bme680_drv.h --- extras/bme680/bme680_drv.h | 398 ------------------------------------- 1 file changed, 398 deletions(-) delete mode 100644 extras/bme680/bme680_drv.h diff --git a/extras/bme680/bme680_drv.h b/extras/bme680/bme680_drv.h deleted file mode 100644 index 95881a0..0000000 --- a/extras/bme680/bme680_drv.h +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and - * gas sensor connected to I2C or SPI - * - * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] - * - * PLEASE NOTE: - * Due to the complexity of the sensor output value compputation based on many - * calibration parameters, the original Bosch Sensortec BME680 driver that is - * released as open source [https://github.com/BoschSensortec/BME680_driver] - * and integrated for internal use. Please note the license of this part, which - * is an extended BSD license and can be found in each of that source files. - * - * --------------------------------------------------------------------------- - * - * The BSD License (3-clause license) - * - * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BME680_DRV_H_ -#define BME680_DRV_H_ - -#include "stdint.h" -#include "stdbool.h" - -#include "FreeRTOS.h" -#include - -#include "i2c/i2c.h" -#include "esp/spi.h" - -#include "bme680/bme680.h" - -// Uncomment to enable debug output -// #define BME680_DEBUG - -// Change this if you need more than 3 BME680 sensors -#define BME680_MAX_SENSORS 3 - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - * @brief Type for actual and average sensor values (called TPHG values) - */ -typedef struct { - float temperature; // temperature in degree Celcius - float pressure; // barometric pressure in hPascal - float humidity; // humidity in percent - float gas; // gas resistance in Ohm -} bme680_value_set_t; - -/** - * @brief callback unction type to pass result of measurement to user tasks - */ -typedef void (*bme680_cb_function_t)(uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average); - -/** - * @brief BME680 sensor device data structure type - */ -typedef struct { - - bool active; - - uint8_t bus; // I2C = 0, SPI = 1 - uint8_t addr; // I2C = slave address, SPI = 0 - uint8_t spi_cs_pin; // GPIO used as SPI CS - - uint32_t period; - - bme680_value_set_t actual; - bme680_value_set_t average; - - bool average_computation; - bool average_first_measurement; - float average_weight; - - bme680_cb_function_t cb_function; - TaskHandle_t bg_task; - - struct bme680_dev dev; // internal Bosch BME680 driver data structure - -} bme680_sensor_t; - - -/** - * @brief BME680 oversampling rate values - */ -typedef enum { - none = 0, // measurement is skipped, output values are invalid - os_1x = 1, // default oversampling rates - os_2x = 2, - os_4x = 3, - os_8x = 4, - os_16x = 5 -} bme680_oversampling_t; - - -/** - * @brief BME680 IIR filter sizes - */ -typedef enum { - iir_size_0 = 0, // filter is not used - iir_size_1 = 1, - iir_size_3 = 2, - iir_size_7 = 3, - iir_size_15 = 4, - iir_size_31 = 5, - iir_size_63 = 6, - iir_size_127 = 7 -} bme680_filter_size_t; - -/** - * @brief Initialize the BME680 driver - * - * This function initializes all internal data structures. It must be called - * exactly once at the beginning. - * - * @return true on success, false on error - */ -bool bme680_init_driver (); - - -/** - * @brief Create and initialize a BME680 sensor - * - * This function initializes the BME680 sensor and checks its availability. - * - * Furthermore, the starts a background task for measurements with - * the sensor. The background task carries out the measurements periodically - * using BME680's single shot data acquisition mode with a default period - * of 1000 ms. This period be changed using function *set_measurment_period*. - * - * During each measurement the background task - * - * 1. determines *actual sensor values* - * 2. computes optionally *average sensor values* - * 3. calls back optionally a registered function of user task. - * - * The average value computation uses an exponential moving average - * and can be activated (default) or deactivated with function - * *bme680_enable_average_computation*. If the average value computation is - * deactivated, *average sensor values* correspond to *actual sensor values*. - * The weight (smoothing factor) used in the average value computatoin is 0.2 - * by default and can be changed with function *bme680_set_average_weight*. - * - * If a callback method has been registered with function - * *bme680_set_callback_function*, it is called after each measurement - * to pass measurement results to user tasks. Otherwise, user tasks have to - * use function *bme680_get_values* explicitly to get the results. - * - * The sensor can either be connected to an I2C or SPI bus. If *addr* is - * greater than 0, it defines a valid I2C slave address and the sensor is - * connected to an I2C bus using this address. If *addr* is 0, the sensor - * is connected to a SPI bus. In both cases, the *bus* parameter specifies - * the ID of the corresponding bus. In case of SPI, parameter *cs* defines - * the GPIO used as CS signal. - * - * @param bus I2C or SPI bus at which BME680 sensor is connected - * @param addr I2C addr of the BME680 sensor or 0 for SPI - * @param cs SPI CS GPIO, ignored for I2C - * - * @return ID of the sensor (0 or greater on success or -1 on error) - */ -uint32_t bme680_create_sensor (uint8_t bus, uint8_t addr, uint8_t cs_pin); - - -/** - * @brief Set the period of the background measurement task for the given - * sensor - * - * Please note: The minimum period is 20 ms since each measurement takes - * about 20 ms. - * - * @param sensor ID of the sensor - * @param period Measurement period in ms (default 1000 ms) - * - * @return true on success, false on error - */ -bool bme680_set_measurement_period (uint32_t sensor, uint32_t period); - - -/** - * @brief Set the callback function for the background measurement task for - * the given sensor - * - * If a callback method is registered, it is called after each measurement to - * pass measurement results to user tasks. Thus, callback function is executed - * at the same rate as the measurements. - * - * @param sensor ID of the sensor - * @param function user function called after each measurement - * (NULL to delete it for the sensor) - * - * @return true on success, false on error - */ -bool bme680_set_callback_function (uint32_t sensor, - bme680_cb_function_t user_function); - - -/** - * @brief Deletes the BME680 sensor given by its ID - * - * @param sensor ID of the sensor - * - * @return true on success, false on error - */ -bool bme680_delete_sensor (uint32_t sensor); - - -/** - * @brief Get the actual and average sensor values - * - * This function returns the actual and average sensor values of the last - * measurement. The parameters *actual* and *average* are pointers to data - * structures of the type *bme680_value_set_t*, which are filled with the - * of last measurement. Use NULL for the appropriate parameter if you are - * not interested in specific results. - * - * If average value computation is deactivated, average sensor values - * correspond to the actual sensor values. - * - * Please note: Calling this function is only necessary if no callback - * function has been registered for the sensor. - * - * @param sensor ID of the sensor - * @param actual Pointer to a data structure for actual sensor values - * @param average Pointer to a data structure for average sensor values - * - * @return true on success, false on error - */ -bool bme680_get_values (uint32_t sensor, - bme680_value_set_t *actual, - bme680_value_set_t *average); - - -/** - * @brief Enable (default) or disable the average value computation - * - * In case, the average value computation is disabled, average sensor values - * correspond to the actual sensor values. - * - * Please note: All average sensor values are reset if parameters for - * measurement are changed using either function *bme680_set_average_weight*, - * *bme680_set_oversampling_rates*, *bme680_set_heater_profile* or - * *bme680_set_filter_size*. - * - * @param sensor id of the sensor - * @param enabled true to enable or false to disable average computation - * - * @return true on success, false on error -*/ -bool bme680_enable_average_computation (uint32_t sensor, bool enabled); - - -/** - * @brief Set the weight (smoothing factor) for average value computation - * - * At each measurement carried out by the background task, actual sensor - * values are determined. If average value computation is enabled (default), - * exponential moving average values are computed according to following - * equation - * - * Average[k] = W * Value + (1-W) * Average [k-1] - * - * where coefficient W represents the degree of weighting decrease, a constant - * smoothing factor between 0 and 1. A higher W discounts older observations - * faster. W is 0.2 by default. - * - * @param sensor id of the sensor - * @param weight coefficient W (default is 0.2) - * - * @return true on success, false on error - */ -bool bme680_set_average_weight (uint32_t sensor, float weight); - - -/** - * @brief Set the oversampling rates for measurements - * - * The BME680 sensor allows to define different oversampling rates for the - * measurements of temperature, pressure and humidity, separatly. Possible - * oversampling rates defined by enumaration type are none, 1x (default), - * 2x, 4x, 8x, and 16x. In case of *none*, the corressponing measurement is - * skipped and output values are invalid. - * - * Please note: To disable the measurement of either temperature, pressure - * or humidity, set the corresponding oversamling rate to *none*. - * - * @param sensor id of the sensor - * @param ost oversampling rate for temperature measurements - * @param osp oversampling rate for pressure measurements - * @param osh oversampling rate for humidity measurements - * - * @return true on success, false on error - */ -bool bme680_set_oversampling_rates (uint32_t sensor, - bme680_oversampling_t ost, - bme680_oversampling_t osp, - bme680_oversampling_t osh); - -/** - * @brief Set the heater profile for gas measurements - * - * For gas measurement the sensor integrates a heater. The paremeters for - * this heater are defined by a heater profile. Such a heater profile - * consists of a temperature setting point (the target temperature) and the - * heating duration. - * - * Even though the sensor supports up to 10 different profiles, only one - * profile is used by this driver for simplicity. The temperature setting - * point and the heating duration of this profile can be defined by this - * function. Default values are 320 degree Celcius as target temperature and - * 150 ms heating duration. If heating duration is 0 ms, the gas measurement - * is skipped and output values are invalid. - * - * Please note: To disable the measurement of gas, set the heating duration - * to 0 ms. - * - * Please note: According to the datasheet, target temperatures of between - * 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary - * for the heater to reach the desired target temperature. - * - * @param sensor id of the sensor - * @param temperature heating temperature in degree Celcius - * @param duration heating duration in milliseconds - * - * @return true on success, false on error - */ -bool bme680_set_heater_profile (uint32_t sensor, - uint16_t temperature, - uint16_t duration); - - -/** - * @brief Set the size of the IIR filter - * - * The sensor integrates an internal IIR filter (low pass filter) to - * reduce short-term changes in sensor output values caused by external - * disturbances. It effectively reduces the bandwidth of the sensor output - * values. - * - * The filter can optionally be used for pressure and temperature data that - * are subject to many short-term changes. Humidity and gas inside the sensor - * does not fluctuate rapidly and does not require such a low pass filtering. - * - * This function sets the size of the filter. The default filter size is - * 3 (iir_size_3). - * - * Please note: If the size of the filter is 0, the filter is not used. - * - * @param sensor id of the sensor - * @param size IIR filter size - * - * @return true on success, false on error - */ -bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size); - - - -#ifdef __cplusplus -} -#endif /* End of CPP guard */ - -#endif /* BME680_DRV_H_ */ - From 73088989833613f9d105a7de73dd3e8fdf4d2681 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:23 +0200 Subject: [PATCH 32/41] Delete bme680.c --- extras/bme680/bme680.c | 1105 ---------------------------------------- 1 file changed, 1105 deletions(-) delete mode 100644 extras/bme680/bme680.c diff --git a/extras/bme680/bme680.c b/extras/bme680/bme680.c deleted file mode 100644 index 1b53aa5..0000000 --- a/extras/bme680/bme680.c +++ /dev/null @@ -1,1105 +0,0 @@ -/**\mainpage - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * File bme680.c - * @date 5 Jul 2017 - * @version 3.5.1 - * - */ - -/*! @file bme680.c - @brief Sensor driver for BME680 sensor */ -#include "bme680.h" - -/**static variables */ -/**Look up table for the possible gas range values */ -uint32_t lookupTable1[16] = { UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), - UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2130303777), UINT32_C(2147483647), - UINT32_C(2147483647), UINT32_C(2143188679), UINT32_C(2136746228), UINT32_C(2147483647), UINT32_C(2126008810), - UINT32_C(2147483647), UINT32_C(2147483647) }; -/**Look up table for the possible gas range values */ -uint32_t lookupTable2[16] = { UINT32_C(4096000000), UINT32_C(2048000000), UINT32_C(1024000000), UINT32_C(512000000), - UINT32_C(255744255), UINT32_C(127110228), UINT32_C(64000000), UINT32_C(32258064), UINT32_C(16016016), UINT32_C( - 8000000), UINT32_C(4000000), UINT32_C(2000000), UINT32_C(1000000), UINT32_C(500000), UINT32_C(250000), - UINT32_C(125000) }; - -/*! - * @brief This internal API is used to read the calibrated data from the sensor. - * - * This function is used to retrieve the calibration - * data from the image registers of the sensor. - * - * @note Registers 89h to A1h for calibration data 1 to 24 - * from bit 0 to 7 - * @note Registers E1h to F0h for calibration data 25 to 40 - * from bit 0 to 7 - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_calib_data(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to set the gas configuration of the sensor. - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t set_gas_config(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to get the gas configuration of the sensor. - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_gas_config(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Heat duration value. - * - * @param[in] dur :Value of the duration to be shared. - * - * @return uint8_t threshold duration after calculation. - */ -static uint8_t calc_heater_dur(uint16_t dur); - -/*! - * @brief This internal API is used to calculate the temperature value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] temp_adc :Contains the temperature ADC value . - * - * @return uint32_t calculated temperature. - */ -static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the pressure value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] pres_adc :Contains the pressure ADC value . - * - * @return uint32_t calculated pressure. - */ -static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the humidity value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] hum_adc :Contains the humidity ADC value. - * - * @return uint32_t calculated humidity. - */ -static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Gas Resistance value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] gas_res_adc :Contains the Gas Resistance ADC value. - * @param[in] gas_range :Contains the range of gas values. - * - * @return uint32_t calculated gas resistance. - */ -static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Heat Resistance value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] temp :Contains the temporary value. - * - * @return uint8_t calculated heater resistance. - */ -static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the field data of sensor. - * - * @param[out] data :Structure instance to hold the data - * @param[in] dev :Structure instance of bme680_dev. - * - * @return int8_t result of the field data from sensor. - */ -static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to set the memory page - * based on register address. - * - * The value of memory page - * value | Description - * --------|-------------- - * 0 | BME680_PAGE0_SPI - * 1 | BME680_PAGE1_SPI - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] reg_addr :Contains the register address array. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to get the memory page based - * on register address. - * - * The value of memory page - * value | Description - * --------|-------------- - * 0 | BME680_PAGE0_SPI - * 1 | BME680_PAGE1_SPI - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_mem_page(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to validate the device pointer for - * null conditions. - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t null_ptr_check(const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to check the boundary - * conditions. - * - * @param[in] value :pointer to the value. - * @param[in] min :minimum value. - * @param[in] max :maximum value. - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev); - -/****************** Global Function Definitions *******************************/ -/*! - *@brief This API is the entry point. - *It reads the chip-id and calibration data from the sensor. - */ -int8_t bme680_init(struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) - { - /* Soft reset to restore it to default values*/ - rslt = bme680_soft_reset(dev); - - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev); - if (rslt == BME680_OK) { - if (dev->chip_id == BME680_CHIP_ID) { - rslt = get_calib_data(dev); - } else { - rslt = BME680_E_DEV_NOT_FOUND; - } - } - } - } - - return rslt; -} - -/*! - * @brief This API reads the data from the given register address of the sensor. - */ -int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (dev->intf == BME680_SPI_INTF) { - /* Set the memory page */ - rslt = set_mem_page(reg_addr, dev); - if (rslt == BME680_OK) - reg_addr = reg_addr | BME680_SPI_RD_MSK; - } - dev->com_rslt = dev->read(dev->dev_id, reg_addr, reg_data, len); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - - return rslt; -} - -/*! - * @brief This API writes the given data to the register address - * of the sensor. - */ -int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev) -{ - int8_t rslt; - /* Length of the temporary buffer is 2*(length of register)*/ - uint8_t tmp_buff[BME680_TMP_BUFFER_LENGTH] = { 0 }; - uint16_t index; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if ((len > 0) && (len < BME680_TMP_BUFFER_LENGTH / 2)) { - /* Interleave the 2 arrays */ - for (index = 0; index < len; index++) { - if (dev->intf == BME680_SPI_INTF) { - /* Set the memory page */ - rslt = set_mem_page(reg_addr[index], dev); - tmp_buff[(2 * index)] = reg_addr[index] & BME680_SPI_WR_MSK; - } else { - tmp_buff[(2 * index)] = reg_addr[index]; - } - tmp_buff[(2 * index) + 1] = reg_data[index]; - } - /* Write the interleaved array */ - if (rslt == BME680_OK) { - dev->com_rslt = dev->write(dev->dev_id, tmp_buff[0], &tmp_buff[1], (2 * len) - 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - } else { - rslt = BME680_E_INVALID_LENGTH; - } - } - - return rslt; -} - -/*! - * @brief This API performs the soft reset of the sensor. - */ -int8_t bme680_soft_reset(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg_addr = BME680_SOFT_RESET_ADDR; - /* 0xb6 is the soft reset command */ - uint8_t soft_rst_cmd = BME680_SOFT_RESET_CMD; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (dev->intf == BME680_SPI_INTF) - rslt = get_mem_page(dev); - - /* Reset the device */ - if (rslt == BME680_OK) { - rslt = bme680_set_regs(®_addr, &soft_rst_cmd, 1, dev); - /* Wait for 5ms */ - dev->delay_ms(BME680_RESET_PERIOD); - - if (rslt == BME680_OK) { - /* After reset get the memory page */ - if (dev->intf == BME680_SPI_INTF) - rslt = get_mem_page(dev); - } - } - } - - return rslt; -} - -/*! - * @brief This API is used to set the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - */ -int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg_addr; - uint8_t data = 0; - uint8_t count = 0; - uint8_t reg_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - uint8_t intended_power_mode = dev->power_mode; /* Save intended power mode */ - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (desired_settings & BME680_GAS_MEAS_SEL) - rslt = set_gas_config(dev); - - dev->power_mode = BME680_SLEEP_MODE; - if (rslt == BME680_OK) - rslt = bme680_set_sensor_mode(dev); - - /* Selecting the filter */ - if (desired_settings & BME680_FILTER_SEL) { - rslt = boundary_check(&dev->tph_sett.filter, BME680_FILTER_SIZE_0, BME680_FILTER_SIZE_127, dev); - reg_addr = BME680_CONF_ODR_FILT_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_FILTER_SEL) - data = BME680_SET_BITS(data, BME680_FILTER, dev->tph_sett.filter); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting heater control for the sensor */ - if (desired_settings & BME680_HCNTRL_SEL) { - rslt = boundary_check(&dev->gas_sett.heatr_ctrl, BME680_ENABLE_HEATER, BME680_DISABLE_HEATER, dev); - reg_addr = BME680_CONF_HEAT_CTRL_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - data = BME680_SET_BITS_POS_0(data, BME680_HCTRL, dev->gas_sett.heatr_ctrl); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting heater T,P oversampling for the sensor */ - if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { - rslt = boundary_check(&dev->tph_sett.os_temp, BME680_OS_NONE, BME680_OS_16X, dev); - reg_addr = BME680_CONF_T_P_MODE_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_OST_SEL) - data = BME680_SET_BITS(data, BME680_OST, dev->tph_sett.os_temp); - - if (desired_settings & BME680_OSP_SEL) - data = BME680_SET_BITS(data, BME680_OSP, dev->tph_sett.os_pres); - - reg_array[count] = reg_addr; - data_array[count] = data; - count++; - } - - /* Selecting humidity oversampling for the sensor */ - if (desired_settings & BME680_OSH_SEL) { - rslt = boundary_check(&dev->tph_sett.os_hum, BME680_OS_NONE, BME680_OS_16X, dev); - reg_addr = BME680_CONF_OS_H_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - data = BME680_SET_BITS_POS_0(data, BME680_OSH, dev->tph_sett.os_hum); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting the runGas and NB conversion settings for the sensor */ - if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { - rslt = boundary_check(&dev->gas_sett.run_gas, BME680_RUN_GAS_DISABLE, BME680_RUN_GAS_ENABLE, dev); - if (rslt == BME680_OK) - rslt = boundary_check(&dev->gas_sett.nb_conv, BME680_NBCONV_MIN, BME680_NBCONV_MAX, dev); - reg_addr = BME680_CONF_ODR_RUN_GAS_NBC_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_RUN_GAS_SEL) - data = BME680_SET_BITS(data, BME680_RUN_GAS, dev->gas_sett.run_gas); - - if (desired_settings & BME680_NBCONV_SEL) - data = BME680_SET_BITS_POS_0(data, BME680_NBCONV, dev->gas_sett.nb_conv); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - if (rslt == BME680_OK) - rslt = bme680_set_regs(reg_array, data_array, count, dev); - - /* Restore previous intended power mode */ - dev->power_mode = intended_power_mode; - } - - return rslt; -} - -/*! - * @brief This API is used to get the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - */ -int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) -{ - int8_t rslt; - /* starting address of the register array for burst read*/ - uint8_t reg_addr = BME680_CONF_HEAT_CTRL_ADDR; - uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(reg_addr, data_array, BME680_REG_BUFFER_LENGTH, dev); - - if (rslt == BME680_OK) { - if (desired_settings & BME680_GAS_MEAS_SEL) - rslt = get_gas_config(dev); - - /* get the T,P,H ,Filter,ODR settings here */ - if (desired_settings & BME680_FILTER_SEL) - dev->tph_sett.filter = BME680_GET_BITS(data_array[BME680_REG_FILTER_INDEX], BME680_FILTER); - - if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { - dev->tph_sett.os_temp = BME680_GET_BITS(data_array[BME680_REG_TEMP_INDEX], BME680_OST); - dev->tph_sett.os_pres = BME680_GET_BITS(data_array[BME680_REG_PRES_INDEX], BME680_OSP); - } - - if (desired_settings & BME680_OSH_SEL) - dev->tph_sett.os_hum = BME680_GET_BITS_POS_0(data_array[BME680_REG_HUM_INDEX], BME680_OSH); - - /* get the gas related settings */ - if (desired_settings & BME680_HCNTRL_SEL) - dev->gas_sett.heatr_ctrl = BME680_GET_BITS_POS_0(data_array[BME680_REG_HCTRL_INDEX], BME680_HCTRL); - - if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { - dev->gas_sett.nb_conv = BME680_GET_BITS_POS_0(data_array[BME680_REG_NBCONV_INDEX], BME680_NBCONV); - dev->gas_sett.run_gas = BME680_GET_BITS(data_array[BME680_REG_RUN_GAS_INDEX], BME680_RUN_GAS); - } - } - } else { - rslt = BME680_E_NULL_PTR; - } - - return rslt; -} - -/*! - * @brief This API is used to set the power mode of the sensor. - */ -int8_t bme680_set_sensor_mode(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t tmp_pow_mode; - uint8_t pow_mode = 0; - uint8_t reg_addr = BME680_CONF_T_P_MODE_ADDR; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - /* Call recursively until in sleep */ - do { - rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &tmp_pow_mode, 1, dev); - if (rslt == BME680_OK) { - /* Put to sleep before changing mode */ - pow_mode = (tmp_pow_mode & BME680_MODE_MSK); - - if (pow_mode != BME680_SLEEP_MODE) { - tmp_pow_mode = tmp_pow_mode & (~BME680_MODE_MSK); /* Set to sleep */ - rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); - dev->delay_ms(BME680_POLL_PERIOD_MS); - } - } - } while (pow_mode != BME680_SLEEP_MODE); - - /* Already in sleep */ - if (dev->power_mode != BME680_SLEEP_MODE) { - tmp_pow_mode = (tmp_pow_mode & ~BME680_MODE_MSK) | (dev->power_mode & BME680_MODE_MSK); - if (rslt == BME680_OK) - rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); - } - } - - return rslt; -} - -/*! - * @brief This API is used to get the power mode of the sensor. - */ -int8_t bme680_get_sensor_mode(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t mode; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &mode, 1, dev); - /* Masking the other register bit info*/ - dev->power_mode = mode & BME680_MODE_MSK; - } - - return rslt; -} - -/*! - * @brief This API is used to set the profile duration of the sensor. - */ -void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev) -{ - uint32_t tph_dur; /* Calculate in us */ - - /* TPH measurement duration */ - tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); - tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ - tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ - tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ - tph_dur /= UINT32_C(1000); /* Convert to ms */ - - tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ - /* The remaining time should be used for heating */ - dev->gas_sett.heatr_dur = duration - (uint16_t) tph_dur; -} - -/*! - * @brief This API is used to get the profile duration of the sensor. - */ -void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev) -{ - uint32_t tph_dur; /* Calculate in us */ - - /* TPH measurement duration */ - tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); - tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ - tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ - tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ - tph_dur /= UINT32_C(1000); /* Convert to ms */ - - tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ - /* The remaining time should be used for heating */ - *duration = dev->gas_sett.heatr_dur + (uint16_t) tph_dur; -} - -/*! - * @brief This API reads the pressure, temperature and humidity and gas data - * from the sensor, compensates the data and store it in the bme680_data - * structure instance passed by the user. - */ -int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - /* Reading the sensor data in forced mode only */ - rslt = read_field_data(data, dev); - if (rslt == BME680_OK) { - if (data->status & BME680_NEW_DATA_MSK) - dev->new_fields = 1; - else - dev->new_fields = 0; - } - } - - return rslt; -} - -/*! - * @brief This internal API is used to read the calibrated data from the sensor. - */ -static int8_t get_calib_data(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t coeff_array[BME680_COEFF_SIZE] = { 0 }; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_COEFF_ADDR1, coeff_array, BME680_COEFF_ADDR1_LEN, dev); - /* Append the second half in the same array */ - if (rslt == BME680_OK) - rslt = bme680_get_regs(BME680_COEFF_ADDR2, &coeff_array[BME680_COEFF_ADDR1_LEN], BME680_COEFF_ADDR2_LEN, - dev); - - /* Temperature related coefficients */ - dev->calib.par_t1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T1_MSB_REG], - coeff_array[BME680_T1_LSB_REG])); - dev->calib.par_t2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T2_MSB_REG], - coeff_array[BME680_T2_LSB_REG])); - dev->calib.par_t3 = (int8_t) (coeff_array[BME680_T3_REG]); - - /* Pressure related coefficients */ - dev->calib.par_p1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P1_MSB_REG], - coeff_array[BME680_P1_LSB_REG])); - dev->calib.par_p2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P2_MSB_REG], - coeff_array[BME680_P2_LSB_REG])); - dev->calib.par_p3 = (int8_t) coeff_array[BME680_P3_REG]; - dev->calib.par_p4 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P4_MSB_REG], - coeff_array[BME680_P4_LSB_REG])); - dev->calib.par_p5 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P5_MSB_REG], - coeff_array[BME680_P5_LSB_REG])); - dev->calib.par_p6 = (int8_t) (coeff_array[BME680_P6_REG]); - dev->calib.par_p7 = (int8_t) (coeff_array[BME680_P7_REG]); - dev->calib.par_p8 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P8_MSB_REG], - coeff_array[BME680_P8_LSB_REG])); - dev->calib.par_p9 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P9_MSB_REG], - coeff_array[BME680_P9_LSB_REG])); - dev->calib.par_p10 = (uint8_t) (coeff_array[BME680_P10_REG]); - - /* Humidity related coefficients */ - dev->calib.par_h1 = (uint16_t) (((uint16_t) coeff_array[BME680_H1_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) - | (coeff_array[BME680_H1_LSB_REG] & BME680_BIT_H1_DATA_MSK)); - dev->calib.par_h2 = (uint16_t) (((uint16_t) coeff_array[BME680_H2_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) - | ((coeff_array[BME680_H2_LSB_REG]) >> BME680_HUM_REG_SHIFT_VAL)); - dev->calib.par_h3 = (int8_t) coeff_array[BME680_H3_REG]; - dev->calib.par_h4 = (int8_t) coeff_array[BME680_H4_REG]; - dev->calib.par_h5 = (int8_t) coeff_array[BME680_H5_REG]; - dev->calib.par_h6 = (uint8_t) coeff_array[BME680_H6_REG]; - dev->calib.par_h7 = (int8_t) coeff_array[BME680_H7_REG]; - - /* Gas heater related coefficients */ - dev->calib.par_gh1 = (int8_t) coeff_array[BME680_GH1_REG]; - dev->calib.par_gh2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_GH2_MSB_REG], - coeff_array[BME680_GH2_LSB_REG])); - dev->calib.par_gh3 = (int8_t) coeff_array[BME680_GH3_REG]; - - /* Other coefficients */ - uint8_t temp_var = 0; /* Temporary variable */ - - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_RANGE_ADDR, &temp_var, 1, dev); - - dev->calib.res_heat_range = ((temp_var & BME680_RHRANGE_MSK) / 16); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_VAL_ADDR, &temp_var, 1, dev); - - dev->calib.res_heat_val = (int8_t) temp_var; - if (rslt == BME680_OK) - rslt = bme680_get_regs(BME680_ADDR_RANGE_SW_ERR_ADDR, &temp_var, 1, dev); - } - } - dev->calib.range_sw_err = ((int8_t) temp_var & (int8_t) BME680_RSERROR_MSK) / 16; - } - - return rslt; -} - -/*! - * @brief This internal API is used to set the gas configuration of the sensor. - */ -static int8_t set_gas_config(struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - - uint8_t reg_addr[2], reg_data[2]; - - if (dev->power_mode == BME680_FORCED_MODE) { - reg_addr[0] = BME680_RES_HEAT0_ADDR; - reg_data[0] = calc_heater_res(dev->gas_sett.heatr_temp, dev); - reg_addr[1] = BME680_GAS_WAIT0_ADDR; - reg_data[1] = calc_heater_dur(dev->gas_sett.heatr_dur); - dev->gas_sett.nb_conv = 0; - } else { - rslt = BME680_W_DEFINE_PWR_MODE; - } - if (rslt == BME680_OK) - rslt = bme680_set_regs(reg_addr, reg_data, 2, dev); - } - - return rslt; -} - -/*! - * @brief This internal API is used to get the gas configuration of the sensor. - */ -static int8_t get_gas_config(struct bme680_dev *dev) -{ - int8_t rslt; - /* starting address of the register array for burst read*/ - uint8_t reg_addr1 = BME680_ADDR_SENS_CONF_START; - uint8_t reg_addr2 = BME680_ADDR_GAS_CONF_START; - uint8_t data_array[BME680_GAS_HEATER_PROF_LEN_MAX] = { 0 }; - uint8_t index; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (BME680_SPI_INTF == dev->intf) { - /* Memory page switch the SPI address*/ - rslt = set_mem_page(reg_addr1, dev); - } - - if (rslt == BME680_OK) { - rslt = bme680_get_regs(reg_addr1, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); - if (rslt == BME680_OK) { - for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) - dev->gas_sett.heatr_temp = data_array[index]; - } - - rslt = bme680_get_regs(reg_addr2, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); - if (rslt == BME680_OK) { - for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) - dev->gas_sett.heatr_dur = data_array[index]; - } - } - } - - return rslt; -} - -/*! - * @brief This internal API is used to calculate the temperature value. - */ -static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev) -{ - int64_t var1; - int64_t var2; - int64_t var3; - int16_t calc_temp; - - var1 = ((int32_t) temp_adc / 8) - ((int32_t) dev->calib.par_t1 * 2); - var2 = (var1 * (int32_t) dev->calib.par_t2) / 2048; - var3 = ((var1 / 2) * (var1 / 2)) / 4096; - var3 = ((var3) * ((int32_t) dev->calib.par_t3 * 16)) / 16384; - dev->calib.t_fine = (int32_t) (var2 + var3); - calc_temp = (int16_t) (((dev->calib.t_fine * 5) + 128) / 256); - - return calc_temp; -} - -/*! - * @brief This internal API is used to calculate the pressure value. - */ -static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) -{ - int32_t var1; - int32_t var2; - int32_t var3; - int32_t calc_pres; - - var1 = (((int32_t) dev->calib.t_fine) / 2) - 64000; - var2 = ((var1 / 4) * (var1 / 4)) / 2048; - var2 = ((var2) * (int32_t) dev->calib.par_p6) / 4; - var2 = var2 + ((var1 * (int32_t) dev->calib.par_p5) * 2); - var2 = (var2 / 4) + ((int32_t) dev->calib.par_p4 * 65536); - var1 = ((var1 / 4) * (var1 / 4)) / 8192; - var1 = (((var1) * ((int32_t) dev->calib.par_p3 * 32)) / 8) + (((int32_t) dev->calib.par_p2 * var1) / 2); - var1 = var1 / 262144; - var1 = ((32768 + var1) * (int32_t) dev->calib.par_p1) / 32768; - calc_pres = (int32_t) (1048576 - pres_adc); - calc_pres = (int32_t) ((calc_pres - (var2 / 4096)) * (3125)); - calc_pres = ((calc_pres / var1) * 2); - var1 = ((int32_t) dev->calib.par_p9 * (int32_t) (((calc_pres / 8) * (calc_pres / 8)) / 8192)) / 4096; - var2 = ((int32_t) (calc_pres / 4) * (int32_t) dev->calib.par_p8) / 8192; - var3 = ((int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) - * (int32_t) dev->calib.par_p10) / 131072; - calc_pres = (int32_t) (calc_pres) + ((var1 + var2 + var3 + ((int32_t) dev->calib.par_p7 * 128)) / 16); - - return (uint32_t) calc_pres; -} - -/*! - * @brief This internal API is used to calculate the humidity value. - */ -static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev) -{ - int32_t var1; - int32_t var2; - int32_t var3; - int32_t var4; - int32_t var5; - int32_t var6; - int32_t temp_scaled; - int32_t calc_hum; - - temp_scaled = (((int32_t) dev->calib.t_fine * 5) + 128) / 256; - var1 = (int32_t) (hum_adc - ((int32_t) ((int32_t) dev->calib.par_h1 * 16))) - - (((temp_scaled * (int32_t) dev->calib.par_h3) / ((int32_t) 100)) / 2); - var2 = ((int32_t) dev->calib.par_h2 - * (((temp_scaled * (int32_t) dev->calib.par_h4) / ((int32_t) 100)) - + (((temp_scaled * ((temp_scaled * (int32_t) dev->calib.par_h5) / ((int32_t) 100))) / 64) - / ((int32_t) 100)) + (int32_t) (1 * 16384))) / 1024; - var3 = var1 * var2; - var4 = (int32_t) dev->calib.par_h6 * 128; - var4 = ((var4) + ((temp_scaled * (int32_t) dev->calib.par_h7) / ((int32_t) 100))) / 16; - var5 = ((var3 / 16384) * (var3 / 16384)) / 1024; - var6 = (var4 * var5) / 2; - calc_hum = (((var3 + var6) / 1024) * ((int32_t) 1000)) / 4096; - - if (calc_hum > 100000) /* Cap at 100%rH */ - calc_hum = 100000; - else if (calc_hum < 0) - calc_hum = 0; - - return (uint32_t) calc_hum; -} - -/*! - * @brief This internal API is used to calculate the Gas Resistance value. - */ -static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev) -{ - int64_t var1; - uint64_t var2; - int64_t var3; - uint32_t calc_gas_res; - - var1 = (int64_t) ((1340 + (5 * (int64_t) dev->calib.range_sw_err)) * ((int64_t) lookupTable1[gas_range])) / 65536; - var2 = (((int64_t) ((int64_t) gas_res_adc * 32768) - (int64_t) (16777216)) + var1); - var3 = (((int64_t) lookupTable2[gas_range] * (int64_t) var1) / 512); - calc_gas_res = (uint32_t) ((var3 + ((int64_t) var2 / 2)) / (int64_t) var2); - - return calc_gas_res; -} - -/*! - * @brief This internal API is used to calculate the Heat Resistance value. - */ -static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev) -{ - uint8_t heatr_res; - int32_t var1; - int32_t var2; - int32_t var3; - int32_t var4; - int32_t var5; - int32_t heatr_res_x100; - - if (temp < 200) /* Cap temperature */ - temp = 200; - else if (temp > 400) - temp = 400; - - var1 = (((int32_t) dev->amb_temp * dev->calib.par_gh3) / 1000) * 256; - var2 = (dev->calib.par_gh1 + 784) * (((((dev->calib.par_gh2 + 154009) * temp * 5) / 100) + 3276800) / 10); - var3 = var1 + (var2 / 2); - var4 = (var3 / (dev->calib.res_heat_range + 4)); - var5 = (131 * dev->calib.res_heat_val) + 65536; - heatr_res_x100 = (int32_t) (((var4 / var5) - 250) * 34); - heatr_res = (uint8_t) ((heatr_res_x100 + 50) / 100); - - return heatr_res; -} - -/*! - * @brief This internal API is used to calculate the Heat duration value. - */ -static uint8_t calc_heater_dur(uint16_t dur) -{ - uint8_t factor = 0; - uint8_t durval; - - if (dur >= 0xfc0) { - durval = 0xff; /* Max duration*/ - } else { - while (dur > 0x3F) { - dur = dur / 4; - factor += 1; - } - durval = (uint8_t) (dur + (factor * 64)); - } - - return durval; -} - -/*! - * @brief This internal API is used to calculate the field data of sensor. - */ -static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t buff[BME680_FIELD_LENGTH] = { 0 }; - uint8_t gas_range; - uint32_t adc_temp; - uint32_t adc_pres; - uint16_t adc_hum; - uint16_t adc_gas_res; - uint8_t tries = 10; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - do { - if (rslt == BME680_OK) { - rslt = bme680_get_regs(((uint8_t) (BME680_FIELD0_ADDR)), buff, (uint16_t) BME680_FIELD_LENGTH, dev); - - data->status = buff[0] & BME680_NEW_DATA_MSK; - data->gas_index = buff[0] & BME680_GAS_INDEX_MSK; - data->meas_index = buff[1]; - - /* read the raw data from the sensor */ - adc_pres = (uint32_t) (((uint32_t) buff[2] * 4096) | ((uint32_t) buff[3] * 16) | ((uint32_t) buff[4] / 16)); - adc_temp = (uint32_t) (((uint32_t) buff[5] * 4096) | ((uint32_t) buff[6] * 16) | ((uint32_t) buff[7] / 16)); - adc_hum = (uint16_t) (((uint32_t) buff[8] * 256) | (uint32_t) buff[9]); - adc_gas_res = (uint16_t) ((uint32_t) buff[13] * 4 | (((uint32_t) buff[14]) / 64)); - gas_range = buff[14] & BME680_GAS_RANGE_MSK; - - data->status |= buff[14] & BME680_GASM_VALID_MSK; - data->status |= buff[14] & BME680_HEAT_STAB_MSK; - - if (data->status & BME680_NEW_DATA_MSK) { - data->temperature = calc_temperature(adc_temp, dev); - data->pressure = calc_pressure(adc_pres, dev); - data->humidity = calc_humidity(adc_hum, dev); - data->gas_resistance = calc_gas_resistance(adc_gas_res, gas_range, dev); - break; - } else { - dev->delay_ms(BME680_POLL_PERIOD_MS); - } - } - tries--; - } while (tries); - - if (!tries) - rslt = BME680_W_NO_NEW_DATA; - - return rslt; -} - -/*! - * @brief This internal API is used to set the memory page based on register address. - */ -static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg; - uint8_t mem_page; - - /* Check for null pointers in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (reg_addr > 0x7f) - mem_page = BME680_MEM_PAGE1; - else - mem_page = BME680_MEM_PAGE0; - - if (mem_page != dev->mem_page) { - dev->mem_page = mem_page; - - dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - - if (rslt == BME680_OK) { - reg = reg & (~BME680_MEM_PAGE_MSK); - reg = reg | (dev->mem_page & BME680_MEM_PAGE_MSK); - - dev->com_rslt = dev->write(dev->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - } - } - - return rslt; -} - -/*! - * @brief This internal API is used to get the memory page based on register address. - */ -static int8_t get_mem_page(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - else - dev->mem_page = reg & BME680_MEM_PAGE_MSK; - } - - return rslt; -} - -/*! - * @brief This internal API is used to validate the boundary - * conditions. - */ -static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev) -{ - int8_t rslt = BME680_OK; - - if (value != NULL) { - /* Check if value is below minimum value */ - if (*value < min) { - /* Auto correct the invalid value to minimum value */ - *value = min; - dev->info_msg |= BME680_I_MIN_CORRECTION; - } - /* Check if value is above maximum value */ - if (*value > max) { - /* Auto correct the invalid value to maximum value */ - *value = max; - dev->info_msg |= BME680_I_MAX_CORRECTION; - } - } else { - rslt = BME680_E_NULL_PTR; - } - - return rslt; -} - -/*! - * @brief This internal API is used to validate the device structure pointer for - * null conditions. - */ -static int8_t null_ptr_check(const struct bme680_dev *dev) -{ - int8_t rslt; - - if ((dev == NULL) || (dev->read == NULL) || (dev->write == NULL) || (dev->delay_ms == NULL)) { - /* Device structure pointer is not valid */ - rslt = BME680_E_NULL_PTR; - } else { - /* Device structure is fine */ - rslt = BME680_OK; - } - - return rslt; -} From 2642944175c9f8ca17f4bb370d2bacc06c1f49dd Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:32 +0200 Subject: [PATCH 33/41] Delete README.md --- extras/bme680/README.md | 341 ---------------------------------------- 1 file changed, 341 deletions(-) delete mode 100644 extras/bme680/README.md diff --git a/extras/bme680/README.md b/extras/bme680/README.md deleted file mode 100644 index e870f76..0000000 --- a/extras/bme680/README.md +++ /dev/null @@ -1,341 +0,0 @@ -# Driver for BME680 digital temperature and humidity sensor - -This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). - -Please note: - -1. The driver supports multiple sensors that are connected either to I2C as well as SPI. - -2. Due to the complexity of the sensor output value compputation based on many calibration parameters, the original Bosch Sensortec BME680 driver that is released as open source [https://github.com/BoschSensortec/BME680_driver] is integrated for internal use. Please note the license of this part, which is an extended BSD license and can be found in each of that source files. - -## About the sensor - -BME680 is an low power environmental sensor that integrates a temperature, a pressure, a humidity and a gas sensor in only one unit. It can be connected to controller using either I2C or SPI. - -### Sensor modes - -BME680 can operate in two different low-level power modes, the *sleep mode* and the *forced mode*. - -#### Sleep mode - -This mode is the default mode. The sensor starts automatically in this mode after power-up sequence. In this mode it does not perform any measurement and therefore just consumes 0.15 μA. - -#### Forced Mode - -Using the mode switch command, the sensor switches from sleep mode into the forced mode. In this mode, temperature, pressure, humidity and gas measurements are performed sequentially exactly once. Such a measurement cycle is also called TPHG (Temperature, Pressure, Humidity and Gas). - -Each of these measurements can be influenced, activated or skipped separately via the sensor settings, see section **Measurement settings**. - -### Measurement settings - -The sensor allows to change different measurement parameters. - -#### Oversampling rates - -For temperature, pressure, and humidity measurements, it is possible by the user task to individually define different over-sampling rates for each of these measurements. Possible over-sampling rates are 1x (default by the driver) 2x, 4x, 8x and 16x. - -It is also possible to define an oversampling rate of 0. This deactivates the corresponding measurement and the output values become invalid. - -#### IIR Filter - -The sensor integrates an internal IIR filter (low pass filter) to reduce short-term changes in sensor output values caused by external disturbances. It effectively reduces the bandwidth of the sensor output values. - -The filter can optionally be used for pressure and temperature data that are subject to many short-term changes. Humidity and gas inside the sensor does not fluctuate rapidly and does not require such a low pass filtering. - -The user task can change the size of the filter. The default size is 3. If the size of the filter becomes 0, the filter is not used. - -#### Heater profile - -For gas measurement the sensor integrates a heater. The paremeters for this heater are defined by a heater profile. Such a heater profile consists of a temperature setting point (the target temperature) and the heating duration. - -Even though the sensor supports up to 10 different such profiles at them same time, only one profile is used by the driver for simplicity reasons. The temperature setting point and the heating duration of this one profile can be defined by the user task. Default values used by the driver are 320 degree Celcius as target temperature and 150 ms heating duration. - -According to the datasheet, target temperatures of between 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary for the heater to reach the desired target temperature. - -If heating duration is 0 ms, the gas measurement is skipped and output values become invalid. - -### Communication interfaces - -The sensor can be connected using I2C or SPI. The driver support both communication interfaces. - -The I2C interface supports the Standard, Fast and High Speed modes up to 3.4 Mbps. It is possible to connect multiple BME680 with two different I2C slave addresses (0x76 and 0x77) to one I2C bus or with same I2C addresses to different I2C busses. - -The SPI interface allows clock rates up to 10 MHz and SPI modes '00' (CPOL=CPHA=0) and '11' (CPOL=CPHA=1). - -Interface selection is done automatically using the CS signal. As long as the CS signal keeps high after power-on reset, the I2C interface is used. Once the CS signal has been pulled down, SPI interface is used until next power-on reset. - -## How the driver works - -To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These background tasks are created implicitly when a user task calls function *bme680_create_sensor* for each connected BME680 sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *bme680_set_measurement_period* (default period is 1000 ms). - -### Measurement method - -The driver triggers a measurement cycle using functions of the original Bosch Sensortec BME680 driver, which has been released as open source [https://github.com/BoschSensortec/BME680_driver] and is integrated for internal use. These functions call up recall functions of the driver which implement the communication with the sensor. - -The duration of a THPG measuring cycle can vary from a few milliseconds to a half a second, depending on which measurements of the THPG measuring cycle are activated and the measurement settings such as the oversampling rate and heating profile as well as sensor value processing parameters such as the IIR filter size. - -Therefore, the measurement period should be not less than 1 second. - -### Measured data - -At each measurement, *actual sensor values* for temperature, pressure, humidity as well as gas are determined as floating point values from the measured data sets. Temperature is given in °C, pressure in hectopascals, Humidity in percent and gas is given in Ohm representing the resistance of sensor's gas sensitive layer. - -If average value computation is enabled (default), the background task also computes successively at each measurement the *average sensor values* based on these *actual sensor values* using the exponential moving average - - Average[k] = W * Actual + (1-W) * Average [k-1] - -where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function *bme680_set_average_weight*. The default value of W is 0.2. The average value computation can be enabled or disabled using function *bme680_enable_average_computation*. - -If average computation is disabled, *average sensor values* correspond to the *actual sensor values*. - -### Getting results. - -As soon as a measurement is completed, the actual sensor values * and * average sensor values * can be read by user tasks. There are two ways to do this: - -- define a callback function or -- call the function * bme680_get_values * explicitly. - -#### Using callback function - -For each connected BME680 sensor, the user task can register a callback function using function *bme680_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. - -Using the callback function is the easiest way to get the results. - -#### Using function bme680_get_values - -If no recall function is registered, the user task must call *bme680_get_values* to get the *current sensor values* and *average sensor values*. These values are stored in data structures of type *bme680_value_set_t*, which are passed as pointer parameters to the function. By NULL pointers for one of these parameters, the user task can decide which results are not interesting. - -To ensure that the actual and average sensor values are up-to-date, the rate of periodic measurements realized by the background task should be at least equal to or higher than the rate of calling the function *bme680_get_values*. That is, the measurement period in the background task which is set by function *bme680_set_measurement_period* must be less than or equal to the rate of calling function *bme680_get_values*. - -Please note: If gas measurement is activated, the measuring period should be at least 1 second. - -## Usage - -First, the hardware configuration has to be establisch. This can differ dependent on the communication interface and the number of sensors to be used. - -### Hardware configuration - -First figure shows a possible configuration with only one I2C busses. - -``` - +------------------------+ +--------+ - | ESP8266 Bus 0 | | BME680 | - | GPIO 5 (SCL) +---->+ SCL | - | GPIO 4 (SDA) +-----+ SDA | - | | +--------+ - +------------------------+ -``` -Next figure shows a possible configuration with two I2C busses. - -``` - +------------------------+ +----------+ - | ESP8266 Bus 0 | | BME680_1 | - | GPIO 5 (SCL) ------> SCL | - | GPIO 4 (SDA) ------- SDA | - | | +----------+ - | Bus 1 | | BME680_2 | - | GPIO 12 (SCL) ------> SCL | - | GPIO 14 (SDA) ------- SDA | - +------------------------+ +----------+ -``` - -Last figure shows a possible configuration using SPI bus 1. - - +-------------------------+ +--------+ - | ESP8266 Bus 0 | | BME680 | - | GPIO 12 (MISO) <------ SDO | - | GPIO 13 (MOSI) >-----> SDA | - | GPIO 14 (SCK) >-----> SCK | - | GPIO 2 (CS) >-----> CS | - +-------------------------+ +--------+ - -Please note: - -1. Since the system flash memory is connected to SPI bus 0, the sensor has to be connected to SPI bus 1. - -2. GPIO15 used as CS signal of SPI bus 1 by default, does not work correctly together with BME680's signal. Therefore, the user has to specify another GPIO pin as CS signal when the sensor is created, e.g. GPIO2. - -### Communication interface dependent part - -According to the hardware configuration, some constants should be defined, e.g. for -only one I2C and the SPI. - -``` -#define I2C_BUS 0 -#define I2C_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_SDA_PIN GPIO_ID_PIN((4)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -#define SPI_BUS 1 -#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used -``` -Only in case of I2C, the I2C driver has to initialized before it can be used. This is not neccessary for SPI. - -``` -... -i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)) -``` - -Next, the BME680 driver itself has to be initialized using function *bme680_init*. This is independent on the communication interface. - -``` -bme680_init_driver(); -``` - -If BME680 driver initialization was successful, function *bme680_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. - -In the case of I2C interface, this call looks like following. The last parameter is the SPI CS signal pin is ignored in case of I2C. - -``` -sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); -``` - -For SPI the call looks like this. The second parameter is the I2C slave address, that is invalid. It is used by function *bme680_create_sensor* to determine the communication infertace to be used. In cas of SPI, the GPIO for CS signal has to be specified. - -``` - sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); -``` - -On success this function returns the *ID* of a sensor descriptor between 0 and *BME680_MAX_SENSORS* or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. - -The remaining part of the software is independent on the communication interface. - -If you want to use a callback function defined like following to get the measurement results - -``` -static void my_callback_function (uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average) -{ - ... -} -``` - -You have to register this callback function using *bme680_set_callback_function*. - -``` -bme680_set_callback_function (sensor, &my_callback_function); -``` - -Optionally, you could wish to set some measurement parameters. For details see the section **Measurement settings** above, the header file of the driver **bme680_driver.h**, and of course the datasheet of the sensor. - -``` -// Change the period of measurements (default 1000 ms) to 500 ms. -bme680_set_measurement_period (sensor, 500); - -// Changes the oversampling rates (default os_1x) to 4x oversampling for -// temperature and 2x oversampling for pressure. Humidity measurement is -// skipped. -bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - -// Change the IIR filter size (default iir_size_3) for temperature and -// and pressure to 7. -bme680_set_filter_size(sensor, iir_size_7); - -// Change the heaeter profile (default 320 degree Celcius for 150 ms) to -// 200 degree Celcius for 100 ms. -bme680_set_heater_profile (sensor, 200, 100); -``` - -All functions return a boolean that allows effective error handling. - -## Full Example for one sensor connected to I2C bus - -``` - -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" - -// include BME680 driver -#include "bme680/bme680_drv.h" - -// define I2C interfaces at which BME680 sensors can be connected -#define I2C_BUS 0 -#define I2C_SCL_PIN GPIO_ID_PIN((5)) -#define I2C_SDA_PIN GPIO_ID_PIN((4)) - -#define BME680_ADDR1 0x76 -#define BME680_ADDR2 0x77 // default - -static uint32_t sensor; - -/** - * Everything you need is a callback function that can handle - * callbacks from the background measurement task of the - * BME680 driver. This function is called periodically - * and delivers the actual and average sensor value sets for - * given sensor. - */ - -static void my_callback_function (uint32_t sensor, - bme680_value_set_t actual, - bme680_value_set_t average) -{ - printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", - (double)sdk_system_get_time()*1e-3, sensor, - actual.temperature, average.temperature, - actual.humidity, average.humidity, - actual.pressure, average.pressure, - actual.gas, average.gas); -} - - -void user_init(void) -{ - // Set UART Parameter - uart_set_baud(0, 115200); - // Give the UART some time to settle - sdk_os_delay_us(500); - - /** Please note: - * Function *bme680_create_sensor* returns a value greater or equal 0 - * on succes, all other *bme680_* functions return true on success. Using - * these return values, you could realize an error handling. Error - * handling is not realized in this example due to readability reasons. - */ - - /** -- MANDATORY PART -- */ - - // Init all I2C bus interfaces at which BME680 sensors are connected - i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); - - // Init BME680 driver itself. - bme680_init_driver(); - - // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to - // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. - sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); - - // Register the callback function to get measurement results. - bme680_set_callback_function (sensor, &my_callback_function); - - // That's it. - - /** -- OPTIONAL PART -- */ - - // Change the period of measurements (default 1000 ms) to 500 ms. - bme680_set_measurement_period (sensor, 500); - - // Changes the oversampling rates (default os_1x) to 4x oversampling for - // temperature and 2x oversampling for pressure. Humidity measurement is - // skipped. - bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); - - // Change the IIR filter size (default iir_size_3) for temperature and - // and pressure to 7. - bme680_set_filter_size(sensor, iir_size_7); - - // Change the heaeter profile (default 320 degree Celcius for 150 ms) to - // 200 degree Celcius for 100 ms. - bme680_set_heater_profile (sensor, 200, 100); -} -``` - -## Further Examples - -For further examples see [examples directory](../../examples/bme680/README.md) - - From f586d73d2958d9e6bfc23ac7ef4747a01ed7a839 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:40 +0200 Subject: [PATCH 34/41] Delete component.mk --- extras/bme680/component.mk | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 extras/bme680/component.mk diff --git a/extras/bme680/component.mk b/extras/bme680/component.mk deleted file mode 100644 index f890ad0..0000000 --- a/extras/bme680/component.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Component makefile for extras/bme60 - -# expected anyone using bme680 driver includes it as 'bme680/bme680.h' -INC_DIRS += $(bme680_ROOT).. - -# args for passing into compile rule generation -bme680_SRC_DIR = $(bme680_ROOT) - -$(eval $(call component_compile_rules,bme680)) From 750b64c8c8c304d89b60b6ec9c728740ee7d1dd0 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:50 +0200 Subject: [PATCH 35/41] Delete bme680.h --- extras/bme680/bme680.h | 225 ----------------------------------------- 1 file changed, 225 deletions(-) delete mode 100644 extras/bme680/bme680.h diff --git a/extras/bme680/bme680.h b/extras/bme680/bme680.h deleted file mode 100644 index 38b8628..0000000 --- a/extras/bme680/bme680.h +++ /dev/null @@ -1,225 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bme680.h - * @date 5 Jul 2017 - * @version 3.5.1 - * @brief - * - */ -/*! @file bme680.h - @brief Sensor driver for BME680 sensor */ -/*! - * @defgroup BME680 SENSOR API - * @{*/ -#ifndef BME680_H_ -#define BME680_H_ - -/*! CPP guard */ -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Header includes */ -#include "bme680_defs.h" - -/* function prototype declarations */ -/*! - * @brief This API is the entry point. - * It reads the chip-id and calibration data from the sensor. - * - * @param[in,out] dev : Structure instance of bme680_dev - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_init(struct bme680_dev *dev); - -/*! - * @brief This API writes the given data to the register address - * of the sensor. - * - * @param[in] reg_addr : Register address from where the data to be written. - * @param[in] reg_data : Pointer to data buffer which is to be written - * in the sensor. - * @param[in] len : No of bytes of data to write.. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev); - -/*! - * @brief This API reads the data from the given register address of the sensor. - * - * @param[in] reg_addr : Register address from where the data to be read - * @param[out] reg_data : Pointer to data buffer to store the read data. - * @param[in] len : No of bytes of data to be read. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev); - -/*! - * @brief This API performs the soft reset of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_soft_reset(struct bme680_dev *dev); - -/*! - * @brief This API is used to set the power mode of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev - * @note : Pass the value to bme680_dev.power_mode structure variable. - * - * value | mode - * -------------|------------------ - * 0x00 | BME680_SLEEP_MODE - * 0x01 | BME680_FORCED_MODE - * - * * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_set_sensor_mode(struct bme680_dev *dev); - -/*! - * @brief This API is used to get the power mode of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev - * @note : bme680_dev.power_mode structure variable hold the power mode. - * - * value | mode - * ---------|------------------ - * 0x00 | BME680_SLEEP_MODE - * 0x01 | BME680_FORCED_MODE - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_sensor_mode(struct bme680_dev *dev); - -/*! - * @brief This API is used to set the profile duration of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] duration : Duration of the measurement in ms. - * - * @return Nothing - */ -void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev); - -/*! - * @brief This API is used to get the profile duration of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] duration : Duration of the measurement in ms. - * - * @return Nothing - */ -void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev); - -/*! - * @brief This API reads the pressure, temperature and humidity and gas data - * from the sensor, compensates the data and store it in the bme680_data - * structure instance passed by the user. - * - * @param[out] data: Structure instance to hold the data. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev); - -/*! - * @brief This API is used to set the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] desired_settings : Variable used to select the settings which - * are to be set in the sensor. - * - * Macros | Functionality - *-------------------------|---------------------------------------------- - * BME680_OST_SEL | To set temperature oversampling. - * BME680_OSP_SEL | To set pressure oversampling. - * BME680_OSH_SEL | To set humidity oversampling. - * BME680_GAS_MEAS_SEL | To set gas measurement setting. - * BME680_FILTER_SEL | To set filter setting. - * BME680_HCNTRL_SEL | To set humidity control setting. - * BME680_RUN_GAS_SEL | To set run gas setting. - * BME680_NBCONV_SEL | To set NB conversion setting. - * BME680_GAS_SENSOR_SEL | To set all gas sensor related settings - * - * @note : Below are the macros to be used by the user for selecting the - * desired settings. User can do OR operation of these macros for configuring - * multiple settings. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); - -/*! - * @brief This API is used to get the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] desired_settings : Variable used to select the settings which - * are to be get from the sensor. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); -#ifdef __cplusplus -} -#endif /* End of CPP guard */ -#endif /* BME680_H_ */ -/** @}*/ From 3f1e254122cebedc0250755be5d31ffc896d47fb Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 20:50:59 +0200 Subject: [PATCH 36/41] Delete bme680_defs.h --- extras/bme680/bme680_defs.h | 529 ------------------------------------ 1 file changed, 529 deletions(-) delete mode 100644 extras/bme680/bme680_defs.h diff --git a/extras/bme680/bme680_defs.h b/extras/bme680/bme680_defs.h deleted file mode 100644 index 4ef701f..0000000 --- a/extras/bme680/bme680_defs.h +++ /dev/null @@ -1,529 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bme680_defs.h - * @date 5 Jul 2017 - * @version 3.5.1 - * @brief - * - */ - -/*! @file bme680_defs.h - @brief Sensor driver for BME680 sensor */ -/*! - * @defgroup BME680 SENSOR API - * @brief - * @{*/ -#ifndef BME680_DEFS_H_ -#define BME680_DEFS_H_ - -/********************************************************/ -/* header includes */ -#ifdef __KERNEL__ -#include -#else -#include -#endif - -#ifdef __KERNEL__ -#if (LONG_MAX) > 0x7fffffff -#define __have_long64 1 -#elif (LONG_MAX) == 0x7fffffff -#define __have_long32 1 -#endif - -#if !defined(UINT8_C) -#define INT8_C(x) x -#if (INT_MAX) > 0x7f -#define UINT8_C(x) x -#else -#define UINT8_C(x) x##U -#endif -#endif - -#if !defined(UINT16_C) -#define INT16_C(x) x -#if (INT_MAX) > 0x7fff -#define UINT16_C(x) x -#else -#define UINT16_C(x) x##U -#endif -#endif - -#if !defined(INT32_C) && !defined(UINT32_C) -#if __have_long32 -#define INT32_C(x) x##L -#define UINT32_C(x) x##UL -#else -#define INT32_C(x) x -#define UINT32_C(x) x##U -#endif -#endif - -#if !defined(INT64_C) && !defined(UINT64_C) -#if __have_long64 -#define INT64_C(x) x##L -#define UINT64_C(x) x##UL -#else -#define INT64_C(x) x##LL -#define UINT64_C(x) x##ULL -#endif -#endif -#endif -/**@}*/ - -/**\name C standard macros */ -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *) 0) -#endif -#endif - -/** BME680 General config */ -#define BME680_POLL_PERIOD_MS UINT8_C(10) - -/** BME680 I2C addresses */ -#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76) -#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77) - -/** BME680 unique chip identifier */ -#define BME680_CHIP_ID UINT8_C(0x61) - -/** BME680 coefficients related defines */ -#define BME680_COEFF_SIZE UINT8_C(0x41) -#define BME680_COEFF_ADDR1_LEN UINT8_C(25) -#define BME680_COEFF_ADDR2_LEN UINT8_C(16) - -/** BME680 field_x related defines */ -#define BME680_FIELD_LENGTH UINT8_C(15) -#define BME680_FIELD_ADDR_OFFSET UINT8_C(17) - -/** Soft reset command */ -#define BME680_SOFT_RESET_CMD UINT8_C(0xb6) - -/** Error code definitions */ -#define BME680_OK INT8_C(0) -/* Errors */ -#define BME680_E_NULL_PTR INT8_C(-1) -#define BME680_E_COM_FAIL INT8_C(-2) -#define BME680_E_DEV_NOT_FOUND INT8_C(-3) -#define BME680_E_INVALID_LENGTH INT8_C(-4) - -/* Warnings */ -#define BME680_W_DEFINE_PWR_MODE INT8_C(1) -#define BME680_W_NO_NEW_DATA INT8_C(2) - -/* Info's */ -#define BME680_I_MIN_CORRECTION UINT8_C(1) -#define BME680_I_MAX_CORRECTION UINT8_C(2) - -/** Register map */ -/** Other coefficient's address */ -#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00) -#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02) -#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04) -#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A) -#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64) - -/** Field settings */ -#define BME680_FIELD0_ADDR UINT8_C(0x1d) - -/** Heater settings */ -#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a) -#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64) - -/** Sensor configuration registers */ -#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70) -#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71) -#define BME680_CONF_OS_H_ADDR UINT8_C(0x72) -#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3) -#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74) -#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75) - -/** Coefficient's address */ -#define BME680_COEFF_ADDR1 UINT8_C(0x89) -#define BME680_COEFF_ADDR2 UINT8_C(0xe1) - -/** Chip identifier */ -#define BME680_CHIP_ID_ADDR UINT8_C(0xd0) - -/** Soft reset register */ -#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0) - -/** Heater control settings */ -#define BME680_ENABLE_HEATER UINT8_C(0x00) -#define BME680_DISABLE_HEATER UINT8_C(0x08) - -/** Gas measurement settings */ -#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00) -#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01) - -/** Over-sampling settings */ -#define BME680_OS_NONE UINT8_C(0) -#define BME680_OS_1X UINT8_C(1) -#define BME680_OS_2X UINT8_C(2) -#define BME680_OS_4X UINT8_C(3) -#define BME680_OS_8X UINT8_C(4) -#define BME680_OS_16X UINT8_C(5) - -/** IIR filter settings */ -#define BME680_FILTER_SIZE_0 UINT8_C(0) -#define BME680_FILTER_SIZE_1 UINT8_C(1) -#define BME680_FILTER_SIZE_3 UINT8_C(2) -#define BME680_FILTER_SIZE_7 UINT8_C(3) -#define BME680_FILTER_SIZE_15 UINT8_C(4) -#define BME680_FILTER_SIZE_31 UINT8_C(5) -#define BME680_FILTER_SIZE_63 UINT8_C(6) -#define BME680_FILTER_SIZE_127 UINT8_C(7) - -/** Power mode settings */ -#define BME680_SLEEP_MODE UINT8_C(0) -#define BME680_FORCED_MODE UINT8_C(1) - -/** Delay related macro declaration */ -#define BME680_RESET_PERIOD UINT32_C(10) - -/** SPI memory page settings */ -#define BME680_MEM_PAGE0 UINT8_C(0x10) -#define BME680_MEM_PAGE1 UINT8_C(0x00) - -/** Ambient humidity shift value for compensation */ -#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4) - -/** Run gas enable and disable settings */ -#define BME680_RUN_GAS_DISABLE UINT8_C(0) -#define BME680_RUN_GAS_ENABLE UINT8_C(1) - -/** Buffer length macro declaration */ -#define BME680_TMP_BUFFER_LENGTH UINT8_C(40) -#define BME680_REG_BUFFER_LENGTH UINT8_C(6) -#define BME680_FIELD_DATA_LENGTH UINT8_C(3) -#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20) -#define BME680_GAS_HEATER_PROF_LEN_MAX UINT8_C(10) - -/** Settings selector */ -#define BME680_OST_SEL UINT16_C(1) -#define BME680_OSP_SEL UINT16_C(2) -#define BME680_OSH_SEL UINT16_C(4) -#define BME680_GAS_MEAS_SEL UINT16_C(8) -#define BME680_FILTER_SEL UINT16_C(16) -#define BME680_HCNTRL_SEL UINT16_C(32) -#define BME680_RUN_GAS_SEL UINT16_C(64) -#define BME680_NBCONV_SEL UINT16_C(128) -#define BME680_GAS_SENSOR_SEL UINT16_C(BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL) - -/** Number of conversion settings*/ -#define BME680_NBCONV_MIN UINT8_C(0) -#define BME680_NBCONV_MAX UINT8_C(10) - -/** Mask definitions */ -#define BME680_GAS_MEAS_MSK UINT8_C(0x30) -#define BME680_NBCONV_MSK UINT8_C(0X0F) -#define BME680_FILTER_MSK UINT8_C(0X1C) -#define BME680_OST_MSK UINT8_C(0XE0) -#define BME680_OSP_MSK UINT8_C(0X1C) -#define BME680_OSH_MSK UINT8_C(0X07) -#define BME680_HCTRL_MSK UINT8_C(0x08) -#define BME680_RUN_GAS_MSK UINT8_C(0x10) -#define BME680_MODE_MSK UINT8_C(0x03) -#define BME680_RHRANGE_MSK UINT8_C(0x30) -#define BME680_RSERROR_MSK UINT8_C(0xf0) -#define BME680_NEW_DATA_MSK UINT8_C(0x80) -#define BME680_GAS_INDEX_MSK UINT8_C(0x0f) -#define BME680_GAS_RANGE_MSK UINT8_C(0x0f) -#define BME680_GASM_VALID_MSK UINT8_C(0x20) -#define BME680_HEAT_STAB_MSK UINT8_C(0x10) -#define BME680_MEM_PAGE_MSK UINT8_C(0x10) -#define BME680_SPI_RD_MSK UINT8_C(0x80) -#define BME680_SPI_WR_MSK UINT8_C(0x7f) -#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F) - -/** Bit position definitions for sensor settings */ -#define BME680_GAS_MEAS_POS UINT8_C(4) -#define BME680_FILTER_POS UINT8_C(2) -#define BME680_OST_POS UINT8_C(5) -#define BME680_OSP_POS UINT8_C(2) -#define BME680_RUN_GAS_POS UINT8_C(4) - -/** Array Index to Field data mapping for Calibration Data*/ -#define BME680_T2_LSB_REG (1) -#define BME680_T2_MSB_REG (2) -#define BME680_T3_REG (3) -#define BME680_P1_LSB_REG (5) -#define BME680_P1_MSB_REG (6) -#define BME680_P2_LSB_REG (7) -#define BME680_P2_MSB_REG (8) -#define BME680_P3_REG (9) -#define BME680_P4_LSB_REG (11) -#define BME680_P4_MSB_REG (12) -#define BME680_P5_LSB_REG (13) -#define BME680_P5_MSB_REG (14) -#define BME680_P7_REG (15) -#define BME680_P6_REG (16) -#define BME680_P8_LSB_REG (19) -#define BME680_P8_MSB_REG (20) -#define BME680_P9_LSB_REG (21) -#define BME680_P9_MSB_REG (22) -#define BME680_P10_REG (23) -#define BME680_H2_MSB_REG (25) -#define BME680_H2_LSB_REG (26) -#define BME680_H1_LSB_REG (26) -#define BME680_H1_MSB_REG (27) -#define BME680_H3_REG (28) -#define BME680_H4_REG (29) -#define BME680_H5_REG (30) -#define BME680_H6_REG (31) -#define BME680_H7_REG (32) -#define BME680_T1_LSB_REG (33) -#define BME680_T1_MSB_REG (34) -#define BME680_GH2_LSB_REG (35) -#define BME680_GH2_MSB_REG (36) -#define BME680_GH1_REG (37) -#define BME680_GH3_REG (38) - -/** BME680 register buffer index settings*/ -#define BME680_REG_FILTER_INDEX UINT8_C(5) -#define BME680_REG_TEMP_INDEX UINT8_C(4) -#define BME680_REG_PRES_INDEX UINT8_C(4) -#define BME680_REG_HUM_INDEX UINT8_C(2) -#define BME680_REG_NBCONV_INDEX UINT8_C(1) -#define BME680_REG_RUN_GAS_INDEX UINT8_C(1) -#define BME680_REG_HCTRL_INDEX UINT8_C(0) - -/** Macro to combine two 8 bit data's to form a 16 bit data */ -#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb) - -/** Macro to SET and GET BITS of a register */ -#define BME680_SET_BITS(reg_data, bitname, data) \ - ((reg_data & ~(bitname##_MSK)) | \ - ((data << bitname##_POS) & bitname##_MSK)) -#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \ - (bitname##_POS)) - -/** Macro variant to handle the bitname position if it is zero */ -#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \ - ((reg_data & ~(bitname##_MSK)) | \ - (data & bitname##_MSK)) -#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK)) - -/** Type definitions */ -/* - * Generic communication function pointer - * @param[in] dev_id: Place holder to store the id of the device structure - * Can be used to store the index of the Chip select or - * I2C address of the device. - * @param[in] reg_addr: Used to select the register the where data needs to - * be read from or written to. - * @param[in/out] reg_data: Data array to read/write - * @param[in] len: Length of the data array - */ -typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len); - -/* - * Delay function pointer - * @param[in] period: Time period in milliseconds - */ -typedef void (*bme680_delay_fptr_t)(uint32_t period); - -/*! - * @brief Interface selection Enumerations - */ -enum bme680_intf { - /*! SPI interface */ - BME680_SPI_INTF, - /*! I2C interface */ - BME680_I2C_INTF -}; - -/* structure definitions */ -/*! - * @brief Sensor field data structure - */ -struct bme680_field_data { - /*! Contains new_data, gasm_valid & heat_stab */ - uint8_t status; - /*! The index of the heater profile used */ - uint8_t gas_index; - /*! Measurement index to track order */ - uint8_t meas_index; - /*! Temperature in degree celsius x100 */ - int16_t temperature; - /*! Pressure in Pascal */ - uint32_t pressure; - /*! Humidity in % relative humidity x1000 */ - uint32_t humidity; - /*! Gas resistance in Ohms */ - uint32_t gas_resistance; -}; - -/*! - * @brief Structure to hold the Calibration data - */ -struct bme680_calib_data { - /*! Variable to store calibrated humidity data */ - uint16_t par_h1; - /*! Variable to store calibrated humidity data */ - uint16_t par_h2; - /*! Variable to store calibrated humidity data */ - int8_t par_h3; - /*! Variable to store calibrated humidity data */ - int8_t par_h4; - /*! Variable to store calibrated humidity data */ - int8_t par_h5; - /*! Variable to store calibrated humidity data */ - uint8_t par_h6; - /*! Variable to store calibrated humidity data */ - int8_t par_h7; - /*! Variable to store calibrated gas data */ - int8_t par_gh1; - /*! Variable to store calibrated gas data */ - int16_t par_gh2; - /*! Variable to store calibrated gas data */ - int8_t par_gh3; - /*! Variable to store calibrated temperature data */ - uint16_t par_t1; - /*! Variable to store calibrated temperature data */ - int16_t par_t2; - /*! Variable to store calibrated temperature data */ - int8_t par_t3; - /*! Variable to store calibrated pressure data */ - uint16_t par_p1; - /*! Variable to store calibrated pressure data */ - int16_t par_p2; - /*! Variable to store calibrated pressure data */ - int8_t par_p3; - /*! Variable to store calibrated pressure data */ - int16_t par_p4; - /*! Variable to store calibrated pressure data */ - int16_t par_p5; - /*! Variable to store calibrated pressure data */ - int8_t par_p6; - /*! Variable to store calibrated pressure data */ - int8_t par_p7; - /*! Variable to store calibrated pressure data */ - int16_t par_p8; - /*! Variable to store calibrated pressure data */ - int16_t par_p9; - /*! Variable to store calibrated pressure data */ - uint8_t par_p10; - /*! Variable to store t_fine size */ - int32_t t_fine; - /*! Variable to store heater resistance range */ - uint8_t res_heat_range; - /*! Variable to store heater resistance value */ - int8_t res_heat_val; - /*! Variable to store error range */ - int8_t range_sw_err; -}; - -/*! - * @brief BME680 sensor settings structure which comprises of ODR, - * over-sampling and filter settings. - */ -struct bme680_tph_sett { - /*! Humidity oversampling */ - uint8_t os_hum; - /*! Temperature oversampling */ - uint8_t os_temp; - /*! Pressure oversampling */ - uint8_t os_pres; - /*! Filter coefficient */ - uint8_t filter; -}; - -/*! - * @brief BME680 gas sensor which comprises of gas settings - * and status parameters - */ -struct bme680_gas_sett { - /*! Variable to store nb conversion */ - uint8_t nb_conv; - /*! Variable to store heater control */ - uint8_t heatr_ctrl; - /*! Run gas enable value */ - uint8_t run_gas; - /*! Pointer to store heater temperature */ - uint16_t heatr_temp; - /*! Pointer to store duration profile */ - uint16_t heatr_dur; -}; - -/*! - * @brief BME680 device structure - */ -struct bme680_dev { - /*! Chip Id */ - uint8_t chip_id; - /*! Device Id */ - uint8_t dev_id; - /*! SPI/I2C interface */ - enum bme680_intf intf; - /*! Memory page used */ - uint8_t mem_page; - /*! Ambient temperature in Degree C*/ - int8_t amb_temp; - /*! Sensor calibration data */ - struct bme680_calib_data calib; - /*! Sensor settings */ - struct bme680_tph_sett tph_sett; - /*! Gas Sensor settings */ - struct bme680_gas_sett gas_sett; - /*! Sensor power modes */ - uint8_t power_mode; - /*! New sensor fields */ - uint8_t new_fields; - /*! Store the info messages */ - uint8_t info_msg; - /*! Burst read structure */ - bme680_com_fptr_t read; - /*! Burst write structure */ - bme680_com_fptr_t write; - /*! Delay in ms */ - bme680_delay_fptr_t delay_ms; - /*! Communication function result */ - int8_t com_rslt; -}; - -#endif /* BME680_DEFS_H_ */ -/** @}*/ -/** @}*/ From 611e3411c2cdf59669d00162ff8eb71b0297da90 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sun, 1 Oct 2017 01:36:16 +0200 Subject: [PATCH 37/41] Improved documentation for SHT3x driver --- extras/sht3x/README.md | 55 +++++++++++++++++++-------------------- extras/sht3x/component.mk | 2 +- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/extras/sht3x/README.md b/extras/sht3x/README.md index b09e491..9e5e8aa 100644 --- a/extras/sht3x/README.md +++ b/extras/sht3x/README.md @@ -1,69 +1,69 @@ -# Driver for SHT3x digital temperature and humidity sensor +# Driver for **SHT3x** digital temperature and humidity sensor -This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). +This driver is written for usage with the ESP8266 and FreeRTOS using the I2C interface driver ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). Please note: The driver supports multiple sensors connected to different I2C interfaces and different addresses. ## About the sensor -SHT3x is a digital temperature and humidity sensor that uses an I2C interface with up to 1 MHz communication speed. It can operate with three levels of *repeatability* (low, medium and high) in two different modes, the *single shot data acquisition mode* and the *periodic data aquisition mode*. +SHT3x is a digital temperature and humidity sensor that uses an I2C interface with up to 1 MHz communication speed. It can operate with **three levels of repeatability** (low, medium and high) and in two different modes, the **single shot data acquisition mode** and the **periodic data acquisition mode**. ### Single shot data acquisition mode -In this mode, a measurement command triggers the acquisition of one data pair. Each data pair consists of temperature and humidity as 16-bit decimal values. +In this mode, a measurement command triggers the **acquisition of one data pair**. Each data pair consists of temperature and humidity as 16-bit decimal values. The repeatability affects the measurement time as well as the power consumption of the sensor. The measurement takes 3 ms with low repeatability, 5 ms with medium repeatability and 13.5 ms with high repeatability. That is, the measurement produces a noticeable delay in execution. -While the sensor measures at the lowest repeatability, the average current consumption is 800 μA. That is, the higher the reproducibility level, the longer the measurement takes and the higher the power consumption. The sensor consumes only 0.2 μA in standby mode. +While the sensor measures at the lowest repeatability, the average current consumption is 800 μA. That is, the higher the repeatability level, the longer the measurement takes and the higher the power consumption. The sensor consumes only 0.2 μA in standby mode. ### Periodic data acquisition mode -In this mode one issued measurement command yields a stream of data pairs. Each data pair consists of temperature and humidity as 16-bit decimal values. As soon as the measurement command has been sent to the sensor, it itself carries out measurements periodically at a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps). The data pairs can be read with a fetch command at the same rate. +In this mode, one issued measurement command yields a stream of data pairs. Each data pair again consists of temperature and humidity as 16-bit decimal values. As soon as the measurement command has been sent to the sensor, it performs measurements **periodically at a rate of 0.5, 1, 2, 4 or 10 measurements per second (mps)**. The data pairs can be read with a fetch command at the same rate. As in the *single shot data acquisition mode*, the repeatability setting affects both the measurement time and the current consumption of the sensor, see above. ## How the driver works -To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These background tasks are created implicitly when a user task calls function *sht3x_create_sensor* for each connected SHT3x sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *sht3x_set_measurement_period* (default period is 1000 ms). +In order to avoid blocking of user tasks during measurements due to their duration, separate **background tasks** are used for each sensor to **carry out the measurements**. These background tasks are created automatically when a user task calls function **_sht3x_create_sensor_** to initialize a connected SHT3x sensor. For each connected sensor, one background task is created. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function **_sht3x_set_measurement_period_** (default period is 1000 ms). ### Measurement method -Since the predefined rates of *periodic data acquisition mode* of the sensor itself are normally not compatible with user requirements, the measurements are realized by the background task in *single shot data acquisition mode* at the highest level of repeatability. Because of the sensor power characteristics, *single shot data acquisition mode* is more power efficient than using the *periodic data acquisition mode* in most use cases. +Since the predefined rates of *periodic data acquisition mode* of the sensor itself are normally not compatible with user requirements, the **periodic measurements are realized by the background task using the _single shot data acquisition mode_** at the highest level of repeatability. Because of the sensor power characteristics, *single shot data acquisition mode* is more power efficient than using the *periodic data acquisition mode* in most use cases. -However, using the *single shot data acquisition mode* produces a delay of 20 ms for each measurement. This is just the time needed from issuing the measurement command until measured sensor data are available and can be read. Since this delay is realized using *vTaskDelay* function in the background tasks, neither the system nor any user task is blocked during the measurements. +However, using the *single shot data acquisition mode* produces a delay of 20 ms for each measurement. This is just the time needed from issuing the measurement command until measured sensor data are available and can be read. Since this delay is realized using **_vTaskDelay_** function in the background tasks, **neither the system nor any user task is blocked during the measurements**. -Please note: Since each measurement produces a delay of 20 ms, the minimum period that can be defined with function *sht3x_set_measurement_period* is 20 ms. Therefore, a maximum measurement rate of 50 mps could be reached. +Since each measurement produces a delay of 20 ms, the **minimum period** that can be defined with function **_sht3x_set_measurement_period_** is 20 ms. Therefore, a maximum measurement rate of 50 mps could be reached. ### Measured data -At each measurement, *actual sensor values* for temperature as well as humidity are determined as floating point values from the measured data pairs. Temperature is given in °C as well in °F. Humidity is given in percent. +At each measurement, **actual sensor values** for temperature as well as humidity are determined as floating point values from the measured data pairs. Temperature is given in °C as well as in °F. Humidity is given in percent. -If average value computation is enabled (default), the background task also computes successively at each measurement the *average sensor values* based on these *actual sensor values* using the exponential moving average +If average value computation is enabled (default), the background task also computes successively at each measurement the **average sensor values** based on these *actual sensor values* using the exponential moving average Average[k] = W * Actual + (1-W) * Average [k-1] -where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function *sht3x_set_average_weight*. The default value of W is 0.2. The average value computation can be enabled or disabled using function *sht3x_enable_average_computation*. +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function **_sht3x_set_average_weight_**. The default value of W is 0.2. The average value computation can be enabled or disabled using function **_sht3x_enable_average_computation_**. -If average computation is disabled, *average sensor values* correspont to the *actual sensor values*. +If average computation is disabled, *average sensor values* correspond to the *actual sensor values*. ### Getting results. As soon as a measurement is completed, the actual sensor values * and * average sensor values * can be read by user tasks. There are two ways to do this: -- define a callback function or -- call the function * sht3x_get_values * explicitly. +- define a **callback function** or +- call the function **_sht3x_get_values_** explicitly. #### Using callback function -For each connected SHT3 sensor, the user task can register a callback function using function *sht3x_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. +For each connected SHT3 sensor, the user task can register a callback function using function **_sht3x_set_callback_function_**. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. Using the callback function is the easiest way to get the results. -#### Using function sht3x_get_values +#### Using function **_sht3x_get_values_** -If there is no callback function registered, the user task has to call function *sht3x_get_values* to get *actual sensor values* and *average sensor values*. These values are stored in data structures that are specified as pointer parameters. Using NULL pointers for the parameters, the user task can decide which results are not interesting. +If there is no callback function registered, the user task has to call function **_sht3x_get_values_** to get *actual sensor values* and *average sensor values*. These values are stored in data structures that are specified as pointer parameters. Using NULL pointers for the parameters, the user task can decide which results are not interesting. -To ensure that the values are up-to-date, the rate of periodic measurement in background task should be at least the same or higher as the rate of using function *sht3x_get_values*. That is, the period of measurements in background task set with function *sht3x_set_measurement_period* has to be less or equal than the rate of using function *sht3x_get_values*. +To ensure that the values are up-to-date, the rate of periodic measurement in background task should be at least the same or higher as the rate of using function **_sht3x_get_values_**. That is, the period of measurements in background task set with function **_sht3x_set_measurement_period_** has to be less or equal than the rate of using function **_sht3x_get_values_**. If average computation is disabled, *average sensor values* are just the same as *actual sensor values*. @@ -71,7 +71,7 @@ Please note: The minimum measurement period can be 20 ms. ## Usage -Before using the SHT3x driver, function *i2c_init* needs to be called to setup each I2C interface. +Before using the SHT3x driver, function **_i2c_init_** needs to be called to setup each I2C interface. ``` #define I2C_BUS 0 @@ -85,21 +85,21 @@ i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)) ... ``` -Next, the SHT3x driver itself has to be initialized using function *sht3x_init*. +Next, the SHT3x driver itself has to be initialized using function **_sht3x_init_**. ``` sht3x_init(); ``` -If SHT3x driver initialization was successful, function *sht3x_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. +If SHT3x driver initialization was successful, function **_sht3x_create_sensor_** has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. ``` sensor = sht3x_create_sensor (I2C_BUS, SHT3x_ADDR); ``` -On success this function returns the *ID* of a sensor descriptor between 0 and *SHT3x_MAX_SENSORS* or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. +On success this function returns the *ID* of a sensor descriptor between 0 and **_SHT3x_MAX_SENSORS_** or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. -If you want to use a callback function defined like following to get the measurement results +If you want to use a callback function to get the measurement results, it has to be defined like following. ``` static void my_callback_function (uint32_t sensor, @@ -110,13 +110,13 @@ static void my_callback_function (uint32_t sensor, } ``` -You have to register this callback function using *sht3x_set_callback_function*. +You have to register this callback function using **_sht3x_set_callback_function_**. ``` sht3x_set_callback_function (sensor, &my_callback_function); ``` -Optionally, you could set the measurement period using function *sht3x_set_measurement_period* or the weight (smoothing factor) for exponential moving average computation using function *sht3x_set_average_weight*. +Optionally, you could set the measurement period using function **_sht3x_set_measurement_period_** or the weight (smoothing factor) for exponential moving average computation using function **_sht3x_set_average_weight_**. ``` sht3x_set_measurement_period (sensor, 1000); @@ -216,4 +216,3 @@ For further examples see [examples directory](../../examples/sht3x/README.md) - diff --git a/extras/sht3x/component.mk b/extras/sht3x/component.mk index 9c36296..3d8c544 100644 --- a/extras/sht3x/component.mk +++ b/extras/sht3x/component.mk @@ -1,6 +1,6 @@ # Component makefile for extras/sht3x -# expected anyone using bmp driver includes it as 'sht3x/sht3x.h' +# expected anyone using SHT3x driver includes it as 'sht3x/sht3x.h' INC_DIRS += $(sht3x_ROOT).. # args for passing into compile rule generation From c4248581e2a5390eb074dde851b38a64bd19f2ea Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sun, 1 Oct 2017 01:44:25 +0200 Subject: [PATCH 38/41] Improved documentation of SHT3x driver examples --- examples/sht3x/README.md | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/examples/sht3x/README.md b/examples/sht3x/README.md index 62d770f..d0681d1 100644 --- a/examples/sht3x/README.md +++ b/examples/sht3x/README.md @@ -10,22 +10,43 @@ There are examples for only one sensor and examples for two sensors. To run examples with **one sensor**, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the SHT3x sensor's I2C interface. +``` + +------------------------+ +--------+ + | ESP8266 Bus 0 | | BME680 | + | GPIO 5 (SCL) +---->+ SCL | + | GPIO 4 (SDA) +-----+ SDA | + | | +--------+ + +------------------------+ +``` + If you want to run examples with **two sensors**, you could do this with only one bus and different I2C addresses or with two buses and the same or different I2C addresses. In later case, use GPIO16 (SCL) and GPIO14 (SDA) for the second bus to connect to the second SHT3x sensor's I2C interface. +``` + +------------------------+ +----------+ + | ESP8266 Bus 0 | | BME680_1 | + | GPIO 5 (SCL) ------> SCL | + | GPIO 4 (SDA) ------- SDA | + | | +----------+ + | Bus 1 | | BME680_2 | + | GPIO 12 (SCL) ------> SCL | + | GPIO 14 (SDA) ------- SDA | + +------------------------+ +----------+ +``` + ## Example description -__*shtx_callback_one_sensor*__ +### _shtx_callback_one_sensor_ This example shows how to use a **callback function** to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. It includes some simple error handling. -__*shtx_callback_two_sensors*__ +### _shtx_callback_two_sensors_ This example shows how to use a **callback function** to get the results of periodic measurements of **two sensors** with **different measurement periods** of 1000 ms and 5000 ms, respectively. The sensors are connected to **two different buses**. There is no error handling in this example. -__*shtx_task_one_sensor*__ +### _shtx_task_one_sensor_ + +This example shows how to use a **task** in conjunction with function **_sht3x_get_values_** to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The task uses function **_vTaskDelay_** to realize a periodic exudation of function **_sht3x_get_values_** with same rate as periodic measurements. There is no error handling in this example. -This example shows how to use a **task** in conjunction with function __*sht3x_get_values*__ to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The task uses function *vTaskDelay* to realize a periodic exudation of function *sht3x_get_values* with same rate as periodic measurements. There is no error handling in this example. +### _shtx_timer_one_sensor_ -__*shtx_timer_one_sensor*__ - -This example shows how to use a **software timer** and **timer callback function** in conjunction with function __*sht3x_get_values*__ to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The timer callback function executes function *sht3x_get_values* to get the results of periodic measurements. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. +This example shows how to use a **software timer** and **timer callback function** in conjunction with function **_sht3x_get_values_** to get the results of periodic measurements of only **one sensor** with a period of 1000 ms. The timer callback function executes function **_sht3x_get_values_** to get the results of periodic measurements. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. From 3bf3169535880a6472c8fc5ee51c7ff0497c7401 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sun, 1 Oct 2017 01:48:41 +0200 Subject: [PATCH 39/41] Driver for Bosch BME680 sensor added Bosch Sensortronic's BME680 is a brand new integrated environmental sensor. It integrates temperature, pressure, humidity and gas sensors with high accuracy within a single unit. --- extras/bme680/README.md | 341 +++++++++++ extras/bme680/bme680.c | 1105 +++++++++++++++++++++++++++++++++++ extras/bme680/bme680.h | 225 +++++++ extras/bme680/bme680_defs.h | 529 +++++++++++++++++ extras/bme680/bme680_drv.c | 733 +++++++++++++++++++++++ extras/bme680/bme680_drv.h | 398 +++++++++++++ extras/bme680/component.mk | 9 + 7 files changed, 3340 insertions(+) create mode 100644 extras/bme680/README.md create mode 100644 extras/bme680/bme680.c create mode 100644 extras/bme680/bme680.h create mode 100644 extras/bme680/bme680_defs.h create mode 100644 extras/bme680/bme680_drv.c create mode 100644 extras/bme680/bme680_drv.h create mode 100644 extras/bme680/component.mk diff --git a/extras/bme680/README.md b/extras/bme680/README.md new file mode 100644 index 0000000..49b1c98 --- /dev/null +++ b/extras/bme680/README.md @@ -0,0 +1,341 @@ +# Driver for BME680 digital temperature and humidity sensor + +This driver is written for usage with the ESP8266 and FreeRTOS ([esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and [esp-open-rtos-driver-i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c)). + +Please note: + +1. The driver supports multiple BME680 sensors connected either to I2C as well as SPI. + +2. Due to the complexity of the sensor output value computation based on many calibration parameters, the original Bosch Sensortec BME680 driver that is released as open source [https://github.com/BoschSensortec/BME680_driver] is integrated for internal use. Please note the license of this part, which is an extended BSD license and can be found in each of that source files. + +## About the sensor + +BME680 is an low power environmental sensor that integrates a temperature, a pressure, a humidity and a gas sensor in only one unit. It can be connected to the controller using either I2C or SPI. + +### Sensor modes + +BME680 can operate in two different low-level power modes, the *sleep mode* and the *forced mode*. + +#### Sleep mode + +This mode is the default mode. The sensor starts automatically in this mode after power-up sequence. In this mode it does not perform any measurement and therefore just consumes 0.15 μA. + +#### Forced Mode + +Using the mode switch command, the sensor switches from sleep mode into the forced mode. In this mode, temperature, pressure, humidity and gas measurements are performed sequentially exactly once. Such a measurement cycle is also called TPHG (Temperature, Pressure, Humidity and Gas). After the measurement cycle, the sensor switches automatically back to the sleep mode. + +Each of these measurements can be influenced, activated or skipped separately via the sensor settings, see section **Measurement settings**. + +### Measurement settings + +The sensor allows to change different measurement parameters. + +#### Oversampling rates + +For temperature, pressure, and humidity measurements, it is possible by the user task to individually define different over-sampling rates for each of these measurements. Possible over-sampling rates are 1x (default by the driver) 2x, 4x, 8x and 16x. + +It is also possible to define an oversampling rate of 0. This deactivates the corresponding measurement and the output values become invalid. + +#### IIR Filter + +The sensor integrates an internal IIR filter (low pass filter) to reduce short-term changes in sensor output values caused by external disturbances. It effectively reduces the bandwidth of the sensor output values. + +The filter can optionally be used for pressure and temperature data that are subject to many short-term changes. Humidity and gas inside the sensor does not fluctuate rapidly and does not require such a low pass filtering. + +The user task can change the size of the filter. The default size is 3. If the size of the filter becomes 0, the filter is not used. + +#### Heater profile + +For gas measurement the sensor integrates a heater. The paremeters for this heater are defined by a heater profile. Such a heater profile consists of a temperature setting point (the target temperature) and the heating duration. + +Even though the sensor supports up to 10 different such profiles at them same time, only one profile is used by the driver for simplicity reasons. The temperature setting point and the heating duration of this one profile can be defined by the user task. Default values used by the driver are 320 degree Celcius as target temperature and 150 ms heating duration. + +According to the datasheet, target temperatures of between 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary for the heater to reach the desired target temperature. + +If heating duration is 0 ms, the gas measurement is skipped and output values become invalid. + +### Communication interfaces + +The sensor can be connected using I2C or SPI. The driver support both communication interfaces. + +The I2C interface supports the Standard, Fast and High Speed modes up to 3.4 Mbps. It is possible to connect multiple BME680 with two different I2C slave addresses (0x76 and 0x77) to one I2C bus or with same I2C addresses to different I2C busses. + +The SPI interface allows clock rates up to 10 MHz and SPI modes '00' (CPOL=CPHA=0) and '11' (CPOL=CPHA=1). + +Interface selection is done automatically using the CS signal. As long as the CS signal keeps high after power-on reset, the I2C interface is used. Once the CS signal has been pulled down, SPI interface is used until next power-on reset. + +## How the driver works + +To avoid blocking of user tasks during measurements due to their duration, separate tasks running in background are used to realize the measurements. These background tasks are created implicitly when a user task calls function *bme680_create_sensor* for each connected BME680 sensor. The background tasks realize the measurement procedures which are executed periodically at a rate that can be defined by the user for each sensor separately using function *bme680_set_measurement_period* (default period is 1000 ms). + +### Measurement method + +The driver triggers a measurement cycle using functions of the original Bosch Sensortec BME680 driver, which has been released as open source [https://github.com/BoschSensortec/BME680_driver] and is integrated for internal use. These functions call up recall functions of the driver which implement the communication with the sensor. + +The duration of a THPG measuring cycle can vary from a few milliseconds to a half a second, depending on which measurements of the THPG measuring cycle are activated and the measurement settings such as the oversampling rate and heating profile as well as sensor value processing parameters such as the IIR filter size. + +Therefore, the measurement period should be not less than 1 second. + +### Measured data + +At each measurement, *actual sensor values* for temperature, pressure, humidity as well as gas are determined as floating point values from the measured data sets. Temperature is given in °C, pressure in hectopascals, Humidity in percent and gas is given in Ohm representing the resistance of sensor's gas sensitive layer. + +If average value computation is enabled (default), the background task also computes successively at each measurement the *average sensor values* based on these *actual sensor values* using the exponential moving average + + Average[k] = W * Actual + (1-W) * Average [k-1] + +where coefficient W represents the degree of weighting decrease, a constant smoothing factor between 0 and 1. A higher W discounts older observations faster. The coefficient W (smoothing factor) can be defined by the user task using function *bme680_set_average_weight*. The default value of W is 0.2. The average value computation can be enabled or disabled using function *bme680_enable_average_computation*. + +If average computation is disabled, *average sensor values* correspond to the *actual sensor values*. + +### Getting results. + +As soon as a measurement is completed, the actual sensor values * and * average sensor values * can be read by user tasks. There are two ways to do this: + +- define a callback function or +- call the function * bme680_get_values * explicitly. + +#### Using callback function + +For each connected BME680 sensor, the user task can register a callback function using function *bme680_set_callback_function*. If a callback function is registered, it is called by the background task after each measurement to pass *actual sensor values* and *average sensor values* to user tasks. Thus, the user gets the results of the measurements automatically with same rate as the periodic measurements are executed. + +Using the callback function is the easiest way to get the results. + +#### Using function bme680_get_values + +If no recall function is registered, the user task must call *bme680_get_values* to get the *current sensor values* and *average sensor values*. These values are stored in data structures of type *bme680_value_set_t*, which are passed as pointer parameters to the function. By NULL pointers for one of these parameters, the user task can decide which results are not interesting. + +To ensure that the actual and average sensor values are up-to-date, the rate of periodic measurements realized by the background task should be at least equal to or higher than the rate of calling the function *bme680_get_values*. That is, the measurement period in the background task which is set by function *bme680_set_measurement_period* must be less than or equal to the rate of calling function *bme680_get_values*. + +Please note: If gas measurement is activated, the measuring period should be at least 1 second. + +## Usage + +First, the hardware configuration has to be establisch. This can differ dependent on the communication interface and the number of sensors to be used. + +### Hardware configuration + +First figure shows a possible configuration with only one I2C busses. + +``` + +------------------------+ +--------+ + | ESP8266 Bus 0 | | BME680 | + | GPIO 5 (SCL) +---->+ SCL | + | GPIO 4 (SDA) +-----+ SDA | + | | +--------+ + +------------------------+ +``` +Next figure shows a possible configuration with two I2C busses. + +``` + +------------------------+ +----------+ + | ESP8266 Bus 0 | | BME680_1 | + | GPIO 5 (SCL) ------> SCL | + | GPIO 4 (SDA) ------- SDA | + | | +----------+ + | Bus 1 | | BME680_2 | + | GPIO 12 (SCL) ------> SCL | + | GPIO 14 (SDA) ------- SDA | + +------------------------+ +----------+ +``` + +Last figure shows a possible configuration using SPI bus 1. +``` + +-------------------------+ +--------+ + | ESP8266 Bus 0 | | BME680 | + | GPIO 12 (MISO) <------ SDO | + | GPIO 13 (MOSI) >-----> SDA | + | GPIO 14 (SCK) >-----> SCK | + | GPIO 2 (CS) >-----> CS | + +-------------------------+ +--------+ +``` +Please note: + +1. Since the system flash memory is connected to SPI bus 0, the sensor has to be connected to SPI bus 1. + +2. GPIO15 used as CS signal of SPI bus 1 by default, does not work correctly together with BME680's signal. Therefore, the user has to specify another GPIO pin as CS signal when the sensor is created, e.g. GPIO2. + +### Communication interface dependent part + +According to the hardware configuration, some constants should be defined, e.g. for +only one I2C and the SPI. + +``` +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +#define SPI_BUS 1 +#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used +``` +Only in case of I2C, the I2C driver has to initialized before it can be used. This is not neccessary for SPI. + +``` +... +i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)) +``` + +Next, the BME680 driver itself has to be initialized using function *bme680_init*. This is independent on the communication interface. + +``` +bme680_init_driver(); +``` + +If BME680 driver initialization was successful, function *bme680_create_sensor* has to be called for each sensor to initialize the sensor connected to a certain bus with given slave address, to check its availability and to start the background task for measurements. + +In the case of I2C interface, this call looks like following. The last parameter is the SPI CS signal pin is ignored in case of I2C. + +``` +sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); +``` + +For SPI the call looks like this. The second parameter is the I2C slave address, that is invalid. It is used by function *bme680_create_sensor* to determine the communication infertace to be used. In cas of SPI, the GPIO for CS signal has to be specified. + +``` + sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); +``` + +On success this function returns the *ID* of a sensor descriptor between 0 and *BME680_MAX_SENSORS* or -1 otherwise. This *ID* is used to identify the sensor in all other functions used later. + +The remaining part of the software is independent on the communication interface. + +If you want to use a callback function to get the measurement results, it has to be defined like following. + +``` +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + ... +} +``` + +You have to register this callback function using *bme680_set_callback_function*. + +``` +bme680_set_callback_function (sensor, &my_callback_function); +``` + +Optionally, you could wish to set some measurement parameters. For details see the section **Measurement settings** above, the header file of the driver **bme680_driver.h**, and of course the datasheet of the sensor. + +``` +// Change the period of measurements (default 1000 ms) to 500 ms. +bme680_set_measurement_period (sensor, 500); + +// Changes the oversampling rates (default os_1x) to 4x oversampling for +// temperature and 2x oversampling for pressure. Humidity measurement is +// skipped. +bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + +// Change the IIR filter size (default iir_size_3) for temperature and +// and pressure to 7. +bme680_set_filter_size(sensor, iir_size_7); + +// Change the heaeter profile (default 320 degree Celcius for 150 ms) to +// 200 degree Celcius for 100 ms. +bme680_set_heater_profile (sensor, 200, 100); +``` + +All functions return a boolean that allows effective error handling. + +## Full Example for one sensor connected to I2C bus + +``` + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} +``` + +## Further Examples + +For further examples see [examples directory](../../examples/bme680/README.md) + + diff --git a/extras/bme680/bme680.c b/extras/bme680/bme680.c new file mode 100644 index 0000000..1b53aa5 --- /dev/null +++ b/extras/bme680/bme680.c @@ -0,0 +1,1105 @@ +/**\mainpage + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * File bme680.c + * @date 5 Jul 2017 + * @version 3.5.1 + * + */ + +/*! @file bme680.c + @brief Sensor driver for BME680 sensor */ +#include "bme680.h" + +/**static variables */ +/**Look up table for the possible gas range values */ +uint32_t lookupTable1[16] = { UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), + UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2130303777), UINT32_C(2147483647), + UINT32_C(2147483647), UINT32_C(2143188679), UINT32_C(2136746228), UINT32_C(2147483647), UINT32_C(2126008810), + UINT32_C(2147483647), UINT32_C(2147483647) }; +/**Look up table for the possible gas range values */ +uint32_t lookupTable2[16] = { UINT32_C(4096000000), UINT32_C(2048000000), UINT32_C(1024000000), UINT32_C(512000000), + UINT32_C(255744255), UINT32_C(127110228), UINT32_C(64000000), UINT32_C(32258064), UINT32_C(16016016), UINT32_C( + 8000000), UINT32_C(4000000), UINT32_C(2000000), UINT32_C(1000000), UINT32_C(500000), UINT32_C(250000), + UINT32_C(125000) }; + +/*! + * @brief This internal API is used to read the calibrated data from the sensor. + * + * This function is used to retrieve the calibration + * data from the image registers of the sensor. + * + * @note Registers 89h to A1h for calibration data 1 to 24 + * from bit 0 to 7 + * @note Registers E1h to F0h for calibration data 25 to 40 + * from bit 0 to 7 + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_calib_data(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to set the gas configuration of the sensor. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t set_gas_config(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to get the gas configuration of the sensor. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status. + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_gas_config(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Heat duration value. + * + * @param[in] dur :Value of the duration to be shared. + * + * @return uint8_t threshold duration after calculation. + */ +static uint8_t calc_heater_dur(uint16_t dur); + +/*! + * @brief This internal API is used to calculate the temperature value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] temp_adc :Contains the temperature ADC value . + * + * @return uint32_t calculated temperature. + */ +static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the pressure value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] pres_adc :Contains the pressure ADC value . + * + * @return uint32_t calculated pressure. + */ +static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the humidity value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] hum_adc :Contains the humidity ADC value. + * + * @return uint32_t calculated humidity. + */ +static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Gas Resistance value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] gas_res_adc :Contains the Gas Resistance ADC value. + * @param[in] gas_range :Contains the range of gas values. + * + * @return uint32_t calculated gas resistance. + */ +static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the Heat Resistance value. + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] temp :Contains the temporary value. + * + * @return uint8_t calculated heater resistance. + */ +static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to calculate the field data of sensor. + * + * @param[out] data :Structure instance to hold the data + * @param[in] dev :Structure instance of bme680_dev. + * + * @return int8_t result of the field data from sensor. + */ +static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to set the memory page + * based on register address. + * + * The value of memory page + * value | Description + * --------|-------------- + * 0 | BME680_PAGE0_SPI + * 1 | BME680_PAGE1_SPI + * + * @param[in] dev :Structure instance of bme680_dev. + * @param[in] reg_addr :Contains the register address array. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev); + +/*! + * @brief This internal API is used to get the memory page based + * on register address. + * + * The value of memory page + * value | Description + * --------|-------------- + * 0 | BME680_PAGE0_SPI + * 1 | BME680_PAGE1_SPI + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t get_mem_page(struct bme680_dev *dev); + +/*! + * @brief This internal API is used to validate the device pointer for + * null conditions. + * + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t null_ptr_check(const struct bme680_dev *dev); + +/*! + * @brief This internal API is used to check the boundary + * conditions. + * + * @param[in] value :pointer to the value. + * @param[in] min :minimum value. + * @param[in] max :maximum value. + * @param[in] dev :Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev); + +/****************** Global Function Definitions *******************************/ +/*! + *@brief This API is the entry point. + *It reads the chip-id and calibration data from the sensor. + */ +int8_t bme680_init(struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) + { + /* Soft reset to restore it to default values*/ + rslt = bme680_soft_reset(dev); + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev); + if (rslt == BME680_OK) { + if (dev->chip_id == BME680_CHIP_ID) { + rslt = get_calib_data(dev); + } else { + rslt = BME680_E_DEV_NOT_FOUND; + } + } + } + } + + return rslt; +} + +/*! + * @brief This API reads the data from the given register address of the sensor. + */ +int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (dev->intf == BME680_SPI_INTF) { + /* Set the memory page */ + rslt = set_mem_page(reg_addr, dev); + if (rslt == BME680_OK) + reg_addr = reg_addr | BME680_SPI_RD_MSK; + } + dev->com_rslt = dev->read(dev->dev_id, reg_addr, reg_data, len); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + + return rslt; +} + +/*! + * @brief This API writes the given data to the register address + * of the sensor. + */ +int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev) +{ + int8_t rslt; + /* Length of the temporary buffer is 2*(length of register)*/ + uint8_t tmp_buff[BME680_TMP_BUFFER_LENGTH] = { 0 }; + uint16_t index; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if ((len > 0) && (len < BME680_TMP_BUFFER_LENGTH / 2)) { + /* Interleave the 2 arrays */ + for (index = 0; index < len; index++) { + if (dev->intf == BME680_SPI_INTF) { + /* Set the memory page */ + rslt = set_mem_page(reg_addr[index], dev); + tmp_buff[(2 * index)] = reg_addr[index] & BME680_SPI_WR_MSK; + } else { + tmp_buff[(2 * index)] = reg_addr[index]; + } + tmp_buff[(2 * index) + 1] = reg_data[index]; + } + /* Write the interleaved array */ + if (rslt == BME680_OK) { + dev->com_rslt = dev->write(dev->dev_id, tmp_buff[0], &tmp_buff[1], (2 * len) - 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + } else { + rslt = BME680_E_INVALID_LENGTH; + } + } + + return rslt; +} + +/*! + * @brief This API performs the soft reset of the sensor. + */ +int8_t bme680_soft_reset(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg_addr = BME680_SOFT_RESET_ADDR; + /* 0xb6 is the soft reset command */ + uint8_t soft_rst_cmd = BME680_SOFT_RESET_CMD; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (dev->intf == BME680_SPI_INTF) + rslt = get_mem_page(dev); + + /* Reset the device */ + if (rslt == BME680_OK) { + rslt = bme680_set_regs(®_addr, &soft_rst_cmd, 1, dev); + /* Wait for 5ms */ + dev->delay_ms(BME680_RESET_PERIOD); + + if (rslt == BME680_OK) { + /* After reset get the memory page */ + if (dev->intf == BME680_SPI_INTF) + rslt = get_mem_page(dev); + } + } + } + + return rslt; +} + +/*! + * @brief This API is used to set the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + */ +int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg_addr; + uint8_t data = 0; + uint8_t count = 0; + uint8_t reg_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + uint8_t intended_power_mode = dev->power_mode; /* Save intended power mode */ + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (desired_settings & BME680_GAS_MEAS_SEL) + rslt = set_gas_config(dev); + + dev->power_mode = BME680_SLEEP_MODE; + if (rslt == BME680_OK) + rslt = bme680_set_sensor_mode(dev); + + /* Selecting the filter */ + if (desired_settings & BME680_FILTER_SEL) { + rslt = boundary_check(&dev->tph_sett.filter, BME680_FILTER_SIZE_0, BME680_FILTER_SIZE_127, dev); + reg_addr = BME680_CONF_ODR_FILT_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_FILTER_SEL) + data = BME680_SET_BITS(data, BME680_FILTER, dev->tph_sett.filter); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting heater control for the sensor */ + if (desired_settings & BME680_HCNTRL_SEL) { + rslt = boundary_check(&dev->gas_sett.heatr_ctrl, BME680_ENABLE_HEATER, BME680_DISABLE_HEATER, dev); + reg_addr = BME680_CONF_HEAT_CTRL_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + data = BME680_SET_BITS_POS_0(data, BME680_HCTRL, dev->gas_sett.heatr_ctrl); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting heater T,P oversampling for the sensor */ + if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { + rslt = boundary_check(&dev->tph_sett.os_temp, BME680_OS_NONE, BME680_OS_16X, dev); + reg_addr = BME680_CONF_T_P_MODE_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_OST_SEL) + data = BME680_SET_BITS(data, BME680_OST, dev->tph_sett.os_temp); + + if (desired_settings & BME680_OSP_SEL) + data = BME680_SET_BITS(data, BME680_OSP, dev->tph_sett.os_pres); + + reg_array[count] = reg_addr; + data_array[count] = data; + count++; + } + + /* Selecting humidity oversampling for the sensor */ + if (desired_settings & BME680_OSH_SEL) { + rslt = boundary_check(&dev->tph_sett.os_hum, BME680_OS_NONE, BME680_OS_16X, dev); + reg_addr = BME680_CONF_OS_H_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + data = BME680_SET_BITS_POS_0(data, BME680_OSH, dev->tph_sett.os_hum); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + /* Selecting the runGas and NB conversion settings for the sensor */ + if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { + rslt = boundary_check(&dev->gas_sett.run_gas, BME680_RUN_GAS_DISABLE, BME680_RUN_GAS_ENABLE, dev); + if (rslt == BME680_OK) + rslt = boundary_check(&dev->gas_sett.nb_conv, BME680_NBCONV_MIN, BME680_NBCONV_MAX, dev); + reg_addr = BME680_CONF_ODR_RUN_GAS_NBC_ADDR; + + if (rslt == BME680_OK) + rslt = bme680_get_regs(reg_addr, &data, 1, dev); + + if (desired_settings & BME680_RUN_GAS_SEL) + data = BME680_SET_BITS(data, BME680_RUN_GAS, dev->gas_sett.run_gas); + + if (desired_settings & BME680_NBCONV_SEL) + data = BME680_SET_BITS_POS_0(data, BME680_NBCONV, dev->gas_sett.nb_conv); + + reg_array[count] = reg_addr; /* Append configuration */ + data_array[count] = data; + count++; + } + + if (rslt == BME680_OK) + rslt = bme680_set_regs(reg_array, data_array, count, dev); + + /* Restore previous intended power mode */ + dev->power_mode = intended_power_mode; + } + + return rslt; +} + +/*! + * @brief This API is used to get the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + */ +int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) +{ + int8_t rslt; + /* starting address of the register array for burst read*/ + uint8_t reg_addr = BME680_CONF_HEAT_CTRL_ADDR; + uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(reg_addr, data_array, BME680_REG_BUFFER_LENGTH, dev); + + if (rslt == BME680_OK) { + if (desired_settings & BME680_GAS_MEAS_SEL) + rslt = get_gas_config(dev); + + /* get the T,P,H ,Filter,ODR settings here */ + if (desired_settings & BME680_FILTER_SEL) + dev->tph_sett.filter = BME680_GET_BITS(data_array[BME680_REG_FILTER_INDEX], BME680_FILTER); + + if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { + dev->tph_sett.os_temp = BME680_GET_BITS(data_array[BME680_REG_TEMP_INDEX], BME680_OST); + dev->tph_sett.os_pres = BME680_GET_BITS(data_array[BME680_REG_PRES_INDEX], BME680_OSP); + } + + if (desired_settings & BME680_OSH_SEL) + dev->tph_sett.os_hum = BME680_GET_BITS_POS_0(data_array[BME680_REG_HUM_INDEX], BME680_OSH); + + /* get the gas related settings */ + if (desired_settings & BME680_HCNTRL_SEL) + dev->gas_sett.heatr_ctrl = BME680_GET_BITS_POS_0(data_array[BME680_REG_HCTRL_INDEX], BME680_HCTRL); + + if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { + dev->gas_sett.nb_conv = BME680_GET_BITS_POS_0(data_array[BME680_REG_NBCONV_INDEX], BME680_NBCONV); + dev->gas_sett.run_gas = BME680_GET_BITS(data_array[BME680_REG_RUN_GAS_INDEX], BME680_RUN_GAS); + } + } + } else { + rslt = BME680_E_NULL_PTR; + } + + return rslt; +} + +/*! + * @brief This API is used to set the power mode of the sensor. + */ +int8_t bme680_set_sensor_mode(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t tmp_pow_mode; + uint8_t pow_mode = 0; + uint8_t reg_addr = BME680_CONF_T_P_MODE_ADDR; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + /* Call recursively until in sleep */ + do { + rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &tmp_pow_mode, 1, dev); + if (rslt == BME680_OK) { + /* Put to sleep before changing mode */ + pow_mode = (tmp_pow_mode & BME680_MODE_MSK); + + if (pow_mode != BME680_SLEEP_MODE) { + tmp_pow_mode = tmp_pow_mode & (~BME680_MODE_MSK); /* Set to sleep */ + rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); + dev->delay_ms(BME680_POLL_PERIOD_MS); + } + } + } while (pow_mode != BME680_SLEEP_MODE); + + /* Already in sleep */ + if (dev->power_mode != BME680_SLEEP_MODE) { + tmp_pow_mode = (tmp_pow_mode & ~BME680_MODE_MSK) | (dev->power_mode & BME680_MODE_MSK); + if (rslt == BME680_OK) + rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); + } + } + + return rslt; +} + +/*! + * @brief This API is used to get the power mode of the sensor. + */ +int8_t bme680_get_sensor_mode(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t mode; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &mode, 1, dev); + /* Masking the other register bit info*/ + dev->power_mode = mode & BME680_MODE_MSK; + } + + return rslt; +} + +/*! + * @brief This API is used to set the profile duration of the sensor. + */ +void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev) +{ + uint32_t tph_dur; /* Calculate in us */ + + /* TPH measurement duration */ + tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); + tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ + tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ + tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ + tph_dur /= UINT32_C(1000); /* Convert to ms */ + + tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ + /* The remaining time should be used for heating */ + dev->gas_sett.heatr_dur = duration - (uint16_t) tph_dur; +} + +/*! + * @brief This API is used to get the profile duration of the sensor. + */ +void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev) +{ + uint32_t tph_dur; /* Calculate in us */ + + /* TPH measurement duration */ + tph_dur = ((uint32_t) (dev->tph_sett.os_temp + dev->tph_sett.os_pres + dev->tph_sett.os_hum) * UINT32_C(1963)); + tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ + tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ + tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ + tph_dur /= UINT32_C(1000); /* Convert to ms */ + + tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ + /* The remaining time should be used for heating */ + *duration = dev->gas_sett.heatr_dur + (uint16_t) tph_dur; +} + +/*! + * @brief This API reads the pressure, temperature and humidity and gas data + * from the sensor, compensates the data and store it in the bme680_data + * structure instance passed by the user. + */ +int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + /* Reading the sensor data in forced mode only */ + rslt = read_field_data(data, dev); + if (rslt == BME680_OK) { + if (data->status & BME680_NEW_DATA_MSK) + dev->new_fields = 1; + else + dev->new_fields = 0; + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to read the calibrated data from the sensor. + */ +static int8_t get_calib_data(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t coeff_array[BME680_COEFF_SIZE] = { 0 }; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_COEFF_ADDR1, coeff_array, BME680_COEFF_ADDR1_LEN, dev); + /* Append the second half in the same array */ + if (rslt == BME680_OK) + rslt = bme680_get_regs(BME680_COEFF_ADDR2, &coeff_array[BME680_COEFF_ADDR1_LEN], BME680_COEFF_ADDR2_LEN, + dev); + + /* Temperature related coefficients */ + dev->calib.par_t1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T1_MSB_REG], + coeff_array[BME680_T1_LSB_REG])); + dev->calib.par_t2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T2_MSB_REG], + coeff_array[BME680_T2_LSB_REG])); + dev->calib.par_t3 = (int8_t) (coeff_array[BME680_T3_REG]); + + /* Pressure related coefficients */ + dev->calib.par_p1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P1_MSB_REG], + coeff_array[BME680_P1_LSB_REG])); + dev->calib.par_p2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P2_MSB_REG], + coeff_array[BME680_P2_LSB_REG])); + dev->calib.par_p3 = (int8_t) coeff_array[BME680_P3_REG]; + dev->calib.par_p4 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P4_MSB_REG], + coeff_array[BME680_P4_LSB_REG])); + dev->calib.par_p5 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P5_MSB_REG], + coeff_array[BME680_P5_LSB_REG])); + dev->calib.par_p6 = (int8_t) (coeff_array[BME680_P6_REG]); + dev->calib.par_p7 = (int8_t) (coeff_array[BME680_P7_REG]); + dev->calib.par_p8 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P8_MSB_REG], + coeff_array[BME680_P8_LSB_REG])); + dev->calib.par_p9 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P9_MSB_REG], + coeff_array[BME680_P9_LSB_REG])); + dev->calib.par_p10 = (uint8_t) (coeff_array[BME680_P10_REG]); + + /* Humidity related coefficients */ + dev->calib.par_h1 = (uint16_t) (((uint16_t) coeff_array[BME680_H1_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) + | (coeff_array[BME680_H1_LSB_REG] & BME680_BIT_H1_DATA_MSK)); + dev->calib.par_h2 = (uint16_t) (((uint16_t) coeff_array[BME680_H2_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) + | ((coeff_array[BME680_H2_LSB_REG]) >> BME680_HUM_REG_SHIFT_VAL)); + dev->calib.par_h3 = (int8_t) coeff_array[BME680_H3_REG]; + dev->calib.par_h4 = (int8_t) coeff_array[BME680_H4_REG]; + dev->calib.par_h5 = (int8_t) coeff_array[BME680_H5_REG]; + dev->calib.par_h6 = (uint8_t) coeff_array[BME680_H6_REG]; + dev->calib.par_h7 = (int8_t) coeff_array[BME680_H7_REG]; + + /* Gas heater related coefficients */ + dev->calib.par_gh1 = (int8_t) coeff_array[BME680_GH1_REG]; + dev->calib.par_gh2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_GH2_MSB_REG], + coeff_array[BME680_GH2_LSB_REG])); + dev->calib.par_gh3 = (int8_t) coeff_array[BME680_GH3_REG]; + + /* Other coefficients */ + uint8_t temp_var = 0; /* Temporary variable */ + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_RANGE_ADDR, &temp_var, 1, dev); + + dev->calib.res_heat_range = ((temp_var & BME680_RHRANGE_MSK) / 16); + if (rslt == BME680_OK) { + rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_VAL_ADDR, &temp_var, 1, dev); + + dev->calib.res_heat_val = (int8_t) temp_var; + if (rslt == BME680_OK) + rslt = bme680_get_regs(BME680_ADDR_RANGE_SW_ERR_ADDR, &temp_var, 1, dev); + } + } + dev->calib.range_sw_err = ((int8_t) temp_var & (int8_t) BME680_RSERROR_MSK) / 16; + } + + return rslt; +} + +/*! + * @brief This internal API is used to set the gas configuration of the sensor. + */ +static int8_t set_gas_config(struct bme680_dev *dev) +{ + int8_t rslt; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + + uint8_t reg_addr[2], reg_data[2]; + + if (dev->power_mode == BME680_FORCED_MODE) { + reg_addr[0] = BME680_RES_HEAT0_ADDR; + reg_data[0] = calc_heater_res(dev->gas_sett.heatr_temp, dev); + reg_addr[1] = BME680_GAS_WAIT0_ADDR; + reg_data[1] = calc_heater_dur(dev->gas_sett.heatr_dur); + dev->gas_sett.nb_conv = 0; + } else { + rslt = BME680_W_DEFINE_PWR_MODE; + } + if (rslt == BME680_OK) + rslt = bme680_set_regs(reg_addr, reg_data, 2, dev); + } + + return rslt; +} + +/*! + * @brief This internal API is used to get the gas configuration of the sensor. + */ +static int8_t get_gas_config(struct bme680_dev *dev) +{ + int8_t rslt; + /* starting address of the register array for burst read*/ + uint8_t reg_addr1 = BME680_ADDR_SENS_CONF_START; + uint8_t reg_addr2 = BME680_ADDR_GAS_CONF_START; + uint8_t data_array[BME680_GAS_HEATER_PROF_LEN_MAX] = { 0 }; + uint8_t index; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (BME680_SPI_INTF == dev->intf) { + /* Memory page switch the SPI address*/ + rslt = set_mem_page(reg_addr1, dev); + } + + if (rslt == BME680_OK) { + rslt = bme680_get_regs(reg_addr1, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); + if (rslt == BME680_OK) { + for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) + dev->gas_sett.heatr_temp = data_array[index]; + } + + rslt = bme680_get_regs(reg_addr2, data_array, BME680_GAS_HEATER_PROF_LEN_MAX, dev); + if (rslt == BME680_OK) { + for (index = 0; index < BME680_GAS_HEATER_PROF_LEN_MAX; index++) + dev->gas_sett.heatr_dur = data_array[index]; + } + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to calculate the temperature value. + */ +static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev) +{ + int64_t var1; + int64_t var2; + int64_t var3; + int16_t calc_temp; + + var1 = ((int32_t) temp_adc / 8) - ((int32_t) dev->calib.par_t1 * 2); + var2 = (var1 * (int32_t) dev->calib.par_t2) / 2048; + var3 = ((var1 / 2) * (var1 / 2)) / 4096; + var3 = ((var3) * ((int32_t) dev->calib.par_t3 * 16)) / 16384; + dev->calib.t_fine = (int32_t) (var2 + var3); + calc_temp = (int16_t) (((dev->calib.t_fine * 5) + 128) / 256); + + return calc_temp; +} + +/*! + * @brief This internal API is used to calculate the pressure value. + */ +static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) +{ + int32_t var1; + int32_t var2; + int32_t var3; + int32_t calc_pres; + + var1 = (((int32_t) dev->calib.t_fine) / 2) - 64000; + var2 = ((var1 / 4) * (var1 / 4)) / 2048; + var2 = ((var2) * (int32_t) dev->calib.par_p6) / 4; + var2 = var2 + ((var1 * (int32_t) dev->calib.par_p5) * 2); + var2 = (var2 / 4) + ((int32_t) dev->calib.par_p4 * 65536); + var1 = ((var1 / 4) * (var1 / 4)) / 8192; + var1 = (((var1) * ((int32_t) dev->calib.par_p3 * 32)) / 8) + (((int32_t) dev->calib.par_p2 * var1) / 2); + var1 = var1 / 262144; + var1 = ((32768 + var1) * (int32_t) dev->calib.par_p1) / 32768; + calc_pres = (int32_t) (1048576 - pres_adc); + calc_pres = (int32_t) ((calc_pres - (var2 / 4096)) * (3125)); + calc_pres = ((calc_pres / var1) * 2); + var1 = ((int32_t) dev->calib.par_p9 * (int32_t) (((calc_pres / 8) * (calc_pres / 8)) / 8192)) / 4096; + var2 = ((int32_t) (calc_pres / 4) * (int32_t) dev->calib.par_p8) / 8192; + var3 = ((int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) * (int32_t) (calc_pres / 256) + * (int32_t) dev->calib.par_p10) / 131072; + calc_pres = (int32_t) (calc_pres) + ((var1 + var2 + var3 + ((int32_t) dev->calib.par_p7 * 128)) / 16); + + return (uint32_t) calc_pres; +} + +/*! + * @brief This internal API is used to calculate the humidity value. + */ +static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev) +{ + int32_t var1; + int32_t var2; + int32_t var3; + int32_t var4; + int32_t var5; + int32_t var6; + int32_t temp_scaled; + int32_t calc_hum; + + temp_scaled = (((int32_t) dev->calib.t_fine * 5) + 128) / 256; + var1 = (int32_t) (hum_adc - ((int32_t) ((int32_t) dev->calib.par_h1 * 16))) + - (((temp_scaled * (int32_t) dev->calib.par_h3) / ((int32_t) 100)) / 2); + var2 = ((int32_t) dev->calib.par_h2 + * (((temp_scaled * (int32_t) dev->calib.par_h4) / ((int32_t) 100)) + + (((temp_scaled * ((temp_scaled * (int32_t) dev->calib.par_h5) / ((int32_t) 100))) / 64) + / ((int32_t) 100)) + (int32_t) (1 * 16384))) / 1024; + var3 = var1 * var2; + var4 = (int32_t) dev->calib.par_h6 * 128; + var4 = ((var4) + ((temp_scaled * (int32_t) dev->calib.par_h7) / ((int32_t) 100))) / 16; + var5 = ((var3 / 16384) * (var3 / 16384)) / 1024; + var6 = (var4 * var5) / 2; + calc_hum = (((var3 + var6) / 1024) * ((int32_t) 1000)) / 4096; + + if (calc_hum > 100000) /* Cap at 100%rH */ + calc_hum = 100000; + else if (calc_hum < 0) + calc_hum = 0; + + return (uint32_t) calc_hum; +} + +/*! + * @brief This internal API is used to calculate the Gas Resistance value. + */ +static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev) +{ + int64_t var1; + uint64_t var2; + int64_t var3; + uint32_t calc_gas_res; + + var1 = (int64_t) ((1340 + (5 * (int64_t) dev->calib.range_sw_err)) * ((int64_t) lookupTable1[gas_range])) / 65536; + var2 = (((int64_t) ((int64_t) gas_res_adc * 32768) - (int64_t) (16777216)) + var1); + var3 = (((int64_t) lookupTable2[gas_range] * (int64_t) var1) / 512); + calc_gas_res = (uint32_t) ((var3 + ((int64_t) var2 / 2)) / (int64_t) var2); + + return calc_gas_res; +} + +/*! + * @brief This internal API is used to calculate the Heat Resistance value. + */ +static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev) +{ + uint8_t heatr_res; + int32_t var1; + int32_t var2; + int32_t var3; + int32_t var4; + int32_t var5; + int32_t heatr_res_x100; + + if (temp < 200) /* Cap temperature */ + temp = 200; + else if (temp > 400) + temp = 400; + + var1 = (((int32_t) dev->amb_temp * dev->calib.par_gh3) / 1000) * 256; + var2 = (dev->calib.par_gh1 + 784) * (((((dev->calib.par_gh2 + 154009) * temp * 5) / 100) + 3276800) / 10); + var3 = var1 + (var2 / 2); + var4 = (var3 / (dev->calib.res_heat_range + 4)); + var5 = (131 * dev->calib.res_heat_val) + 65536; + heatr_res_x100 = (int32_t) (((var4 / var5) - 250) * 34); + heatr_res = (uint8_t) ((heatr_res_x100 + 50) / 100); + + return heatr_res; +} + +/*! + * @brief This internal API is used to calculate the Heat duration value. + */ +static uint8_t calc_heater_dur(uint16_t dur) +{ + uint8_t factor = 0; + uint8_t durval; + + if (dur >= 0xfc0) { + durval = 0xff; /* Max duration*/ + } else { + while (dur > 0x3F) { + dur = dur / 4; + factor += 1; + } + durval = (uint8_t) (dur + (factor * 64)); + } + + return durval; +} + +/*! + * @brief This internal API is used to calculate the field data of sensor. + */ +static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t buff[BME680_FIELD_LENGTH] = { 0 }; + uint8_t gas_range; + uint32_t adc_temp; + uint32_t adc_pres; + uint16_t adc_hum; + uint16_t adc_gas_res; + uint8_t tries = 10; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + do { + if (rslt == BME680_OK) { + rslt = bme680_get_regs(((uint8_t) (BME680_FIELD0_ADDR)), buff, (uint16_t) BME680_FIELD_LENGTH, dev); + + data->status = buff[0] & BME680_NEW_DATA_MSK; + data->gas_index = buff[0] & BME680_GAS_INDEX_MSK; + data->meas_index = buff[1]; + + /* read the raw data from the sensor */ + adc_pres = (uint32_t) (((uint32_t) buff[2] * 4096) | ((uint32_t) buff[3] * 16) | ((uint32_t) buff[4] / 16)); + adc_temp = (uint32_t) (((uint32_t) buff[5] * 4096) | ((uint32_t) buff[6] * 16) | ((uint32_t) buff[7] / 16)); + adc_hum = (uint16_t) (((uint32_t) buff[8] * 256) | (uint32_t) buff[9]); + adc_gas_res = (uint16_t) ((uint32_t) buff[13] * 4 | (((uint32_t) buff[14]) / 64)); + gas_range = buff[14] & BME680_GAS_RANGE_MSK; + + data->status |= buff[14] & BME680_GASM_VALID_MSK; + data->status |= buff[14] & BME680_HEAT_STAB_MSK; + + if (data->status & BME680_NEW_DATA_MSK) { + data->temperature = calc_temperature(adc_temp, dev); + data->pressure = calc_pressure(adc_pres, dev); + data->humidity = calc_humidity(adc_hum, dev); + data->gas_resistance = calc_gas_resistance(adc_gas_res, gas_range, dev); + break; + } else { + dev->delay_ms(BME680_POLL_PERIOD_MS); + } + } + tries--; + } while (tries); + + if (!tries) + rslt = BME680_W_NO_NEW_DATA; + + return rslt; +} + +/*! + * @brief This internal API is used to set the memory page based on register address. + */ +static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg; + uint8_t mem_page; + + /* Check for null pointers in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + if (reg_addr > 0x7f) + mem_page = BME680_MEM_PAGE1; + else + mem_page = BME680_MEM_PAGE0; + + if (mem_page != dev->mem_page) { + dev->mem_page = mem_page; + + dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + + if (rslt == BME680_OK) { + reg = reg & (~BME680_MEM_PAGE_MSK); + reg = reg | (dev->mem_page & BME680_MEM_PAGE_MSK); + + dev->com_rslt = dev->write(dev->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + } + } + } + + return rslt; +} + +/*! + * @brief This internal API is used to get the memory page based on register address. + */ +static int8_t get_mem_page(struct bme680_dev *dev) +{ + int8_t rslt; + uint8_t reg; + + /* Check for null pointer in the device structure*/ + rslt = null_ptr_check(dev); + if (rslt == BME680_OK) { + dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); + if (dev->com_rslt != 0) + rslt = BME680_E_COM_FAIL; + else + dev->mem_page = reg & BME680_MEM_PAGE_MSK; + } + + return rslt; +} + +/*! + * @brief This internal API is used to validate the boundary + * conditions. + */ +static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev) +{ + int8_t rslt = BME680_OK; + + if (value != NULL) { + /* Check if value is below minimum value */ + if (*value < min) { + /* Auto correct the invalid value to minimum value */ + *value = min; + dev->info_msg |= BME680_I_MIN_CORRECTION; + } + /* Check if value is above maximum value */ + if (*value > max) { + /* Auto correct the invalid value to maximum value */ + *value = max; + dev->info_msg |= BME680_I_MAX_CORRECTION; + } + } else { + rslt = BME680_E_NULL_PTR; + } + + return rslt; +} + +/*! + * @brief This internal API is used to validate the device structure pointer for + * null conditions. + */ +static int8_t null_ptr_check(const struct bme680_dev *dev) +{ + int8_t rslt; + + if ((dev == NULL) || (dev->read == NULL) || (dev->write == NULL) || (dev->delay_ms == NULL)) { + /* Device structure pointer is not valid */ + rslt = BME680_E_NULL_PTR; + } else { + /* Device structure is fine */ + rslt = BME680_OK; + } + + return rslt; +} diff --git a/extras/bme680/bme680.h b/extras/bme680/bme680.h new file mode 100644 index 0000000..38b8628 --- /dev/null +++ b/extras/bme680/bme680.h @@ -0,0 +1,225 @@ +/** + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bme680.h + * @date 5 Jul 2017 + * @version 3.5.1 + * @brief + * + */ +/*! @file bme680.h + @brief Sensor driver for BME680 sensor */ +/*! + * @defgroup BME680 SENSOR API + * @{*/ +#ifndef BME680_H_ +#define BME680_H_ + +/*! CPP guard */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Header includes */ +#include "bme680_defs.h" + +/* function prototype declarations */ +/*! + * @brief This API is the entry point. + * It reads the chip-id and calibration data from the sensor. + * + * @param[in,out] dev : Structure instance of bme680_dev + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_init(struct bme680_dev *dev); + +/*! + * @brief This API writes the given data to the register address + * of the sensor. + * + * @param[in] reg_addr : Register address from where the data to be written. + * @param[in] reg_data : Pointer to data buffer which is to be written + * in the sensor. + * @param[in] len : No of bytes of data to write.. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev); + +/*! + * @brief This API reads the data from the given register address of the sensor. + * + * @param[in] reg_addr : Register address from where the data to be read + * @param[out] reg_data : Pointer to data buffer to store the read data. + * @param[in] len : No of bytes of data to be read. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev); + +/*! + * @brief This API performs the soft reset of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_soft_reset(struct bme680_dev *dev); + +/*! + * @brief This API is used to set the power mode of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev + * @note : Pass the value to bme680_dev.power_mode structure variable. + * + * value | mode + * -------------|------------------ + * 0x00 | BME680_SLEEP_MODE + * 0x01 | BME680_FORCED_MODE + * + * * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_set_sensor_mode(struct bme680_dev *dev); + +/*! + * @brief This API is used to get the power mode of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev + * @note : bme680_dev.power_mode structure variable hold the power mode. + * + * value | mode + * ---------|------------------ + * 0x00 | BME680_SLEEP_MODE + * 0x01 | BME680_FORCED_MODE + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_sensor_mode(struct bme680_dev *dev); + +/*! + * @brief This API is used to set the profile duration of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] duration : Duration of the measurement in ms. + * + * @return Nothing + */ +void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev); + +/*! + * @brief This API is used to get the profile duration of the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] duration : Duration of the measurement in ms. + * + * @return Nothing + */ +void bme680_get_profile_dur(uint16_t *duration, struct bme680_dev *dev); + +/*! + * @brief This API reads the pressure, temperature and humidity and gas data + * from the sensor, compensates the data and store it in the bme680_data + * structure instance passed by the user. + * + * @param[out] data: Structure instance to hold the data. + * @param[in] dev : Structure instance of bme680_dev. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error + */ +int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev); + +/*! + * @brief This API is used to set the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] desired_settings : Variable used to select the settings which + * are to be set in the sensor. + * + * Macros | Functionality + *-------------------------|---------------------------------------------- + * BME680_OST_SEL | To set temperature oversampling. + * BME680_OSP_SEL | To set pressure oversampling. + * BME680_OSH_SEL | To set humidity oversampling. + * BME680_GAS_MEAS_SEL | To set gas measurement setting. + * BME680_FILTER_SEL | To set filter setting. + * BME680_HCNTRL_SEL | To set humidity control setting. + * BME680_RUN_GAS_SEL | To set run gas setting. + * BME680_NBCONV_SEL | To set NB conversion setting. + * BME680_GAS_SENSOR_SEL | To set all gas sensor related settings + * + * @note : Below are the macros to be used by the user for selecting the + * desired settings. User can do OR operation of these macros for configuring + * multiple settings. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); + +/*! + * @brief This API is used to get the oversampling, filter and T,P,H, gas selection + * settings in the sensor. + * + * @param[in] dev : Structure instance of bme680_dev. + * @param[in] desired_settings : Variable used to select the settings which + * are to be get from the sensor. + * + * @return Result of API execution status + * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. + */ +int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); +#ifdef __cplusplus +} +#endif /* End of CPP guard */ +#endif /* BME680_H_ */ +/** @}*/ diff --git a/extras/bme680/bme680_defs.h b/extras/bme680/bme680_defs.h new file mode 100644 index 0000000..4ef701f --- /dev/null +++ b/extras/bme680/bme680_defs.h @@ -0,0 +1,529 @@ +/** + * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the copyright holder nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * The information provided is believed to be accurate and reliable. + * The copyright holder assumes no responsibility + * for the consequences of use + * of such information nor for any infringement of patents or + * other rights of third parties which may result from its use. + * No license is granted by implication or otherwise under any patent or + * patent rights of the copyright holder. + * + * @file bme680_defs.h + * @date 5 Jul 2017 + * @version 3.5.1 + * @brief + * + */ + +/*! @file bme680_defs.h + @brief Sensor driver for BME680 sensor */ +/*! + * @defgroup BME680 SENSOR API + * @brief + * @{*/ +#ifndef BME680_DEFS_H_ +#define BME680_DEFS_H_ + +/********************************************************/ +/* header includes */ +#ifdef __KERNEL__ +#include +#else +#include +#endif + +#ifdef __KERNEL__ +#if (LONG_MAX) > 0x7fffffff +#define __have_long64 1 +#elif (LONG_MAX) == 0x7fffffff +#define __have_long32 1 +#endif + +#if !defined(UINT8_C) +#define INT8_C(x) x +#if (INT_MAX) > 0x7f +#define UINT8_C(x) x +#else +#define UINT8_C(x) x##U +#endif +#endif + +#if !defined(UINT16_C) +#define INT16_C(x) x +#if (INT_MAX) > 0x7fff +#define UINT16_C(x) x +#else +#define UINT16_C(x) x##U +#endif +#endif + +#if !defined(INT32_C) && !defined(UINT32_C) +#if __have_long32 +#define INT32_C(x) x##L +#define UINT32_C(x) x##UL +#else +#define INT32_C(x) x +#define UINT32_C(x) x##U +#endif +#endif + +#if !defined(INT64_C) && !defined(UINT64_C) +#if __have_long64 +#define INT64_C(x) x##L +#define UINT64_C(x) x##UL +#else +#define INT64_C(x) x##LL +#define UINT64_C(x) x##ULL +#endif +#endif +#endif +/**@}*/ + +/**\name C standard macros */ +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *) 0) +#endif +#endif + +/** BME680 General config */ +#define BME680_POLL_PERIOD_MS UINT8_C(10) + +/** BME680 I2C addresses */ +#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76) +#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77) + +/** BME680 unique chip identifier */ +#define BME680_CHIP_ID UINT8_C(0x61) + +/** BME680 coefficients related defines */ +#define BME680_COEFF_SIZE UINT8_C(0x41) +#define BME680_COEFF_ADDR1_LEN UINT8_C(25) +#define BME680_COEFF_ADDR2_LEN UINT8_C(16) + +/** BME680 field_x related defines */ +#define BME680_FIELD_LENGTH UINT8_C(15) +#define BME680_FIELD_ADDR_OFFSET UINT8_C(17) + +/** Soft reset command */ +#define BME680_SOFT_RESET_CMD UINT8_C(0xb6) + +/** Error code definitions */ +#define BME680_OK INT8_C(0) +/* Errors */ +#define BME680_E_NULL_PTR INT8_C(-1) +#define BME680_E_COM_FAIL INT8_C(-2) +#define BME680_E_DEV_NOT_FOUND INT8_C(-3) +#define BME680_E_INVALID_LENGTH INT8_C(-4) + +/* Warnings */ +#define BME680_W_DEFINE_PWR_MODE INT8_C(1) +#define BME680_W_NO_NEW_DATA INT8_C(2) + +/* Info's */ +#define BME680_I_MIN_CORRECTION UINT8_C(1) +#define BME680_I_MAX_CORRECTION UINT8_C(2) + +/** Register map */ +/** Other coefficient's address */ +#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00) +#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02) +#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04) +#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A) +#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64) + +/** Field settings */ +#define BME680_FIELD0_ADDR UINT8_C(0x1d) + +/** Heater settings */ +#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a) +#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64) + +/** Sensor configuration registers */ +#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70) +#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71) +#define BME680_CONF_OS_H_ADDR UINT8_C(0x72) +#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3) +#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74) +#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75) + +/** Coefficient's address */ +#define BME680_COEFF_ADDR1 UINT8_C(0x89) +#define BME680_COEFF_ADDR2 UINT8_C(0xe1) + +/** Chip identifier */ +#define BME680_CHIP_ID_ADDR UINT8_C(0xd0) + +/** Soft reset register */ +#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0) + +/** Heater control settings */ +#define BME680_ENABLE_HEATER UINT8_C(0x00) +#define BME680_DISABLE_HEATER UINT8_C(0x08) + +/** Gas measurement settings */ +#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00) +#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01) + +/** Over-sampling settings */ +#define BME680_OS_NONE UINT8_C(0) +#define BME680_OS_1X UINT8_C(1) +#define BME680_OS_2X UINT8_C(2) +#define BME680_OS_4X UINT8_C(3) +#define BME680_OS_8X UINT8_C(4) +#define BME680_OS_16X UINT8_C(5) + +/** IIR filter settings */ +#define BME680_FILTER_SIZE_0 UINT8_C(0) +#define BME680_FILTER_SIZE_1 UINT8_C(1) +#define BME680_FILTER_SIZE_3 UINT8_C(2) +#define BME680_FILTER_SIZE_7 UINT8_C(3) +#define BME680_FILTER_SIZE_15 UINT8_C(4) +#define BME680_FILTER_SIZE_31 UINT8_C(5) +#define BME680_FILTER_SIZE_63 UINT8_C(6) +#define BME680_FILTER_SIZE_127 UINT8_C(7) + +/** Power mode settings */ +#define BME680_SLEEP_MODE UINT8_C(0) +#define BME680_FORCED_MODE UINT8_C(1) + +/** Delay related macro declaration */ +#define BME680_RESET_PERIOD UINT32_C(10) + +/** SPI memory page settings */ +#define BME680_MEM_PAGE0 UINT8_C(0x10) +#define BME680_MEM_PAGE1 UINT8_C(0x00) + +/** Ambient humidity shift value for compensation */ +#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4) + +/** Run gas enable and disable settings */ +#define BME680_RUN_GAS_DISABLE UINT8_C(0) +#define BME680_RUN_GAS_ENABLE UINT8_C(1) + +/** Buffer length macro declaration */ +#define BME680_TMP_BUFFER_LENGTH UINT8_C(40) +#define BME680_REG_BUFFER_LENGTH UINT8_C(6) +#define BME680_FIELD_DATA_LENGTH UINT8_C(3) +#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20) +#define BME680_GAS_HEATER_PROF_LEN_MAX UINT8_C(10) + +/** Settings selector */ +#define BME680_OST_SEL UINT16_C(1) +#define BME680_OSP_SEL UINT16_C(2) +#define BME680_OSH_SEL UINT16_C(4) +#define BME680_GAS_MEAS_SEL UINT16_C(8) +#define BME680_FILTER_SEL UINT16_C(16) +#define BME680_HCNTRL_SEL UINT16_C(32) +#define BME680_RUN_GAS_SEL UINT16_C(64) +#define BME680_NBCONV_SEL UINT16_C(128) +#define BME680_GAS_SENSOR_SEL UINT16_C(BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL) + +/** Number of conversion settings*/ +#define BME680_NBCONV_MIN UINT8_C(0) +#define BME680_NBCONV_MAX UINT8_C(10) + +/** Mask definitions */ +#define BME680_GAS_MEAS_MSK UINT8_C(0x30) +#define BME680_NBCONV_MSK UINT8_C(0X0F) +#define BME680_FILTER_MSK UINT8_C(0X1C) +#define BME680_OST_MSK UINT8_C(0XE0) +#define BME680_OSP_MSK UINT8_C(0X1C) +#define BME680_OSH_MSK UINT8_C(0X07) +#define BME680_HCTRL_MSK UINT8_C(0x08) +#define BME680_RUN_GAS_MSK UINT8_C(0x10) +#define BME680_MODE_MSK UINT8_C(0x03) +#define BME680_RHRANGE_MSK UINT8_C(0x30) +#define BME680_RSERROR_MSK UINT8_C(0xf0) +#define BME680_NEW_DATA_MSK UINT8_C(0x80) +#define BME680_GAS_INDEX_MSK UINT8_C(0x0f) +#define BME680_GAS_RANGE_MSK UINT8_C(0x0f) +#define BME680_GASM_VALID_MSK UINT8_C(0x20) +#define BME680_HEAT_STAB_MSK UINT8_C(0x10) +#define BME680_MEM_PAGE_MSK UINT8_C(0x10) +#define BME680_SPI_RD_MSK UINT8_C(0x80) +#define BME680_SPI_WR_MSK UINT8_C(0x7f) +#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F) + +/** Bit position definitions for sensor settings */ +#define BME680_GAS_MEAS_POS UINT8_C(4) +#define BME680_FILTER_POS UINT8_C(2) +#define BME680_OST_POS UINT8_C(5) +#define BME680_OSP_POS UINT8_C(2) +#define BME680_RUN_GAS_POS UINT8_C(4) + +/** Array Index to Field data mapping for Calibration Data*/ +#define BME680_T2_LSB_REG (1) +#define BME680_T2_MSB_REG (2) +#define BME680_T3_REG (3) +#define BME680_P1_LSB_REG (5) +#define BME680_P1_MSB_REG (6) +#define BME680_P2_LSB_REG (7) +#define BME680_P2_MSB_REG (8) +#define BME680_P3_REG (9) +#define BME680_P4_LSB_REG (11) +#define BME680_P4_MSB_REG (12) +#define BME680_P5_LSB_REG (13) +#define BME680_P5_MSB_REG (14) +#define BME680_P7_REG (15) +#define BME680_P6_REG (16) +#define BME680_P8_LSB_REG (19) +#define BME680_P8_MSB_REG (20) +#define BME680_P9_LSB_REG (21) +#define BME680_P9_MSB_REG (22) +#define BME680_P10_REG (23) +#define BME680_H2_MSB_REG (25) +#define BME680_H2_LSB_REG (26) +#define BME680_H1_LSB_REG (26) +#define BME680_H1_MSB_REG (27) +#define BME680_H3_REG (28) +#define BME680_H4_REG (29) +#define BME680_H5_REG (30) +#define BME680_H6_REG (31) +#define BME680_H7_REG (32) +#define BME680_T1_LSB_REG (33) +#define BME680_T1_MSB_REG (34) +#define BME680_GH2_LSB_REG (35) +#define BME680_GH2_MSB_REG (36) +#define BME680_GH1_REG (37) +#define BME680_GH3_REG (38) + +/** BME680 register buffer index settings*/ +#define BME680_REG_FILTER_INDEX UINT8_C(5) +#define BME680_REG_TEMP_INDEX UINT8_C(4) +#define BME680_REG_PRES_INDEX UINT8_C(4) +#define BME680_REG_HUM_INDEX UINT8_C(2) +#define BME680_REG_NBCONV_INDEX UINT8_C(1) +#define BME680_REG_RUN_GAS_INDEX UINT8_C(1) +#define BME680_REG_HCTRL_INDEX UINT8_C(0) + +/** Macro to combine two 8 bit data's to form a 16 bit data */ +#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb) + +/** Macro to SET and GET BITS of a register */ +#define BME680_SET_BITS(reg_data, bitname, data) \ + ((reg_data & ~(bitname##_MSK)) | \ + ((data << bitname##_POS) & bitname##_MSK)) +#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \ + (bitname##_POS)) + +/** Macro variant to handle the bitname position if it is zero */ +#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \ + ((reg_data & ~(bitname##_MSK)) | \ + (data & bitname##_MSK)) +#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK)) + +/** Type definitions */ +/* + * Generic communication function pointer + * @param[in] dev_id: Place holder to store the id of the device structure + * Can be used to store the index of the Chip select or + * I2C address of the device. + * @param[in] reg_addr: Used to select the register the where data needs to + * be read from or written to. + * @param[in/out] reg_data: Data array to read/write + * @param[in] len: Length of the data array + */ +typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len); + +/* + * Delay function pointer + * @param[in] period: Time period in milliseconds + */ +typedef void (*bme680_delay_fptr_t)(uint32_t period); + +/*! + * @brief Interface selection Enumerations + */ +enum bme680_intf { + /*! SPI interface */ + BME680_SPI_INTF, + /*! I2C interface */ + BME680_I2C_INTF +}; + +/* structure definitions */ +/*! + * @brief Sensor field data structure + */ +struct bme680_field_data { + /*! Contains new_data, gasm_valid & heat_stab */ + uint8_t status; + /*! The index of the heater profile used */ + uint8_t gas_index; + /*! Measurement index to track order */ + uint8_t meas_index; + /*! Temperature in degree celsius x100 */ + int16_t temperature; + /*! Pressure in Pascal */ + uint32_t pressure; + /*! Humidity in % relative humidity x1000 */ + uint32_t humidity; + /*! Gas resistance in Ohms */ + uint32_t gas_resistance; +}; + +/*! + * @brief Structure to hold the Calibration data + */ +struct bme680_calib_data { + /*! Variable to store calibrated humidity data */ + uint16_t par_h1; + /*! Variable to store calibrated humidity data */ + uint16_t par_h2; + /*! Variable to store calibrated humidity data */ + int8_t par_h3; + /*! Variable to store calibrated humidity data */ + int8_t par_h4; + /*! Variable to store calibrated humidity data */ + int8_t par_h5; + /*! Variable to store calibrated humidity data */ + uint8_t par_h6; + /*! Variable to store calibrated humidity data */ + int8_t par_h7; + /*! Variable to store calibrated gas data */ + int8_t par_gh1; + /*! Variable to store calibrated gas data */ + int16_t par_gh2; + /*! Variable to store calibrated gas data */ + int8_t par_gh3; + /*! Variable to store calibrated temperature data */ + uint16_t par_t1; + /*! Variable to store calibrated temperature data */ + int16_t par_t2; + /*! Variable to store calibrated temperature data */ + int8_t par_t3; + /*! Variable to store calibrated pressure data */ + uint16_t par_p1; + /*! Variable to store calibrated pressure data */ + int16_t par_p2; + /*! Variable to store calibrated pressure data */ + int8_t par_p3; + /*! Variable to store calibrated pressure data */ + int16_t par_p4; + /*! Variable to store calibrated pressure data */ + int16_t par_p5; + /*! Variable to store calibrated pressure data */ + int8_t par_p6; + /*! Variable to store calibrated pressure data */ + int8_t par_p7; + /*! Variable to store calibrated pressure data */ + int16_t par_p8; + /*! Variable to store calibrated pressure data */ + int16_t par_p9; + /*! Variable to store calibrated pressure data */ + uint8_t par_p10; + /*! Variable to store t_fine size */ + int32_t t_fine; + /*! Variable to store heater resistance range */ + uint8_t res_heat_range; + /*! Variable to store heater resistance value */ + int8_t res_heat_val; + /*! Variable to store error range */ + int8_t range_sw_err; +}; + +/*! + * @brief BME680 sensor settings structure which comprises of ODR, + * over-sampling and filter settings. + */ +struct bme680_tph_sett { + /*! Humidity oversampling */ + uint8_t os_hum; + /*! Temperature oversampling */ + uint8_t os_temp; + /*! Pressure oversampling */ + uint8_t os_pres; + /*! Filter coefficient */ + uint8_t filter; +}; + +/*! + * @brief BME680 gas sensor which comprises of gas settings + * and status parameters + */ +struct bme680_gas_sett { + /*! Variable to store nb conversion */ + uint8_t nb_conv; + /*! Variable to store heater control */ + uint8_t heatr_ctrl; + /*! Run gas enable value */ + uint8_t run_gas; + /*! Pointer to store heater temperature */ + uint16_t heatr_temp; + /*! Pointer to store duration profile */ + uint16_t heatr_dur; +}; + +/*! + * @brief BME680 device structure + */ +struct bme680_dev { + /*! Chip Id */ + uint8_t chip_id; + /*! Device Id */ + uint8_t dev_id; + /*! SPI/I2C interface */ + enum bme680_intf intf; + /*! Memory page used */ + uint8_t mem_page; + /*! Ambient temperature in Degree C*/ + int8_t amb_temp; + /*! Sensor calibration data */ + struct bme680_calib_data calib; + /*! Sensor settings */ + struct bme680_tph_sett tph_sett; + /*! Gas Sensor settings */ + struct bme680_gas_sett gas_sett; + /*! Sensor power modes */ + uint8_t power_mode; + /*! New sensor fields */ + uint8_t new_fields; + /*! Store the info messages */ + uint8_t info_msg; + /*! Burst read structure */ + bme680_com_fptr_t read; + /*! Burst write structure */ + bme680_com_fptr_t write; + /*! Delay in ms */ + bme680_delay_fptr_t delay_ms; + /*! Communication function result */ + int8_t com_rslt; +}; + +#endif /* BME680_DEFS_H_ */ +/** @}*/ +/** @}*/ diff --git a/extras/bme680/bme680_drv.c b/extras/bme680/bme680_drv.c new file mode 100644 index 0000000..fc020d2 --- /dev/null +++ b/extras/bme680/bme680_drv.c @@ -0,0 +1,733 @@ +/* + * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and + * gas sensor connected to I2C or SPI + * + * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * + * PLEASE NOTE: + * Due to the complexity of the sensor output value computation based on many + * calibration parameters, the original Bosch Sensortec BME680 driver that is + * released as open source [https://github.com/BoschSensortec/BME680_driver] + * and integrated for internal use. Please note the license of this part, which + * is an extended BSD license and can be found in each of that source files. + * + * --------------------------------------------------------------------------- + * + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "bme680_drv.h" +#include "FreeRTOS.h" +#include "task.h" + +#include "espressif/esp_common.h" +#include "espressif/sdk_private.h" + +#ifdef BME680_DEBUG +#define debug(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) +#else +#define debug(s, f, ...) +#endif + +#define error(s, f, ...) printf("%s %s: " s "\n", "BME680", f, ## __VA_ARGS__) + +#define BME680_BG_TASK_PRIORITY 9 + +/** + * Forward declation of internal functions used by embedded Bosch Sensortec BME680 driver. + */ +static void bme680_user_delay_ms(uint32_t period); +static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); +static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len); + +/** + * Sensor data structures + */ +bme680_sensor_t bme680_sensors[BME680_MAX_SENSORS]; + +/** */ + +static bool bme680_valid_sensor (uint32_t sensor, const char* function) +{ + if (sensor < 0 || sensor > BME680_MAX_SENSORS) + { + debug("Wrong sensor id %d.", function, sensor); + return false; + } + + if (!bme680_sensors[sensor].active) + { + debug("Sensor with id %d is not active.", function, sensor); + return false; + } + + return true; +} + + +static bool bme680_is_available (uint32_t id) +{ + struct bme680_dev *dev = &bme680_sensors[id].dev; + + if (!bme680_valid_sensor(id, __FUNCTION__) || + bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev) != BME680_OK) + { + return false; + } + + return true; +} + + +static void bme680_compute_values (uint8_t id, struct bme680_field_data* data) +{ + if (!bme680_valid_sensor(id, __FUNCTION__) || !data) + return; + + bme680_value_set_t act; + bme680_value_set_t avg = bme680_sensors[id].average; + float w = bme680_sensors[id].average_weight; + + act.temperature = bme680_sensors[id].dev.tph_sett.os_temp ? data->temperature / 100.0f : 0; + act.pressure = bme680_sensors[id].dev.tph_sett.os_pres ? data->pressure / 100.0f : 0; + act.humidity = bme680_sensors[id].dev.tph_sett.os_hum ? data->humidity / 1000.0f : 0; + act.gas = bme680_sensors[id].dev.gas_sett.heatr_dur ? data->gas_resistance : 0; + + if (bme680_sensors[id].average_first_measurement || + !bme680_sensors[id].average_computation) + { + bme680_sensors[id].average_first_measurement = false; + + avg = act; + } + else + { + avg.temperature = w * act.temperature + (1-w) * avg.temperature; + avg.humidity = w * act.humidity + (1-w) * avg.humidity; + avg.pressure = w * act.pressure + (1-w) * avg.pressure; + avg.gas = w * act.gas + (1-w) * avg.gas; + } + + bme680_sensors[id].actual = act; + bme680_sensors[id].average = avg; +} + + +static void bme680_background_task (void *pvParameters) +{ + uint32_t id = (uint32_t)pvParameters; + uint32_t next_time = sdk_system_get_time (); + + while (1) + { + debug("%.3f Sensor %d", __FUNCTION__, (double)sdk_system_get_time()*1e-3, id); + + struct bme680_dev* dev = &bme680_sensors[id].dev; + struct bme680_field_data data; + + uint8_t set_required_settings; + int8_t rslt = BME680_OK; + + /* Select the power mode */ + /* Must be set before writing the sensor configuration */ + dev->power_mode = BME680_FORCED_MODE; + + debug ("Using oversampling rates: %d %d %d", __FUNCTION__, + bme680_sensors[id].dev.tph_sett.os_temp, + bme680_sensors[id].dev.tph_sett.os_pres, + bme680_sensors[id].dev.tph_sett.os_hum); + + /* Set the required sensor settings needed */ + set_required_settings = BME680_OST_SEL | + BME680_OSP_SEL | + BME680_OSH_SEL | + BME680_FILTER_SEL | + BME680_GAS_SENSOR_SEL; + + /* Set the desired sensor configuration */ + rslt = bme680_set_sensor_settings(set_required_settings, dev); + + /* Set the power mode to forced mode to trigger one TPHG measurement cycle */ + rslt = bme680_set_sensor_mode(dev); + + /* Get the total measurement duration so as to sleep or wait till the + * measurement is complete */ + uint16_t meas_period; + bme680_get_profile_dur(&meas_period, dev); + vTaskDelay(meas_period/portTICK_PERIOD_MS); /* Delay till the measurement is ready */ + + if ((rslt = bme680_get_sensor_data(&data, dev)) == BME680_OK) + { + bme680_compute_values(id, &data); + + debug("%d ms: %.2f C, %.2f Percent, %.2f hPa, %.2f Ohm", __FUNCTION__, + sdk_system_get_time (), + bme680_sensors[id].actual.temperature, + bme680_sensors[id].actual.humidity, + bme680_sensors[id].actual.pressure, + bme680_sensors[id].actual.gas); + + if (bme680_sensors[id].cb_function) + bme680_sensors[id].cb_function(id, + bme680_sensors[id].actual, + bme680_sensors[id].average); + + } + else + error("Could not get data from sensor with id %d", __FUNCTION__,id); + + /* Compute next measurement time as well as remaining cycle time*/ + uint32_t system_time = sdk_system_get_time (); + uint32_t remaining_time; + + next_time = next_time + bme680_sensors[id].period*1000; // in us + + if (next_time < system_time) + // in case of timer overflow + remaining_time = UINT32_MAX - system_time + next_time; + else + // normal case + remaining_time = next_time - system_time; + + /* Delay the background task by the cycle time */ + vTaskDelay(remaining_time/1000/portTICK_PERIOD_MS); + } +} + + +bool bme680_init_driver() +{ + for (int id=0; id < BME680_MAX_SENSORS; id++) + bme680_sensors[id].active = false; + + return true; +} + + +uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) +{ + static uint32_t id; + static char bg_task_name[20]; + + // search for first free sensor data structure + for (id=0; id < BME680_MAX_SENSORS; id++) + { + debug("id=%d active=%d", __FUNCTION__, id, bme680_sensors[id].active); + if (!bme680_sensors[id].active) + break; + } + debug("id=%d", __FUNCTION__, id); + + if (id == BME680_MAX_SENSORS) + { + debug("No more sensor data structures available.", __FUNCTION__); + return -1; + } + // init sensor data structure + bme680_sensors[id].bus = bus; + bme680_sensors[id].addr = addr; + bme680_sensors[id].period = 1000; + bme680_sensors[id].average_computation = true; + bme680_sensors[id].average_first_measurement = true; + bme680_sensors[id].average_weight = 0.2; + bme680_sensors[id].cb_function = NULL; + bme680_sensors[id].bg_task = NULL; + + bme680_sensors[id].dev.dev_id = id; + + if (bme680_sensors[id].addr) + { + // I2C interface used + bme680_sensors[id].addr = addr; + bme680_sensors[id].dev.intf = BME680_I2C_INTF; + bme680_sensors[id].dev.read = bme680_user_i2c_read; + bme680_sensors[id].dev.write = bme680_user_i2c_write; + bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; + } + else + { + // SPI interface used + bme680_sensors[id].spi_cs_pin = cs; + bme680_sensors[id].dev.intf = BME680_SPI_INTF; + bme680_sensors[id].dev.read = bme680_user_spi_read; + bme680_sensors[id].dev.write = bme680_user_spi_write; + bme680_sensors[id].dev.delay_ms = bme680_user_delay_ms; + + gpio_enable(bme680_sensors[id].spi_cs_pin, GPIO_OUTPUT); + gpio_write (bme680_sensors[id].spi_cs_pin, true); + } + + // initialize embedded Bosch Sensortec driver + if (bme680_init(&bme680_sensors[id].dev)) + { + error("Could not initialize the sensor device with id %d", __FUNCTION__, id); + return -1; + } + + bme680_sensors[id].active = true; + + /* Set the default temperature, pressure and humidity settings */ + bme680_set_oversampling_rates (id, os_1x, os_1x, os_1x); + bme680_set_filter_size (id, iir_size_3); + + /* Set heater default profile 320 degree Celcius for 150 ms */ + bme680_set_heater_profile (id, 320, 150); + + // check whether sensor is available + if (!bme680_is_available(id)) + { + debug("Sensor with id %d is not available", __FUNCTION__, id); + bme680_sensors[id].active = false; + return -1; + } + + snprintf (bg_task_name, 20, "bme680_bg_task_%d", id); + + if (xTaskCreate (bme680_background_task, bg_task_name, 256, (void*)id, + BME680_BG_TASK_PRIORITY, + &bme680_sensors[id].bg_task) != pdPASS) + { + vTaskDelete(bme680_sensors[id].bg_task); + error("Could not create the background task %s for sensor with id %d\n", + __FUNCTION__, bg_task_name, id); + bme680_sensors[id].active = false; + return false; + } + + return id; +} + + +bool bme680_delete_sensor(uint32_t sensor) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].active = false; + + if (bme680_sensors[sensor].bg_task) + vTaskDelete(bme680_sensors[sensor].bg_task); + + return true; +} + + +bool bme680_set_measurement_period (uint32_t sensor, uint32_t period) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (period < 20) + error("Period of %d ms is less than the minimum " + "period of 20 ms for sensor with id %d.", + __FUNCTION__, period, sensor); + + bme680_sensors[sensor].period = period; + + return true; +} + + +bool bme680_set_callback_function (uint32_t sensor, bme680_cb_function_t bme680_user_function) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].cb_function = bme680_user_function; + + debug("Set callback function done.", __FUNCTION__); + + return false; +} + + +bool bme680_get_values(uint32_t sensor, bme680_value_set_t *actual, bme680_value_set_t *average) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + if (actual) *actual = bme680_sensors[sensor].actual; + if (average) *average = bme680_sensors[sensor].average; + + return true; +} + + +bool bme680_enable_average_computation (uint32_t sensor, bool enabled) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].average_computation = enabled; + bme680_sensors[sensor].average_first_measurement = enabled; + + return true; +} + + +bool bme680_set_average_weight (uint32_t sensor, float weight) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + bme680_sensors[sensor].average_first_measurement = true; + bme680_sensors[sensor].average_weight = weight; + + return true; +} + + +bool bme680_set_oversampling_rates (uint32_t sensor, + bme680_oversampling_t ost, + bme680_oversampling_t osp, + bme680_oversampling_t osh) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.tph_sett.os_temp = ost; + bme680_sensors[sensor].dev.tph_sett.os_pres = osp; + bme680_sensors[sensor].dev.tph_sett.os_hum = osh; + + debug ("Setting oversampling rates done: osrt=%d osp=%d osrh=%d", __FUNCTION__, + bme680_sensors[sensor].dev.tph_sett.os_temp, + bme680_sensors[sensor].dev.tph_sett.os_pres, + bme680_sensors[sensor].dev.tph_sett.os_hum); + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + +bool bme680_set_heater_profile (uint32_t sensor, uint16_t temperature, uint16_t duration) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.gas_sett.heatr_temp = temperature; /* degree Celsius */ + bme680_sensors[sensor].dev.gas_sett.heatr_dur = duration; /* milliseconds */ + + debug ("Setting heater profile done: temperature=%d duration=%d", __FUNCTION__, + bme680_sensors[sensor].dev.gas_sett.heatr_temp, + bme680_sensors[sensor].dev.gas_sett.heatr_dur); + + /* Set the remaining default gas sensor settings and link the heating profile */ + if (temperature == 0 || duration == 0) + bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_DISABLE_GAS_MEAS; + else + bme680_sensors[sensor].dev.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + + +bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size) +{ + if (!bme680_valid_sensor(sensor, __FUNCTION__)) + return false; + + /* Set the temperature, pressure and humidity settings */ + bme680_sensors[sensor].dev.tph_sett.filter = size; + + debug ("Setting filter size done: size=%d", __FUNCTION__, + bme680_sensors[sensor].dev.tph_sett.filter); + + bme680_sensors[sensor].average_first_measurement = true; + + return true; +} + + +/** + * Internal functions used by embedded Bosch Sensortec BME680 driver. + */ + +static void bme680_user_delay_ms(uint32_t period) +{ + /* + * Return control or wait, + * for a period amount of milliseconds + */ + + vTaskDelay(period / portTICK_PERIOD_MS); +} + +#define BME680_SPI_BUF_SIZE 64 // SPI register data buffer size of ESP866 + +static const spi_settings_t bus_settings = { + .mode = SPI_MODE0, + .freq_divider = SPI_FREQ_DIV_10M, + .msb = true, + .minimal_pins = true, + .endianness = SPI_LITTLE_ENDIAN +}; + + +static int8_t bme680_user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to select which Chip Select pin has + * to be set low to activate the relevant device on the SPI bus + */ + + /* + * Data on the bus should be like + * |----------------+---------------------+-------------| + * | MOSI | MISO | Chip Select | + * |----------------+---------------------|-------------| + * | (don't care) | (don't care) | HIGH | + * | (reg_addr) | (don't care) | LOW | + * | (don't care) | (reg_data[0]) | LOW | + * | (....) | (....) | LOW | + * | (don't care) | (reg_data[len - 1]) | LOW | + * | (don't care) | (don't care) | HIGH | + * |----------------+---------------------|-------------| + */ + + // debug("dev_id=%d, reg_addr=%0x, len=%d\n", __FUNCTION__, dev_id, reg_addr, len); + + if (len >= BME680_SPI_BUF_SIZE) + { + error("Error on read from SPI slave on bus 1. Tried to transfer more" + "than %d byte in one read operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); + return -1; + } + + spi_settings_t old_settings; + + static uint8_t mosi[BME680_SPI_BUF_SIZE]; + static uint8_t miso[BME680_SPI_BUF_SIZE]; + + memset (mosi, 0xff, BME680_SPI_BUF_SIZE); + memset (miso, 0xff, BME680_SPI_BUF_SIZE); + + mosi[0] = reg_addr; + + uint8_t bus = bme680_sensors[dev_id].bus; + uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; + + spi_get_settings(bus, &old_settings); + spi_set_settings(bus, &bus_settings); + gpio_write(spi_cs_pin, false); + + size_t success = spi_transfer (bus, (const void*)mosi, (void*)miso, len+1, SPI_8BIT); + + gpio_write(spi_cs_pin, true); + spi_set_settings(bus, &old_settings); + + if (!success) + { + error("Could not read data from SPI bus %d", __FUNCTION__, bus); + return -1; + } + + for (int i=0; i < len; i++) + reg_data[i] = miso[i+1]; + +# ifdef BME680_DEBUG + printf("BME680 %s: Read the following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return 0; +} + + +static int8_t bme680_user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to select which Chip Select pin has + * to be set low to activate the relevant device on the SPI bus + */ + + /* + * Data on the bus should be like + * |---------------------+--------------+-------------| + * | MOSI | MISO | Chip Select | + * |---------------------+--------------|-------------| + * | (don't care) | (don't care) | HIGH | + * | (reg_addr) | (don't care) | LOW | + * | (reg_data[0]) | (don't care) | LOW | + * | (....) | (....) | LOW | + * | (reg_data[len - 1]) | (don't care) | LOW | + * | (don't care) | (don't care) | HIGH | + * |---------------------+--------------|-------------| + */ + + static uint8_t mosi[BME680_SPI_BUF_SIZE]; + + if (len >= BME680_SPI_BUF_SIZE) + { + error("Error on write to SPI slave on bus 1. Tried to transfer more" + "than %d byte in one write operation.", __FUNCTION__, BME680_SPI_BUF_SIZE); + return -1; + } + + mosi[0] = reg_addr; + + for (int i = 0; i < len; i++) + mosi[i+1] = reg_data[i]; + +# ifdef BME680_DEBUG + printf("BME680 %s: Write the following bytes: ", __FUNCTION__); + for (int i = 0; i < len+1; i++) + printf("%0x ", mosi[i]); + printf("\n"); +# endif + + spi_settings_t old_settings; + + uint8_t bus = bme680_sensors[dev_id].bus; + uint8_t spi_cs_pin = bme680_sensors[dev_id].spi_cs_pin; + + spi_get_settings(bus, &old_settings); + spi_set_settings(bus, &bus_settings); + gpio_write(spi_cs_pin, false); + + size_t success = spi_transfer (bus, (const void*)mosi, NULL, len+1, SPI_8BIT); + + gpio_write(spi_cs_pin, true); + spi_set_settings(bus, &old_settings); + + if (!success) + { + error("Could not write data to SPI bus %d", __FUNCTION__, bus); + return -1; + } + + return 0; +} + +static int8_t bme680_user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to store the I2C address of the device + */ + + /* + * Data on the bus should be like + * |------------+---------------------| + * | I2C action | Data | + * |------------+---------------------| + * | Start | - | + * | Write | (reg_addr) | + * | Stop | - | + * | Start | - | + * | Read | (reg_data[0]) | + * | Read | (....) | + * | Read | (reg_data[len - 1]) | + * | Stop | - | + * |------------+---------------------| + */ + + debug ("Read %d byte from i2c slave on bus %d with addr %0x.", + __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + + int result = i2c_slave_read(bme680_sensors[dev_id].bus, + bme680_sensors[dev_id].addr, + ®_addr, reg_data, len); + + if (result) + { + error("Error %d on read %d byte from I2C slave on bus %d with addr %0x.", + __FUNCTION__, result, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + return result; + } + +# ifdef BME680_DEBUG + printf("BME680 %s: Read following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return result; +} + +static int8_t bme680_user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) +{ + /* + * The parameter dev_id can be used as a variable to store the I2C address of the device + */ + + /* + * Data on the bus should be like + * |------------+---------------------| + * | I2C action | Data | + * |------------+---------------------| + * | Start | - | + * | Write | (reg_addr) | + * | Write | (reg_data[0]) | + * | Write | (....) | + * | Write | (reg_data[len - 1]) | + * | Stop | - | + * |------------+---------------------| + */ + + debug ("Write %d byte to i2c slave on bus %d with addr %0x.", + __FUNCTION__, len, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + + int result = i2c_slave_write(bme680_sensors[dev_id].bus, + bme680_sensors[dev_id].addr, + ®_addr, reg_data, len); + + if (result) + { + error("Error %d on write to i2c slave on bus %d with addr %0x.", + __FUNCTION__, result, bme680_sensors[dev_id].bus, bme680_sensors[dev_id].addr); + return result; + } + +# ifdef BME680_DEBUG + printf("BME680 %s: Wrote the following bytes: ", __FUNCTION__); + printf("%0x ", reg_addr); + for (int i=0; i < len; i++) + printf("%0x ", reg_data[i]); + printf("\n"); +# endif + + return result; +} + + diff --git a/extras/bme680/bme680_drv.h b/extras/bme680/bme680_drv.h new file mode 100644 index 0000000..95881a0 --- /dev/null +++ b/extras/bme680/bme680_drv.h @@ -0,0 +1,398 @@ +/* + * Driver for Bosch Sensortec BME680 digital temperature, humity, pressure and + * gas sensor connected to I2C or SPI + * + * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * + * PLEASE NOTE: + * Due to the complexity of the sensor output value compputation based on many + * calibration parameters, the original Bosch Sensortec BME680 driver that is + * released as open source [https://github.com/BoschSensortec/BME680_driver] + * and integrated for internal use. Please note the license of this part, which + * is an extended BSD license and can be found in each of that source files. + * + * --------------------------------------------------------------------------- + * + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BME680_DRV_H_ +#define BME680_DRV_H_ + +#include "stdint.h" +#include "stdbool.h" + +#include "FreeRTOS.h" +#include + +#include "i2c/i2c.h" +#include "esp/spi.h" + +#include "bme680/bme680.h" + +// Uncomment to enable debug output +// #define BME680_DEBUG + +// Change this if you need more than 3 BME680 sensors +#define BME680_MAX_SENSORS 3 + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @brief Type for actual and average sensor values (called TPHG values) + */ +typedef struct { + float temperature; // temperature in degree Celcius + float pressure; // barometric pressure in hPascal + float humidity; // humidity in percent + float gas; // gas resistance in Ohm +} bme680_value_set_t; + +/** + * @brief callback unction type to pass result of measurement to user tasks + */ +typedef void (*bme680_cb_function_t)(uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average); + +/** + * @brief BME680 sensor device data structure type + */ +typedef struct { + + bool active; + + uint8_t bus; // I2C = 0, SPI = 1 + uint8_t addr; // I2C = slave address, SPI = 0 + uint8_t spi_cs_pin; // GPIO used as SPI CS + + uint32_t period; + + bme680_value_set_t actual; + bme680_value_set_t average; + + bool average_computation; + bool average_first_measurement; + float average_weight; + + bme680_cb_function_t cb_function; + TaskHandle_t bg_task; + + struct bme680_dev dev; // internal Bosch BME680 driver data structure + +} bme680_sensor_t; + + +/** + * @brief BME680 oversampling rate values + */ +typedef enum { + none = 0, // measurement is skipped, output values are invalid + os_1x = 1, // default oversampling rates + os_2x = 2, + os_4x = 3, + os_8x = 4, + os_16x = 5 +} bme680_oversampling_t; + + +/** + * @brief BME680 IIR filter sizes + */ +typedef enum { + iir_size_0 = 0, // filter is not used + iir_size_1 = 1, + iir_size_3 = 2, + iir_size_7 = 3, + iir_size_15 = 4, + iir_size_31 = 5, + iir_size_63 = 6, + iir_size_127 = 7 +} bme680_filter_size_t; + +/** + * @brief Initialize the BME680 driver + * + * This function initializes all internal data structures. It must be called + * exactly once at the beginning. + * + * @return true on success, false on error + */ +bool bme680_init_driver (); + + +/** + * @brief Create and initialize a BME680 sensor + * + * This function initializes the BME680 sensor and checks its availability. + * + * Furthermore, the starts a background task for measurements with + * the sensor. The background task carries out the measurements periodically + * using BME680's single shot data acquisition mode with a default period + * of 1000 ms. This period be changed using function *set_measurment_period*. + * + * During each measurement the background task + * + * 1. determines *actual sensor values* + * 2. computes optionally *average sensor values* + * 3. calls back optionally a registered function of user task. + * + * The average value computation uses an exponential moving average + * and can be activated (default) or deactivated with function + * *bme680_enable_average_computation*. If the average value computation is + * deactivated, *average sensor values* correspond to *actual sensor values*. + * The weight (smoothing factor) used in the average value computatoin is 0.2 + * by default and can be changed with function *bme680_set_average_weight*. + * + * If a callback method has been registered with function + * *bme680_set_callback_function*, it is called after each measurement + * to pass measurement results to user tasks. Otherwise, user tasks have to + * use function *bme680_get_values* explicitly to get the results. + * + * The sensor can either be connected to an I2C or SPI bus. If *addr* is + * greater than 0, it defines a valid I2C slave address and the sensor is + * connected to an I2C bus using this address. If *addr* is 0, the sensor + * is connected to a SPI bus. In both cases, the *bus* parameter specifies + * the ID of the corresponding bus. In case of SPI, parameter *cs* defines + * the GPIO used as CS signal. + * + * @param bus I2C or SPI bus at which BME680 sensor is connected + * @param addr I2C addr of the BME680 sensor or 0 for SPI + * @param cs SPI CS GPIO, ignored for I2C + * + * @return ID of the sensor (0 or greater on success or -1 on error) + */ +uint32_t bme680_create_sensor (uint8_t bus, uint8_t addr, uint8_t cs_pin); + + +/** + * @brief Set the period of the background measurement task for the given + * sensor + * + * Please note: The minimum period is 20 ms since each measurement takes + * about 20 ms. + * + * @param sensor ID of the sensor + * @param period Measurement period in ms (default 1000 ms) + * + * @return true on success, false on error + */ +bool bme680_set_measurement_period (uint32_t sensor, uint32_t period); + + +/** + * @brief Set the callback function for the background measurement task for + * the given sensor + * + * If a callback method is registered, it is called after each measurement to + * pass measurement results to user tasks. Thus, callback function is executed + * at the same rate as the measurements. + * + * @param sensor ID of the sensor + * @param function user function called after each measurement + * (NULL to delete it for the sensor) + * + * @return true on success, false on error + */ +bool bme680_set_callback_function (uint32_t sensor, + bme680_cb_function_t user_function); + + +/** + * @brief Deletes the BME680 sensor given by its ID + * + * @param sensor ID of the sensor + * + * @return true on success, false on error + */ +bool bme680_delete_sensor (uint32_t sensor); + + +/** + * @brief Get the actual and average sensor values + * + * This function returns the actual and average sensor values of the last + * measurement. The parameters *actual* and *average* are pointers to data + * structures of the type *bme680_value_set_t*, which are filled with the + * of last measurement. Use NULL for the appropriate parameter if you are + * not interested in specific results. + * + * If average value computation is deactivated, average sensor values + * correspond to the actual sensor values. + * + * Please note: Calling this function is only necessary if no callback + * function has been registered for the sensor. + * + * @param sensor ID of the sensor + * @param actual Pointer to a data structure for actual sensor values + * @param average Pointer to a data structure for average sensor values + * + * @return true on success, false on error + */ +bool bme680_get_values (uint32_t sensor, + bme680_value_set_t *actual, + bme680_value_set_t *average); + + +/** + * @brief Enable (default) or disable the average value computation + * + * In case, the average value computation is disabled, average sensor values + * correspond to the actual sensor values. + * + * Please note: All average sensor values are reset if parameters for + * measurement are changed using either function *bme680_set_average_weight*, + * *bme680_set_oversampling_rates*, *bme680_set_heater_profile* or + * *bme680_set_filter_size*. + * + * @param sensor id of the sensor + * @param enabled true to enable or false to disable average computation + * + * @return true on success, false on error +*/ +bool bme680_enable_average_computation (uint32_t sensor, bool enabled); + + +/** + * @brief Set the weight (smoothing factor) for average value computation + * + * At each measurement carried out by the background task, actual sensor + * values are determined. If average value computation is enabled (default), + * exponential moving average values are computed according to following + * equation + * + * Average[k] = W * Value + (1-W) * Average [k-1] + * + * where coefficient W represents the degree of weighting decrease, a constant + * smoothing factor between 0 and 1. A higher W discounts older observations + * faster. W is 0.2 by default. + * + * @param sensor id of the sensor + * @param weight coefficient W (default is 0.2) + * + * @return true on success, false on error + */ +bool bme680_set_average_weight (uint32_t sensor, float weight); + + +/** + * @brief Set the oversampling rates for measurements + * + * The BME680 sensor allows to define different oversampling rates for the + * measurements of temperature, pressure and humidity, separatly. Possible + * oversampling rates defined by enumaration type are none, 1x (default), + * 2x, 4x, 8x, and 16x. In case of *none*, the corressponing measurement is + * skipped and output values are invalid. + * + * Please note: To disable the measurement of either temperature, pressure + * or humidity, set the corresponding oversamling rate to *none*. + * + * @param sensor id of the sensor + * @param ost oversampling rate for temperature measurements + * @param osp oversampling rate for pressure measurements + * @param osh oversampling rate for humidity measurements + * + * @return true on success, false on error + */ +bool bme680_set_oversampling_rates (uint32_t sensor, + bme680_oversampling_t ost, + bme680_oversampling_t osp, + bme680_oversampling_t osh); + +/** + * @brief Set the heater profile for gas measurements + * + * For gas measurement the sensor integrates a heater. The paremeters for + * this heater are defined by a heater profile. Such a heater profile + * consists of a temperature setting point (the target temperature) and the + * heating duration. + * + * Even though the sensor supports up to 10 different profiles, only one + * profile is used by this driver for simplicity. The temperature setting + * point and the heating duration of this profile can be defined by this + * function. Default values are 320 degree Celcius as target temperature and + * 150 ms heating duration. If heating duration is 0 ms, the gas measurement + * is skipped and output values are invalid. + * + * Please note: To disable the measurement of gas, set the heating duration + * to 0 ms. + * + * Please note: According to the datasheet, target temperatures of between + * 200 and 400 degrees Celsius are typical and about 20 to 30 ms are necessary + * for the heater to reach the desired target temperature. + * + * @param sensor id of the sensor + * @param temperature heating temperature in degree Celcius + * @param duration heating duration in milliseconds + * + * @return true on success, false on error + */ +bool bme680_set_heater_profile (uint32_t sensor, + uint16_t temperature, + uint16_t duration); + + +/** + * @brief Set the size of the IIR filter + * + * The sensor integrates an internal IIR filter (low pass filter) to + * reduce short-term changes in sensor output values caused by external + * disturbances. It effectively reduces the bandwidth of the sensor output + * values. + * + * The filter can optionally be used for pressure and temperature data that + * are subject to many short-term changes. Humidity and gas inside the sensor + * does not fluctuate rapidly and does not require such a low pass filtering. + * + * This function sets the size of the filter. The default filter size is + * 3 (iir_size_3). + * + * Please note: If the size of the filter is 0, the filter is not used. + * + * @param sensor id of the sensor + * @param size IIR filter size + * + * @return true on success, false on error + */ +bool bme680_set_filter_size(uint32_t sensor, bme680_filter_size_t size); + + + +#ifdef __cplusplus +} +#endif /* End of CPP guard */ + +#endif /* BME680_DRV_H_ */ + diff --git a/extras/bme680/component.mk b/extras/bme680/component.mk new file mode 100644 index 0000000..f890ad0 --- /dev/null +++ b/extras/bme680/component.mk @@ -0,0 +1,9 @@ +# Component makefile for extras/bme60 + +# expected anyone using bme680 driver includes it as 'bme680/bme680.h' +INC_DIRS += $(bme680_ROOT).. + +# args for passing into compile rule generation +bme680_SRC_DIR = $(bme680_ROOT) + +$(eval $(call component_compile_rules,bme680)) From 4927b2e04fb3cc0818c433e6ba32705663c64ecc Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sun, 1 Oct 2017 01:51:21 +0200 Subject: [PATCH 40/41] Driver for Bosch BME680 sensor added with Examples Bosch Sensortronic's BME680 is a brand new integrated environmental sensor. It integrates temperature, pressure, humidity and gas sensors with high accuracy within a single unit. These are the examples on how to use the new driver for BME680. --- examples/bme680/README.md | 35 ++++++ examples/bme680/bme680_callback_i2c/Makefile | 3 + .../bme680_callback_i2c/bme680_callback_i2c.c | 99 +++++++++++++++ .../bme680_callback_i2c_two_sensors/Makefile | 3 + .../bme680_callback_i2c_two_sensors.c | 117 ++++++++++++++++++ examples/bme680/bme680_callback_spi/Makefile | 3 + .../bme680_callback_spi/bme680_callback_spi.c | 97 +++++++++++++++ examples/bme680/bme680_task_i2c/Makefile | 3 + .../bme680/bme680_task_i2c/bme680_task_i2c.c | 106 ++++++++++++++++ examples/bme680/bme680_timer_i2c/Makefile | 3 + .../bme680_timer_i2c/bme680_timer_i2c.c | 105 ++++++++++++++++ 11 files changed, 574 insertions(+) create mode 100644 examples/bme680/README.md create mode 100644 examples/bme680/bme680_callback_i2c/Makefile create mode 100644 examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c create mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/Makefile create mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c create mode 100644 examples/bme680/bme680_callback_spi/Makefile create mode 100644 examples/bme680/bme680_callback_spi/bme680_callback_spi.c create mode 100644 examples/bme680/bme680_task_i2c/Makefile create mode 100644 examples/bme680/bme680_task_i2c/bme680_task_i2c.c create mode 100644 examples/bme680/bme680_timer_i2c/Makefile create mode 100644 examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c diff --git a/examples/bme680/README.md b/examples/bme680/README.md new file mode 100644 index 0000000..d39c258 --- /dev/null +++ b/examples/bme680/README.md @@ -0,0 +1,35 @@ +# BME680 Driver Examples + +These examples references two addtional drivers [i2c](https://github.com/kanflo/esp-open-rtos-driver-i2c) and [bme680](https://github.com/gschorcht/esp-open-rtos/extras/bme680), which are provided in the `../../extras` folder. + +If you plan to use one or both of this drivers in your own projects, please check the main development pages for updated versions or reported issues. + +## Hardware setup + +There are examples using I2C with one or two sensors as well as examples using SPI with one sensor. + +To run examples with **one sensor** as I2C slave, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the BME680 sensor's I2C interface. + +If you want to run examples with **two sensors**, you could do this with only one bus and different I2C addresses or with two buses and the same or different I2C addresses. In later case, use GPIO16 (SCL) and GPIO14 (SDA) for the second I2C bus. + +## Example description + +__*shtx_callback_i2c*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. + +__*shtx_callback_i2c_two_sensors*__ + +In this example, **two sensors** are used which are connected to **different I2C buses** but with the same slave addresses. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters for both sensors differently. In this example, there is no error handling. + +__*shtx_callback_spi*__ + +In this example, only **one sensor** connected to **SPI** is used. It shows how to use a **callback function** to get the results of the periodic measurements. In addition, it shows how to change some optional sensor and measurement parameters. In this example, there is no error handling. + +__*shtx_task_one_sensor*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **task** in conjunction with function __*bme680_get_values*__ to get the results of the periodic measurements. The task uses the *vTaskDelay* function to perform a periodic execution of the *bme680_get_values* function at the same rate as that of the periodic measurements. In this example, there is no error handling. + +__*shtx_timer_one_sensor*__ + +In this example, only **one sensor** connected to **I2C** is used. It shows how to use a **software timer** and a **timer callback function** in conjunction with function __*bme680_get_values*__ to get the results of periodic measurements. The timer callback function executes function *bme680_get_values* to get the results. The timer is started with same period as periodic measurements. Thus, the timer callback function is executed at same rate as periodic measurements. There is no error handling in this example. diff --git a/examples/bme680/bme680_callback_i2c/Makefile b/examples/bme680/bme680_callback_i2c/Makefile new file mode 100644 index 0000000..7dc4772 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_I2C +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c b/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c new file mode 100644 index 0000000..5ed1098 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c/bme680_callback_i2c.c @@ -0,0 +1,99 @@ +/** + * Simple example with one sensor connected to I2C bus 0 + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/Makefile b/examples/bme680/bme680_callback_i2c_two_sensors/Makefile new file mode 100644 index 0000000..5b2d776 --- /dev/null +++ b/examples/bme680/bme680_callback_i2c_two_sensors/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_I2C_Two_Sensors +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c b/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c new file mode 100644 index 0000000..153fc2a --- /dev/null +++ b/examples/bme680/bme680_callback_i2c_two_sensors/bme680_callback_i2c_two_sensors.c @@ -0,0 +1,117 @@ +/** + * Simple example with two sensors connected to differen I2C busses + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 Bus 0 BME680_1 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + * + * Bus 1 BME680_2 + * GPIO 12 (SCL) -> SCL + * GPIO 14 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_1_BUS 0 +#define I2C_1_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_1_SDA_PIN GPIO_ID_PIN((4)) + +#define I2C_2_BUS 1 +#define I2C_2_SCL_PIN GPIO_ID_PIN((12)) +#define I2C_2_SDA_PIN GPIO_ID_PIN((14)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor1; +static uint32_t sensor2; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_1_BUS, I2C_1_SCL_PIN, I2C_1_SDA_PIN, I2C_FREQ_100K); + i2c_init(I2C_2_BUS, I2C_2_SCL_PIN, I2C_2_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensors connected to I2C bus 0 (I2C_BUS_1) and (I2C_BUS_1). + // They can use same or different addresses. Parameter *cs* is ignored + // in case of I2C. + sensor1 = bme680_create_sensor (I2C_1_BUS, BME680_ADDR2, 0); + sensor2 = bme680_create_sensor (I2C_2_BUS, BME680_ADDR2, 0); + + // Register the callback functions to get measurement results. + bme680_set_callback_function (sensor1, &my_callback_function); + bme680_set_callback_function (sensor2, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 2000 ms and + // 5000 ms, respectively. + bme680_set_measurement_period (sensor1, 2000); + bme680_set_measurement_period (sensor2, 5000); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // sensor1 and 16x oversampling for sensor2. Humidity measurement is + // skipped for sensor1. + bme680_set_oversampling_rates(sensor1, os_2x, os_2x, none); + bme680_set_oversampling_rates(sensor2, os_8x, os_8x, os_8x); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 15 and 63, respectively. + bme680_set_filter_size(sensor1, iir_size_15); + bme680_set_filter_size(sensor2, iir_size_63); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms and 400 degrees for 150 ms, respectively. + bme680_set_heater_profile (sensor1, 200, 100); + bme680_set_heater_profile (sensor2, 400, 150); +} + diff --git a/examples/bme680/bme680_callback_spi/Makefile b/examples/bme680/bme680_callback_spi/Makefile new file mode 100644 index 0000000..a0dc401 --- /dev/null +++ b/examples/bme680/bme680_callback_spi/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Callback_SPI +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_callback_spi/bme680_callback_spi.c b/examples/bme680/bme680_callback_spi/bme680_callback_spi.c new file mode 100644 index 0000000..94b0aaf --- /dev/null +++ b/examples/bme680/bme680_callback_spi/bme680_callback_spi.c @@ -0,0 +1,97 @@ +/** + * Simple example with one sensor connected to SPI bus 1 + * using BME680 driver and callback function to get the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 12 (MISO) <- SDO + * GPIO 13 (MOSI) -> SDI + * GPIO 14 (SCK) -> SCK + * GPIO 2 (CS) -> CS + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +#define SPI_BUS 1 +#define SPI_CS_GPIO 2 // GPIO 15, the default CS of SPI bus 1, can't be used + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Everything you need is a callback function that can handle + * callbacks from the background measurement task of the + * BME680 driver. This function is called periodically + * and delivers the actual and average sensor value sets for + * given sensor. + */ + +static void my_callback_function (uint32_t sensor, + bme680_value_set_t actual, + bme680_value_set_t average) +{ + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor at bus SPI_BUS with SPI_CS_GPIO as CS signal. + // Parameter *addr* has to be 0 in case of SPI bus. + sensor = bme680_create_sensor (SPI_BUS, 0, SPI_CS_GPIO); + + // Register the callback function to get measurement results. + bme680_set_callback_function (sensor, &my_callback_function); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); + + // That's it. +} + diff --git a/examples/bme680/bme680_task_i2c/Makefile b/examples/bme680/bme680_task_i2c/Makefile new file mode 100644 index 0000000..b7bab98 --- /dev/null +++ b/examples/bme680/bme680_task_i2c/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Task_I2C +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_task_i2c/bme680_task_i2c.c b/examples/bme680/bme680_task_i2c/bme680_task_i2c.c new file mode 100644 index 0000000..91f106f --- /dev/null +++ b/examples/bme680/bme680_task_i2c/bme680_task_i2c.c @@ -0,0 +1,106 @@ +/** + * Simple example with one sensor connected to I2C bus 0 + * using BME680 driver and a user task that polls the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static uint32_t sensor; + +/** + * Task that executes function bme680_get_values to get last + * actual and average sensor values. + */ +void my_user_task(void *pvParameters) +{ + bme680_value_set_t actual; + bme680_value_set_t average; + + while (1) + { + bme680_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); + + // Delay value has to be equal or greater than the period of measurment + // task + vTaskDelay(1000 / portTICK_PERIOD_MS); + } +} + + + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Create a task for getting results + xTaskCreate(my_user_task, "my_user_task", 256, NULL, 2, NULL); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + diff --git a/examples/bme680/bme680_timer_i2c/Makefile b/examples/bme680/bme680_timer_i2c/Makefile new file mode 100644 index 0000000..68049cb --- /dev/null +++ b/examples/bme680/bme680_timer_i2c/Makefile @@ -0,0 +1,3 @@ +PROGRAM=BME680_Timer_I2C +EXTRA_COMPONENTS = extras/i2c extras/bme680 +include ../../../common.mk diff --git a/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c b/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c new file mode 100644 index 0000000..26b5b57 --- /dev/null +++ b/examples/bme680/bme680_timer_i2c/bme680_timer_i2c.c @@ -0,0 +1,105 @@ +/** + * Simple example with one sensor connected to I2C bus 0 + * using BME680 driver and a timer to poll the results. + * + * Harware configuration: + * + * ESP8266 BME680 + * GPIO 5 (SCL) -> SCL + * GPIO 4 (SDA) -- SDA + */ + +#include "espressif/esp_common.h" +#include "esp/uart.h" +#include "i2c/i2c.h" +#include "timers.h" + +// include BME680 driver +#include "bme680/bme680_drv.h" + +// define I2C interfaces at which BME680 sensors can be connected +#define I2C_BUS 0 +#define I2C_SCL_PIN GPIO_ID_PIN((5)) +#define I2C_SDA_PIN GPIO_ID_PIN((4)) + +#define BME680_ADDR1 0x76 +#define BME680_ADDR2 0x77 // default + +static TimerHandle_t timerHandle; +static uint32_t sensor; + +/** + * Timer callback function that executes function bme680_get_values to get last + * actual and average sensor values for given sensor. + */ + +static void my_sensor_timer_cb(TimerHandle_t xTimer) +{ + bme680_value_set_t actual; + bme680_value_set_t average; + + bme680_get_values(sensor, &actual, &average); + + printf("%.3f Sensor %d: %.2f (%.2f) C, %.2f (%.2f) Percent, %.2f (%.2f) hPa, %.2f (%.2f) Ohm\n", + (double)sdk_system_get_time()*1e-3, sensor, + actual.temperature, average.temperature, + actual.humidity, average.humidity, + actual.pressure, average.pressure, + actual.gas, average.gas); +} + +void user_init(void) +{ + // Set UART Parameter + uart_set_baud(0, 115200); + // Give the UART some time to settle + sdk_os_delay_us(500); + + /** Please note: + * Function *bme680_create_sensor* returns a value greater or equal 0 + * on succes, all other *bme680_* functions return true on success. Using + * these return values, you could realize an error handling. Error + * handling is not realized in this example due to readability reasons. + */ + + /** -- MANDATORY PART -- */ + + // Init all I2C bus interfaces at which BME680 sensors are connected + i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + + // Init BME680 driver itself. + bme680_init_driver(); + + // Create the sensor with slave address 0x77 (BME680_ADDR2) connected to + // I2C bus 0 (I2C_BUS_1). Parameter *cs* is ignored in case of I2C. + sensor = bme680_create_sensor (I2C_BUS, BME680_ADDR2, 0); + + // Create and start a timer that calls my_sensor_timer_cb every 1000 ms + // Timer value has to be equal or greater than the period of measurment + // task above + + if ((timerHandle = xTimerCreate("BME680 Trigger", 1000/portTICK_PERIOD_MS, + pdTRUE, NULL, my_sensor_timer_cb))) + xTimerStart(timerHandle, 0); + + // That's it. + + /** -- OPTIONAL PART -- */ + + // Change the period of measurements (default 1000 ms) to 500 ms. + bme680_set_measurement_period (sensor, 500); + + // Changes the oversampling rates (default os_1x) to 4x oversampling for + // temperature and 2x oversampling for pressure. Humidity measurement is + // skipped. + bme680_set_oversampling_rates(sensor, os_4x, os_2x, none); + + // Change the IIR filter size (default iir_size_3) for temperature and + // and pressure to 7. + bme680_set_filter_size(sensor, iir_size_7); + + // Change the heaeter profile (default 320 degree Celcius for 150 ms) to + // 200 degree Celcius for 100 ms. + bme680_set_heater_profile (sensor, 200, 100); +} + From 2e290b8a8942f3faede09ebbe85af47b30e0178d Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sun, 1 Oct 2017 13:19:52 +0200 Subject: [PATCH 41/41] Driver for Bosch BME680 sensor added --- extras/bme680/bme680_drv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/extras/bme680/bme680_drv.c b/extras/bme680/bme680_drv.c index fc020d2..791d88a 100644 --- a/extras/bme680/bme680_drv.c +++ b/extras/bme680/bme680_drv.c @@ -299,13 +299,6 @@ uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) bme680_sensors[id].active = true; - /* Set the default temperature, pressure and humidity settings */ - bme680_set_oversampling_rates (id, os_1x, os_1x, os_1x); - bme680_set_filter_size (id, iir_size_3); - - /* Set heater default profile 320 degree Celcius for 150 ms */ - bme680_set_heater_profile (id, 320, 150); - // check whether sensor is available if (!bme680_is_available(id)) { @@ -314,6 +307,13 @@ uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) return -1; } + /* Set the default temperature, pressure and humidity settings */ + bme680_set_oversampling_rates (id, os_1x, os_1x, os_1x); + bme680_set_filter_size (id, iir_size_3); + + /* Set heater default profile 320 degree Celcius for 150 ms */ + bme680_set_heater_profile (id, 320, 150); + snprintf (bg_task_name, 20, "bme680_bg_task_%d", id); if (xTaskCreate (bme680_background_task, bg_task_name, 256, (void*)id, @@ -324,7 +324,7 @@ uint32_t bme680_create_sensor(uint8_t bus, uint8_t addr, uint8_t cs) error("Could not create the background task %s for sensor with id %d\n", __FUNCTION__, bg_task_name, id); bme680_sensors[id].active = false; - return false; + return -1; } return id;

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 From 3b2028e387d6a01320b0b24c1a007ac2d6603bdc Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 18:01:59 +0200 Subject: [PATCH 16/41] Delete BME680_Task_I2C.bin --- .../firmware/BME680_Task_I2C.bin | Bin 244352 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin diff --git a/examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin b/examples/bme680/bme680_task_i2c/firmware/BME680_Task_I2C.bin deleted file mode 100644 index 154e34ced41835f759ae86b79119bf342b5650d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244352 zcmd444^&jwxi@_N&hY2VUvM;G&@%^wnS_Zm2Mj|Bapu6_5QhpAMNBb)(IDnxqXetw zHMfX?*jw7yXp)*+l8!cMO<#MBCbhP;HzNrIQ*4mtHkxXSBuzBc1QCrIne+Yj07h+Z z-}hbX`_}qg>o7C>?6dc?pXb@n|9$+Fqg;iI(Myqkb6CoJXgJZ`-A;QHNzz1FD#2|& zWYi5)9fCT?c(2X78J{hSj9&Ah{xcg-T~!b7=+z&8`pW9Wy(gI`*fGu`@YUA$pY_>S zezBFam#;O4B`0lB7=aV+U&0k;t*8AD(Cg@`CdzhJZ99>)j<)?xl^H5IS5_#2Szmr- zr6b)@)Sg6D3myI=e9zxhO5n=U%ZkV?p|y;r2h}J=dGrDLxVemRo!#cpC+zLraqQ{S z8!xXmA9Cr2jiTty1gt_8fphS9dgw?%u$0|?zE(5Wm zZrB4jfpfb#(cNhVl5z=>_yFmCMQwX0X%hddHpk|;Rn@_Q7Ux}Wu^GD zxC*1=pO&gs)xW6j80llbUljA|LpFR3EcFH!WTmF!YxPortEgTO>b_i&xvhshB!o$G zhVQ)U^&9cEEQ1X8)-$m=3$R98OpUXaG(bztaZxOhyH0g%+AnJab322lZC|L}ze$oJ z6yOHLEo8*_18w^plQ^IfsM_X4qqikM=n6jNvs1Gq-e?l}V#=SDnq_AEKePy8|8dHF zQB@)>1fUe#1pp)xfKuAd-yz8KFd^6En6_i;b&v?W*vqBqqw+vVhwOS~D|FrY%(z23a!5`pn%Y!bz0 zG#V2q%E;jY99pB-{Y&6xFmbi~2U=o}w@CDJt*pcz%MRZbV*jkLf05XeEelOliOD-# z6m!LPGjJ1P|D>=dB=&6$ZSHFh_o%i0O_n?e#9sl&X(dYWuj=#kQt_`f42AEZ;$Nd#Dn39^TLD-X;Ht*O zc|~u~Cwjy9KA|%P>JpEB8H3U&PuzQEP^SSk1mIH!(xKyxf%Rx(0LxxOusEih8> zfE4_dV3vXy8=DtAc(aP2Y#+pcPB3|w#3j0qo6gX?gAyP~?;IJ5P(#53L&0D1&8eUV zQyw3iFU}qc{sv>61V1}k2S+N#dml1N0Gm0f@u4L;GXLO(z+9uv{lcqKWRd`O{iXnv_V?DR|38 zA;X_}JK00WOym6P{$B)kC4&=XQOcyCufIQal7_gE=*FB9lPGt^T(0K*83ut>x~>XS zyt6mqx8*TPF!TR@S1C^^UDrV1{h3+<*X&Ilxq{TT{jSN8u%Vj7@YD;fQ%59;gMgyy zO-!9O^gd%}TIxlGPioz9I>ZYr=@9*Sy)9@~z4w#Tssvb}(RFvUQQbY|meC$S?22f52a)q@F=bGrL;HOy#i=hSk| z3YtzMT+l%5g?Tk%y=cRx7pZW#$jL9JyT7Ye)9z1HCtt4je~WzoYy3OkqJoefr(hN{ z#G&$O4yR<8l|N*+&p095PGZk@cG*s-{DLH>fq$IsVJYcdPJTDxck{6=orbnF?pD5u zVQlb4G@@1)na5=&eZ2AbWM^j+R9C_ZT7ZXFJ`ORNp1F@(Z=@3w8Au zsxxtGL+#Fny6%6y%LZ|l+vfdB$LZ8L+hJotHpK;#hwb|@gwuu#_*KB@hVfx%?6O_< zm~F6J#v8H4U&k}mdUei0d|tx^dL6EV=sxtNdd7!tr#buy2*)c=GV?NtB{ar%*O}^d z=8pJ0f^9^dm+P-Fl|s3or<6kto@^Ni)1Uk{6(S5Rb_Rbu!o1wJZXATwE63<`RdyZdWI;o|o3B>dI$4d_ai zN?RzE`MsUn~se@1u)g&CYwb;0^gvlk%w9DHK$e`S^fIdUsm) zT$86V;1fn%augU)9!)8D)b92WwW!RmxHA9Bj|RUkw*7%}7&>%UbaXG7(e`Wg=+onP zOUp⁡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

oR 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≠C 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ÐvbZwuyr27ihzjflrf-aBQ%u$8j6$7z#~7 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 K^A(Opw*5OK1qlcM literal 0 HcmV?d00001 From 5e6d316ecc2f3112a5ec07387c8fb4332683e5d7 Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <31932013+gschorcht@users.noreply.github.com> Date: Sat, 30 Sep 2017 18:01:14 +0200 Subject: [PATCH 15/41] Delete BME680_Callback_I2C_Two_Sensors.bin --- .../BME680_Callback_I2C_Two_Sensors.bin | Bin 246224 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin diff --git a/examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin b/examples/bme680/bme680_callback_i2c_two_sensors/firmware/BME680_Callback_I2C_Two_Sensors.bin deleted file mode 100644 index f9397a753aa996b5f4663eebb9d88668e7734d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246224 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