

The BMP180, manufactured by Bosch, is a high-precision digital barometric pressure sensor designed for measuring atmospheric pressure and temperature. It is widely used in applications such as weather monitoring, altitude measurement, and Internet of Things (IoT) devices. The BMP180 is known for its compact size, low power consumption, and high accuracy, making it an ideal choice for portable and battery-powered devices.








The BMP180 offers excellent performance in a small package. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V |
| Supply Current (typical) | 12 µA (in ultra-low power mode) |
| Pressure Measurement Range | 300 hPa to 1100 hPa |
| Temperature Measurement Range | -40°C to +85°C |
| Pressure Resolution | 0.01 hPa |
| Temperature Resolution | 0.1°C |
| Communication Interface | I²C (Inter-Integrated Circuit) |
| Package Type | LGA (Leadless Grid Array) |
| Dimensions | 3.6 mm x 3.8 mm x 0.93 mm |
The BMP180 has four pins, as described in the table below:
| Pin Name | Pin Number | Description |
|---|---|---|
| VDD | 1 | Power supply pin (1.8V to 3.6V) |
| GND | 2 | Ground pin |
| SDA | 3 | I²C data line for communication |
| SCL | 4 | I²C clock line for communication |
The BMP180 is easy to integrate into a circuit, thanks to its I²C interface. Below are the steps to use the BMP180 in your project:
Wiring: Connect the BMP180 to the Arduino UNO as follows:
VDD to the Arduino's 3.3V pinGND to the Arduino's GND pinSDA to the Arduino's A4 pin (I²C data line)SCL to the Arduino's A5 pin (I²C clock line)Install Required Library: Use the Adafruit BMP085/BMP180 library for easy integration. Install it via the Arduino IDE Library Manager.
Sample Code: Use the following code to read pressure and temperature data from the BMP180:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
// Create an instance of the BMP180 sensor
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
void setup() {
Serial.begin(9600);
// Initialize the BMP180 sensor
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP180 sensor, check wiring!");
while (1); // Halt the program if the sensor is not detected
}
}
void loop() {
sensors_event_t event;
bmp.getEvent(&event);
if (event.pressure) {
// Print pressure in hPa
Serial.print("Pressure: ");
Serial.print(event.pressure);
Serial.println(" hPa");
// Calculate and print temperature
float temperature;
bmp.getTemperature(&temperature);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
} else {
Serial.println("Sensor error!");
}
delay(2000); // Wait 2 seconds before the next reading
}
SDA and SCL) require pull-up resistors (typically 4.7 kΩ). Some breakout boards include these resistors; check your board's documentation.Sensor Not Detected
Inaccurate Readings
No Data Output
Can the BMP180 measure altitude directly?
What is the maximum I²C clock speed supported by the BMP180?
Can the BMP180 operate at 5V?
By following this documentation, you can successfully integrate the BMP180 into your projects and achieve accurate pressure and temperature measurements.