Electronics

Pressure Temperature Sensor Module GY-BME280

AED 51.45

1

Description

The BME280 sensor offers precise measurements of relative humidity, temperature, barometric pressure, and altitude. Its ease of use, pre-calibration, and lack of extra parts simplify the measuring process. It finds applications in altitude measurement and weather monitoring. The BME280 sensor communicates with a microcontroller using the I2C protocol. Its user-friendly design and advanced features make it an excellent choice for weather monitoring, altitude measurement, and various other environmental sensing applications.

 

Package Includes:

  • 1x GY-BME280 5V Pressure Temperature Sensor Module 

Features:

  • Low Power Consumption: The module boasts excellent energy efficiency with an average consumption current of 0.1uA in sleep mode. This allows for prolonged battery life in applications that require minimal power usage.
  • Adjustable Frequency: Operating at a frequency of 1 Hz, the module offers flexibility in power consumption. At this frequency, the current consumption ranges from 1.8uA to 3.6uA, enabling users to optimize power usage based on their specific requirements.
  • Fast Humidity Response: The module exhibits a swift response time of about 1 second for humidity measurements. This quick response allows for real-time monitoring and accurate humidity data capture, ensuring timely adjustments or analysis in relevant applications.
  • Precise Pressure Measurements: With an RMS noise of 0.2Pa, the module provides highly accurate and reliable pressure readings. The low noise level ensures precise pressure measurements, making it suitable for applications that demand high precision, such as weather monitoring or altitude measurement.
  • Temperature Coefficient Offset: The module incorporates a temperature coefficient offset of 1.5Pa/k for pressure measurements. This feature compensates for temperature variations and helps maintain accuracy in pressure readings, even when the ambient temperature changes.
  • Interface Options: The BME280 sensor module supports a popular communication interface: I2C (12C). This allows for seamless integration with a wide range of microcontrollers, making it compatible with various platforms and easing the development process.

 

Description:

The BME280 sensor module is a highly advanced and versatile device designed for precise environmental measurements. This compact module combines the capabilities of measuring relative humidity, temperature, barometric pressure, and altitude, making it a comprehensive solution for diverse applications. With its low power consumption, the BME280 ensures extended battery life, making it ideal for applications that require prolonged operation in resource-constrained environments. The module offers an adjustable frequency range, allowing users to strike a balance between power usage and measurement frequency based on their specific needs. Its fast response time for humidity measurements enables real-time monitoring and rapid data acquisition, empowering users with timely and accurate information. In terms of pressure measurements, the BME280 sensor module excels with its low root mean square (RMS) noise, ensuring reliable and precise readings. The integrated temperature coefficient offset compensates for temperature variations, ensuring consistent and accurate pressure measurements even in fluctuating environmental conditions. The BME280 sensor module is equipped with I2C (12C) interfaces, providing seamless integration with a wide range of microcontrollers and enabling hassle-free integration into existing systems. Its user-friendly design and advanced features make it an excellent choice for weather monitoring, altitude measurement, and various other environmental sensing applications.

 

Principle of Work:

The BME280 sensor module employs advanced sensing elements and integrated circuitry to perform accurate environmental measurements:

  1. Sensing Elements: The module incorporates a temperature sensor, a humidity sensor, and a pressure sensor. These sensing elements are carefully calibrated and optimized for precise measurements.
  2. Analog-to-Digital Conversion: The analog signals from the sensing elements are converted into digital values using a high-resolution analog-to-digital converter (ADC). The ADC ensures accurate and reliable conversion of the sensor outputs.
  3. Compensation and Calibration: The module contains built-in compensation and calibration algorithms to account for various factors that can affect the measurements. These algorithms utilize calibration coefficients stored in the module's memory to adjust the raw sensor data and provide accurate readings.
  4. Communication Interface: The BME280 sensor module utilizes a two-wire interface, typically I2C (Inter-Integrated Circuit), to communicate with external devices such as microcontrollers. This interface allows for seamless data exchange between the module and the connected microcontroller.
  5. Control and Configuration: The module supports different modes of operation, including sleep mode, forced mode, and normal mode. These modes can be selected and controlled by the microcontroller through the communication interface. The microcontroller can also configure various settings, such as measurement rate and oversampling options, to tailor the module's performance to specific requirements.
  6. Data Output: Once the measurements are processed and compensated internally, the module provides digital output in the form of temperature, humidity, and pressure values. These values can be accessed by the microcontroller through the communication interface for further analysis, display, or storage.

The BME280 sensor module operates using a straightforward two-wire I2C interface, allowing easy connectivity to microcontrollers with compatible I2C pins. By default, the module has a predefined I2C address of 0x77. However, it provides the flexibility to change the I2C address by modifying the solder jumper located beside the chip. To change the I2C address, the left copper pad needs to be disconnected from the middle copper pad by scratching them. Then, a solder blob can be added to connect the right copper pad to the middle copper pad, resulting in a new I2C address configuration.

