BMP180 pressure and temperature sensor (GY-68)
BMP180 / GY-68 barometric sensor pinout, fixed I2C address 0x77, 3.3 V vs 5 V boards, the BMP085 library and why the BMP280 is the better buy.
Community draft — report a mistake
3.3 V or 5 V? The GY-68 has a 3.3 V regulator and pull-ups to 3.3 V, so ESP32, Pico and Uno all read it directly. Bare BMP180 boards without a regulator must get 3.3 V only.
The Bosch BMP180 measures air pressure (300–1100 hPa, about ±0.12 hPa relative) and temperature. Pressure drops about 12 hPa per 100 m of height, so it’s used for weather trends and rough altitude. The blue or purple GY-68 board adds a regulator and pull-ups so it runs from 3.3 V or 5 V.
The library is the old BMP085 one — the BMP180 is register-compatible with the BMP085, so don’t look for a “BMP180 library”. The address is fixed at 0x77; there is no pin to change it.
It’s discontinued. The BMP180 is end-of-life and many cheap ones are pulled or remarked parts. For new builds the BMP280 (same price, faster, two addresses) or the BME280 (adds humidity) is the better choice.
Prices are indicative (Nov 2026) and vary by seller.
Pinout
| Pin | What it does |
|---|---|
VIN | 3.3–5 V supply into the on-board regulator (some boards add a separate 3.3 pin — use one or the other) |
GND | Ground |
SCL | I2C clock |
SDA | I2C data |
I2C address:0x77
Library
Adafruit BMP085 Library by Adafruit
Arduino IDE → Library Manager → search the name above. Each guide lists the exact version we compile against.
Use it with
Common errors
“Could not find a valid BMP085 sensor”
Check SDA/SCL aren’t swapped and run the I2C scanner. The BMP180 only ever answers at 0x77 — if the scanner shows 0x76, you have a BMP280 and need that library instead.
Altitude is off by tens of metres
Altitude is calculated from sea-level pressure, which changes with the weather. Pass today’s local sea-level pressure (from a weather site) to readAltitude(), or only use the change in altitude.
Clashes with another sensor at 0x77
The address is fixed. A BME280 set to 0x77 or a second BMP180 cannot share the bus — move the other sensor to 0x76 or use a second I2C bus.