Preview build — page text is a draft awaiting human review. Code badges come from real compiles. The flasher is real but not yet hardware-tested; the Playground is still a preview.

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.

I2C

Community draft — report a mistake

CategorySensor
InterfaceI2C
Voltage3.3–5 V on the GY-68 (chip itself 1.8–3.6 V)
Typical price₹120

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

PinWhat it does
VIN3.3–5 V supply into the on-board regulator (some boards add a separate 3.3 pin — use one or the other)
GNDGround
SCLI2C clock
SDAI2C 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.

↑↓ to move · Enter to open