The module offers three operating modes:

  1. Sleep mode: When initially activated, the sensor enters sleep mode, consuming the lowest amount of power while no measurements are being taken. In this mode, the chip-ID, compensation coefficients, and all registers can still be accessed.
  2. Forced mode: This mode is designed for single measurements. Once a measurement is performed, the sensor automatically returns to sleep mode. The measurement results are stored in the data registers, and the forced mode can be utilized again for subsequent measurements. This mode is suitable for applications that require low sampling rates and host-based synchronization.
  3. Normal mode: In this mode, the sensor follows an automated continuous cycle, switching between the standby period and the measurement period. The standby period current is slightly lower than that of the sleep mode. Once the normal mode is enabled, the determined measurement results can be obtained from the data registers.

These modes provide flexibility in selecting the appropriate operating mode based on specific application requirements, power consumption considerations, and sampling rates needed for data acquisition.

 

 

Pinout of the Board:

  • VCC (Power Supply): The module requires a power supply, which can be within the voltage range of 3.3V to 5V. It is essential to provide a stable and appropriate voltage level to ensure reliable operation.
  • GND (Ground Connection): The module's GND pin should be connected to the ground (GND) of the Arduino or the common ground of the system. This establishes a reference potential and enables proper signal transmission.
  • SCL (Serial Clock): SCL is the serial clock pin used for the I2C (Inter-Integrated Circuit) interface. It serves as a synchronization signal between the module and the microcontroller, ensuring accurate data transfer. The SCL pin is typically connected to the corresponding SCL pin of the microcontroller.
  • SDA (Serial Data): SDA is the serial data pin for the I2C interface. It is responsible for bidirectional data transfer between the module and the microcontroller. The SDA pin is typically connected to the corresponding SDA pin of the microcontroller.

 

Applications:

  • Context Awareness: The BME280 module can contribute to context-aware systems by providing data for applications such as skin detection or room change detection. It enables systems to adapt and respond based on the detected environmental conditions.
  • Health Monitoring/Well-being: The module's capability to measure temperature and humidity makes it suitable for health monitoring and well-being applications. It can be utilized in wearable devices or smart home systems to monitor and optimize the indoor environment for comfort and wellness.
  • Home Automation Control: With its ability to measure temperature, humidity, and barometric pressure, the BME280 module is valuable in home automation systems. It allows for precise control of heating, ventilation, and air conditioning (HVAC) systems, enhancing energy efficiency and comfort.
  • Internet of Things (IoT): The BME280 module is a valuable component in IoT applications. By providing accurate environmental measurements, it enables IoT devices to collect and transmit real-time data for analysis, automation, and decision-making.
  • GPS Enhancement & Indoor/Outdoor Navigation: The module's barometric pressure sensing capability is utilized for GPS enhancement, aiding in more accurate altitude measurements. It also assists in indoor and outdoor navigation systems by providing altitude and vertical velocity indications (rise/sink speed).
  • Weather Forecast: The BME280 module's ability to measure temperature, humidity, and barometric pressure makes it suitable for weather monitoring and forecasting applications. It enables the collection of local weather data, contributing to more accurate and localized forecasts.
  • Vertical Velocity Indication: The module's precise barometric pressure measurements can be utilized to determine vertical velocity, such as rise or sink speed. This feature is valuable in applications like aviation, drones, and altitude-based sports for monitoring and control purposes.

 

Circuit:

To establish proper communication using the I2C protocol, it is important to connect the correct pins on the Arduino board the module has the address 0x58:

  1. I2C Pins: The I2C pins on Arduino boards can vary depending on the specific model or layout. For Arduino boards with the R3 layout, the SDA (data line) and SCL (clock line) pins are typically found on the pin headers near the AREF pin.
  2. Pin Names: The SDA pin is often labeled as A4, while the SCL pin is labeled as A5 on Arduino boards with the R3 layout. These labels help identify the specific pins dedicated to I2C communication.

The connection between the Module and all kinds of boards:

Type SCL SDA
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2

 

Library: 

 

To begin using the BME280 sensor with Arduino, you will need two libraries: Adafruit Sensor and Adafruit BME280. Follow these steps to download and install the libraries:

  1. Download the Library ZIP File: Visit the GitHub repository for the library: Forced-BMX280

  2. Click on "Code" and Download ZIP: Click on the green "Code" button and select "Download ZIP" to download the library as a ZIP file.

  3. Open Arduino IDE: Launch your Arduino IDE.

  4. Install the Library:

    • Navigate to "Sketch" -> "Include Library" -> "Add .ZIP Library..."
    • Locate and select the downloaded ZIP file of the "Forced-BMX280" library.
    • Click "Open" to install the library.
  5. Verify Installation: To confirm that the library is installed correctly, go to "Sketch" -> "Include Library." You should see "Forced-BMX280" listed among the available libraries.

 

