This is an old revision of the document!


EMB1B: Reading environmental data with a Bosch integrated sensor

In this scenario, we will read environmental data using a BME 280 sensor. It is one of the most popular sensors in weather stations. It integrates a digital thermometer, hygrometer (air humidity), and air pressure meter on a single chip. The sensor communicates with the microcontroller using I2C. In our laboratory nodes, it uses the I2C bus on GPIOs 5 (SDA) and 4 (SCL) and is visible under the I2C address 0x76.
This scenario can be run stand-alone, but it is also complementary to the scenario EMB1A EMB1A: Controlling a FAN with PWM and may enable you to monitor the results of the fan operation that should induct changes in the air pressure.

Prerequisites

The static temperature, humidity and air pressure values can be read using a dedicated library:

  lib_deps = adafruit/Adafruit BME280 Library@^2.2.2

To observe air pressure changes over a short time, it is necessary to implement fan PWM control as described in the EMB1A: Controlling a FAN with PWM.
Sensor readings can be sent over the network or presented on one of the node's displays (e.g. LCD), so understanding how to handle at least one of the displays is essential:

To implement monitoring of the air pressure changes, understanding how to control a fan with PWM is necessary:

Technical documentation for the BME 280 sensor is available here:

Besides BME 280, there is another sensor in the Bosch family: BMP 280. The former one does not measure humidity, just temperature and air pressure.

Suggested Readings and Knowledge Resources

Hands-on Lab Scenario

In this scenario, we only focus on reading the sensor. Information on how to display measurements is part of other scenarios that you should refer to to create a fully functional solution (see links above).

Task to be implemented

Present the current temperature, air pressure, and humidity on any display (e.g. LCD). Remember to add units (C, %Rh, hPa).

Start

For statical measurements, ensure the fan is stopped. Note that the fan tends to spin up on itself (explained in EMB1A) when the GPIO controlling the fan is not configured, so it is better to ensure it is set to output and low (0) to keep the fan stopped. Refer to the EMB1A: Controlling a FAN with PWM for details on controlling the fan.

Steps

The steps below present only interaction with the sensor. Those steps should be supplied to present the data (or send it over the network) using other scenarios accordingly, and also with a scenario EMB1A presenting no instructions on controlling the fan that can change the air pressure in the yellow pressure chamber.

Step 1

Include a BME 280 control library:

#include <Adafruit_BME280.h>

Step 2

Declare BME's address, sensor controller class and variables to store readings:

static const int BME280_addr = 0x76; //I2C address
 
static bool isBMEOk = false;
 
static float temperature;
static float pressure;
static float humidity;
 
static Adafruit_BME280 bme280; //controller class

Step 3

Initialise controller class:

isBMEOk = bme280.begin(BME280_addr);

If begin returns false, then initialisation failed. It may be because of an invalid I2C address, a broken sensor or broken connections between MCU and sensor located in the yellow pressure chamber.

Step n

Describe activities done in Step n.

Result validation

Observable temperature is usually within the range of 19-24C, Humidity about 40-70%, strongly depending on the weather. On rainy days, it can even go higher. Air pressure depends on the current weather (assuming the fan is off) and is usually low to 890hPa (when low-pressure area) and even up to 1040hPa (when high-pressure area comes, usually during the summer). Spinning the fan may easily change air pressure by at least 1-2Pa up relative to the static pressure, depending on the fan's rotation speed.

FAQ

This section is to be extended as new questions appear.
When using the printed version of this manual, please refer to the latest online version of this document to obtain the valid and up-to-date list of the FAQ. Provide some FAQs in the following form:
Question?: Answer.

Project information


This Intellectual Output was implemented under the Erasmus+ KA2.
Project IOT-OPEN.EU Reloaded – Education-based strengthening of the European universities, companies and labour force in the global IoT market.
Project number: 2022-1-PL01-KA220-HED-000085090.

Erasmus+ Disclaimer
This project has been funded with support from the European Commission.
This publication reflects the views of only the author, and the Commission cannot be held responsible for any use that may be made of the information contained therein.

Copyright Notice
This content was created by the IOT-OPEN.EU Reloaded consortium, 2022,2024.
The content is Copyrighted and distributed under CC BY-NC Creative Commons Licence, free for Non-Commercial use.

en/iot-open/practical/hardware/sut/esp32/emb1b_1.1709739455.txt.gz · Last modified: 2024/03/06 15:37 by pczekalski
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0