BMP280 is a two-in-one temperature and pressure sensor module that can be easily interfaced with microcontrollers. It is an upgrade from the BMP180 by Bosch Sensortech. As the module comes in a breakout board format, experiments can be done faster on a breadboard.
BMP280 Pinout
BMP280 Pinout Details
PIN NAME | DESCRIPTION |
VCC | 3.3V supply pin. |
GND | Ground. |
SCL | Serial Clock Pin for I2C and SPI communication. |
SDA | Serial Data Pin for I2C and SPI communication. |
CSB | Chip Select. Also used for SPI communication. |
SDO | Used to set device address and for SPI communication. |
BMP280 Breakout Board Component Details
There are a few different components on the BMP280 breakout board apart from the BMP280 sensor chip. Two capacitors are used as smoothing capacitors to provide a stable DC voltage to the pins of BMP280. Three 10K resistors pull the pins SCL, SDA, and CSB to 3.3V while one 10K resistor pulls the SDO pin to the ground.
BMP280 Communication Interface
The CSB pin sets the communication interface to I2C or SPI in BMP280. When the CSB pin is pulled high, the module communicates using I2C. When the pin is low, it communicates using SPI. A pull-up resistor in the BMP280 module pulls the CSB pin high by default. So we can leave this pin unconnected if we want to use I2C for interfacing. BMP280 only acts as a slave device in both communication interfaces.
BMP280 has a 7-bit device address which can be configured using the SDO pin. When the pin is connected to the ground, the device has an address of 1110110 (0x76). This is the default mode in the BMP280 module which is set by a resistor onboard the module. Connecting the SDO pin to 3.3V will set the device address to 1110111 (0x77).
BMP280 Specifications
- Supply Voltage: 1.71V to 3.6V
- Pin Pitch: 2.54mm.
- Operating Temperature Range: -40°C to 85°C.
- Operating Pressure Range: 300hPa to 1100hPa.
- Footprint: (2.0 × 2.5 )mm.
Temperature sensor specifications:
- The temperature data can be oversampled up to 16 times.
- Temperature measurement can be enabled or disabled via code.
- Maximum temperature resolution: 0.0003 °C while oversampling is done 16 times.
- IIR(Infinite Impulse Response) filter is available for filtering temperature data.
Humidity sensor specifications:
The BMP280 Piezo-resistive pressure sensing element.
- Pressure measurement can be enabled or disabled via code.
- Oversampling and IIR filter is available for pressure measurements.
- Pressure Resolution: 0.16Pa.
- Relative Accuracy at 25 °C: ±0.12 hPa
BMP280 Features
The amount of oversampling of temperature and pressure data can be set using code. IIR filter in the sensor helps in filtering out minor disturbances in the sensed values. The filter coefficient of the IIR filter can be set using the appropriate code. Usually, functions in the BMP280 library take care of oversampling and filter coefficients. RMS noise in sensor readings is inversely proportional to the IIR filter coefficient. Also, the more the oversampling, the less noise.
BMP280 Power Modes
There are 3 power modes in BMP280: sleep mode, normal mode, and forced mode. In sleep mode, the sensor does not perform any operations. Minimum power consumption occurs in this mode. In normal mode, the sensor keeps on alternating between active and standby states. Normal mode should be used when using the IIR filter. In forced mode, the device makes one measurement and then goes to sleep mode.
BMP280 Use Cases
The datasheet of BMP280 specifies various use cases to use the sensor in different environments. These can be set while programming.
Use Case | Mode | Oversampling Setting | Pressure Oversampling | Temperature Oversampling | IIR Filter Coefficient |
Handheld device Low-power (e.g. mobile device) | Normal | Ultra-high resolution | (×)16 | (×)2 | (×)4 |
Handheld device dynamic | Normal | Standard resolution | (×)4 | (×)1 | (×)16 |
Weather monitoring (lowest power consumption) | Forced | Ultra-low power | (×)1 | (×)1 | (×)Off |
Elevator/floor change detection | Normal | Standard resolution | (×)4 | (×)1 | (×)4 |
Drop detection | Normal | Low power | (×)2 | (×)1 | (×)Off |
Indoor navigation(All parameters in maximum) | Normal | Ultra-high resolution | (×)16 | (×)2 | (×)16 |
How To Use BMP280?
We can use either I2C or SPI communication to read BMP280 using a microcontroller. Read our guide on using BMP280 with Raspberry Pi Pico to know more about interfacing with the sensor. Below is a brief overview of the circuit diagram and MicroPython code.
BMP280 connection with RP2040
Code To Read BMP280
We will need to install a MicroPython library for BMP280 for interfacing. Detailed instructions can be found in our article. The following code reads the sensor values.
from machine import Pin,I2C
from bmp280 import *
import time
bus = I2C(0,scl=Pin(1),sda=Pin(0),freq=200000)
bmp = BMP280(bus)
bmp.use_case(BMP280_CASE_INDOOR)
while True:
pressure=bmp.pressure
p_bar=pressure/100000
p_mmHg=pressure/133.3224
temperature=bmp.temperature
print("Temperature: {} C".format(temperature))
print("Pressure: {} Pa, {} bar, {} mmHg".format(pressure,p_bar,p_mmHg))
time.sleep(1)
Code language: Python (python)
BMP280 Applications
- Navigation Systems.
- Weather stations.
- Altitude detection in drones.
- Apartment floor detection.
BMP280 Alternatives
- BME280-Barometric pressure, humidity & temperature sensor.
- BM180- Barometric pressure & temperature sensor.
- DHT22 and DHT11 sensor modules.
BME280 is a multipurpose environmental sensor. Read our article on pinout and specifications of BME280 or read our BME280 interafcing guide with Raspberry Pi Pico to know more about using this sensor.
I hope this article on BMP280 pinout and specifications was helpful. To know more, you can refer to its datasheet.
Leave a Reply