47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
|
# BME680 Driver Examples
|
||
|
|
||
|
These examples demonstrate the usage of the BME680 driver with only one and multiple BME680 sensors.
|
||
|
|
||
|
## Hardware setup
|
||
|
|
||
|
There are examples that are using either I2C or SPI with one or two sensors.
|
||
|
|
||
|
For examples using BME680 sensor as I2C slave, just use GPIO5 (SCL) and GPIO4 (SDA) to connect to the BME680 sensor's I2C interface.
|
||
|
|
||
|
```
|
||
|
+-------------------------+ +--------+
|
||
|
| ESP8266 Bus 0 | | BME680 |
|
||
|
| GPIO 5 (SCL) +---->+ SCL |
|
||
|
| GPIO 4 (SDA) +-----+ SDA |
|
||
|
| | +--------+
|
||
|
+-------------------------+
|
||
|
```
|
||
|
|
||
|
For examples that are using SPI, BME680 sensor has to be connected to SPI bus 1. Since GPIO15 used as default CS signal of SPI bus 1 does not work correctly together with BME680, you have to connect CS to another GPIO pin, e.g., GPIO2.
|
||
|
|
||
|
```
|
||
|
+-------------------------+ +----------+
|
||
|
| ESP8266 Bus 1 | | BME680 |
|
||
|
| GPIO 12 (MISO) <-----< SDO |
|
||
|
| GPIO 13 (MOSI) >-----> SDI |
|
||
|
| GPIO 14 (SCK) >-----> SCK |
|
||
|
| GPIO 2 (CS) >-----> CS |
|
||
|
+-------------------------+ +----------+
|
||
|
```
|
||
|
|
||
|
The example with two sensors use the combination of I2C and SPI.
|
||
|
|
||
|
## Example description
|
||
|
|
||
|
__*bme680_one_sensor*__
|
||
|
|
||
|
This simple example uses only **one sensor** connected either to **I2C** or to **SPI**. Which of these interfaces is used is defined by constant **SPI_USED**. The user task triggers a measurement every second and uses function ```vTaskDelay``` to wait for the measurement results.
|
||
|
|
||
|
__*bme680_two_sensors*__
|
||
|
|
||
|
This example uses **two sensors**. One sensor is connected to **I2C** bus 0 and one sensor is connected to **SPI**. It defines two different user tasks, one for each sensor. It demonstrate the possible approaches to wait for measurement results, active busy waiting using ```bme680_is_measuring``` and passive waiting using *vTaskDelay*.
|
||
|
|
||
|
__*bme680_heating_profiles*__
|
||
|
|
||
|
This simple example uses one **only sensor** connected to **I2C** bus 0 and a sequence of heating profiles. The heating profile is changed with each cycle.
|