Code:

This code essentially reads the temperature from the BMX280 sensor every 2 seconds and prints the result to the Serial Monitor. It is a basic example to demonstrate how to use the "forcedBMX280" library with an Arduino and a BMX280 sensor:

 

#include "Wire.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_BME280.h"

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

void setup() {
  Serial.begin(9600);

  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

void loop() {
  printTemperature();
  printPressure();
  printAltitude();
  printHumidity();

  Serial.println();
  delay(1000);
}

void printTemperature() {
  float temperature = bme.readTemperature();
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
}

void printPressure() {
  float pressure = bme.readPressure() / 100.0F;
  Serial.print("Pressure: ");
  Serial.print(pressure);
  Serial.println(" hPa");
}

void printAltitude() {
  float altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
  Serial.print("Approx. Altitude: ");
  Serial.print(altitude);
  Serial.println(" m");
}

void printHumidity() {
  float humidity = bme.readHumidity();
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");
}

     

Variables:

  • ForcedBMX280 climateSensor: An instance of the ForcedBMX280 class representing the BMX280 sensor.
  • int32_t g_temperature: A variable to store the current temperature in a scaled form (e.g., 1234 would be 12.34 °C).

Setup Function:

  • pinMode and digitalWrite: Configures and turns off the built-in LED (LED_BUILTIN) on the Arduino Nano.
  • Serial.begin: Initializes serial communication at a baud rate of 9600.
  • Wire.begin: Initializes the I2C communication.
  • climateSensor.begin: Initializes the BMX280 sensor. The loop will wait until the sensor is ready, flashing the built-in LED as an indicator.
  • If the sensor initialization is successful, it turns on the LED, and some information about the sensor (ChipID) is printed to the Serial Monitor.

Loop Function:

  • climateSensor.takeForcedMeasurement: Initiates a forced measurement on the BMX280 sensor.
  • climateSensor.getTemperatureCelsius: Retrieves the temperature in Celsius from the last forced measurement.
  • The temperature is then printed to the Serial Monitor with a delay of 2000 milliseconds (2 seconds) between readings.

 

 

Technical Details:

  • Supply Voltage: 1.8 - 5V DC
  • Humidity: 0-100%
  • Pressure: 300-1100 hPa
  • Temperature: 0.01°C
  • Interface: I2C (up to 3.4MHz)
  • Operational Range:
  • Temperature: -40 to +85°C
  • Humidity: 0.008%
  • Pressure: 0.18Pa
  • Temperature: ±1°C
  • Humidity: ±3%
  • Pressure: ±1Pa
  • I2C address
  • Item size:13x 11x1mm

 

Resources:

 

Comparisons:

The BME280 and BMP180 are barometric sensors used to measure atmospheric pressure. However, the BME280 offers additional capabilities, including a built-in temperature and humidity sensor, while the BMP180 only includes a temperature sensor. Both sensors can also calculate altitude based on pressure variations with elevation:

  1. Temperature Range: The BME280 has a wider temperature measurement range of -40 to 85 degrees Celsius, whereas the BMP180 is limited to 0 to 65 degrees Celsius.
  2. Self-Heating: The BME280 module has a slight self-heating effect, which can cause temperature readings to be slightly higher (by one or two degrees) than the actual temperature.
  3. Communication Protocols: The BMP180 only supports I2C communication, whereas the BME280 is capable of communicating using both I2C and SPI protocols. However, the version discussed here is limited to I2C communication.
  4. Features and Applications: The BME280, although relatively more expensive, offers more features, making it suitable for comprehensive projects like weather stations where measurements of temperature, pressure, and humidity are desired. If you only require temperature measurements and are on a budget, a less expensive temperature sensor may suffice.
  5. Compatibility: The Adafruit libraries make it easy to connect these sensors to popular platforms such as Arduino, ESP8266, and ESP32.

for comparisons with other sensors look at the table:

Sensor DHT11 DHT22 (AM2302) LM35 DS18B20 BME280 BMP180
Measures Temperature Temperature Temperature Temperature Temperature Temperature
  Humidity Humidity     Humidity  
          Pressure  
Communication One-wire One-wire Analog One-wire I2C I2C
protocol         SPI  
Supply 3 to 5.5V DC 3 to 6V DC 4 to 30V DC 3 to 5.5V DC 1.7 to 3.6V (chip)
1.8 to 3.6V (chip)
voltage         3.3 to 5V (board)
3.3 to 5V (board)
Temperature 0 to 50ºC -40 to 80ºC -55 to 150ºC -55 to 125ºC -40 to 85ºC 0 to 65ºC