

The BMP180 Breakout (GY-68) is a digital barometric pressure sensor designed to measure atmospheric pressure and temperature with high precision. It is based on Bosch's BMP180 sensor and is widely used in applications such as weather monitoring, altitude measurement, and environmental sensing. The module supports both I2C and SPI communication protocols, making it versatile and easy to integrate into microcontroller-based systems.








The BMP180 Breakout (GY-68) module has the following key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V |
| Typical Operating Voltage | 3.3V |
| Communication Interface | I2C (default), SPI |
| Pressure Range | 300 hPa to 1100 hPa |
| Pressure Resolution | 0.01 hPa |
| Temperature Range | -40°C to +85°C |
| Temperature Resolution | 0.1°C |
| Power Consumption | 12 µA (typical in ultra-low power mode) |
| Dimensions | 21mm x 18mm x 2.5mm |
The BMP180 Breakout (GY-68) module has the following pinout:
| Pin | Name | Description |
|---|---|---|
| 1 | VIN | Power supply input (3.3V recommended, supports 1.8V to 3.6V) |
| 2 | GND | Ground connection |
| 3 | SCL | Serial Clock Line for I2C communication |
| 4 | SDA | Serial Data Line for I2C communication |
| 5 | XCLR | External reset input (optional, usually left unconnected) |
| 6 | EOC | End of Conversion signal (optional, used for SPI mode) |
| 7 | CSB | Chip Select for SPI mode (connect to GND for I2C mode) |
| 8 | VDDIO | I/O voltage reference (optional, typically tied to VIN) |
Below is an example of how to use the BMP180 Breakout (GY-68) with an Arduino UNO via I2C:
#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);
Serial.println("BMP180 Sensor Test");
// Initialize the 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) {
// Display pressure in hPa
Serial.print("Pressure: ");
Serial.print(event.pressure);
Serial.println(" hPa");
// Calculate and display altitude (assuming sea level pressure = 1013.25 hPa)
float seaLevelPressure = 1013.25;
Serial.print("Altitude: ");
Serial.print(bmp.pressureToAltitude(seaLevelPressure, event.pressure));
Serial.println(" m");
// Display temperature
float temperature;
bmp.getTemperature(&temperature);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
}
delay(2000); // Wait 2 seconds before the next reading
}
0x77. Ensure no other devices on the I2C bus share this address.Sensor Not Detected:
Incorrect Readings:
No Data Output:
0x77) is being used in the code.Q: Can the BMP180 measure negative altitudes?
A: Yes, the BMP180 can measure altitudes below sea level, provided the correct sea-level pressure is used as a reference.
Q: What is the maximum altitude the BMP180 can measure?
A: The BMP180 can measure altitudes up to approximately 9,000 meters, depending on the atmospheric pressure.
Q: Can I use the BMP180 with a 5V microcontroller?
A: Yes, but you must use a logic level shifter to step down the 5V signals to 3.3V for the BMP180.
Q: How accurate is the BMP180?
A: The BMP180 has a typical pressure accuracy of ±1 hPa and a temperature accuracy of ±2°C.
By following this documentation, you can effectively integrate the BMP180 Breakout (GY-68) into your projects for reliable pressure and temperature measurements.