Pressure & Altitude
Interfacing BMP180 Pressure & Altitude with Arduino Uno
What is the BMP180?
An earlier-generation barometric pressure sensor, still widely used in altimeter and weather-station projects thanks to abundant library support. The BMP180 measures atmospheric pressure and temperature over I2C, and because pressure decreases predictably with altitude, its readings can be converted into a fairly accurate relative-altitude estimate — a long-standing staple for DIY weather stations, altitude-hold drone code, and any project needing a simple 'how high up am I' or 'is the weather changing' reading.
Specifications
| Sensor type | Bosch BMP180 barometric pressure and temperature sensor |
| Operating voltage | 1.8V–3.6V DC (breakout boards regulate from 3.3-5V input) |
| Operating current | ~5 µA at 1 sample/second in standard mode |
| Pressure range | 300 hPa to 1100 hPa (equivalent to roughly 9000m below to 500m above sea level) |
| Pressure resolution | 0.01 hPa in ultra-high-resolution mode (roughly ~0.1m altitude resolution) |
| Temperature accuracy | ±2°C typical |
| Interface | I2C, up to 3.4MHz |
| I2C address | 0x77 (fixed) |
BMP180 Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | VIN | Power, 3.3–5V DC depending on breakout regulator |
| 2 | GND | Ground |
| 3 | SCL | I2C clock line |
| 4 | SDA | I2C data line |
Add standard 4.7kΩ pull-up resistors on SDA/SCL if not already present on the breakout board. Because altitude is calculated from relative pressure, calibrate against a known local sea-level pressure reading (or a recent baseline reading at a known altitude) for meaningful absolute altitude results, since raw pressure alone only gives relative changes.
Setting Up BMP180 with Arduino Uno
Library
Adafruit BMP085 Library by Adafruit
Search "Adafruit BMP085" in Library Manager (Sketch > Include Library > Manage Libraries) — despite the name, it also supports the BMP180
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VIN | 5V (breakout regulates down) or 3.3V | — |
| GND | GND | — |
| SCL | A5 (SCL) | — |
| SDA | A4 (SDA) | — |
Example code
readAltitude() assumes sea-level pressure of 1013.25 hPa by default — pass your local sea-level pressure to bmp.readAltitude(seaLevelPressure) for an accurate absolute altitude, otherwise treat it as a relative measurement.
Related Guides & Projects

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.