Sigit Dani Perkasa
ProjectsWorkAboutContact

Built with Next.js, R3F, drei - Last updated 2026-06-22

GitHubContact
Sigit Dani Perkasa
ProjectsWorkAboutContact
Projects/Air Pressure Arduino
Paper1 citation2023

Air Pressure Arduino

Arduino-based barometric pressure measurement with BMP280 for weather and altitude sensing (1 citation).

BMP280 Barometric Pressure Sensor — Pinout & Interface
BMP280Bosch SensortechPaVCCGNDSCLSDACSBArduino UnoA5 (SCL)A4 (SDA)D10 (CSB)UNOI2C Interface — 3.3V/5V compatible — Up to 3.4 MHz (High-Speed)SDA / SCL

Sensor Specifications

Sensor
BMP280 (Bosch Sensortec)
Interface
I2C (SDA/SCL) or SPI
MCU
Arduino Uno
Pressure Range
300 – 1100 hPa
Accuracy
±0.12 hPa (relative)
Alt. Resolution
0.17 m
Sample Rate
1 Hz
Power
3.3V / 5V
Temperature Accuracy
±0.5°C
BMP280 reads pressure and temperature simultaneously. Altitude derived from barometric formula using sea-level reference pressure.
2The Problem

Pressure and altitude sensing without expensive instruments

Accurate barometric pressure and altitude measurement is fundamental to weather monitoring, drone navigation, and indoor climate control — but dedicated commercial barometers and altimeters are often expensive, proprietary, and difficult to integrate into custom instrumentation projects by students and researchers in developing regions.

Without accessible pressure measurement, small-scale weather stations are limited to temperature and humidity only, missing the critical atmospheric pressure variable that drives weather prediction models. Altitude estimation for UAVs and elevation surveys similarly requires costly dedicated GPS-altimeter modules.

There was a clear need for a low-cost, open-source approach using widely available sensor modules and microcontrollers — something a student could build with an Arduino starter kit and a BMP280 breakout board costing under $5.

3The System

BMP280 + Arduino barometric measurement platform

The measurement system is built around the Bosch BMP280 digital barometric pressure sensor, an I2C/SPI device that provides temperature-compensated pressure readings with ±0.12 hPa relative accuracy. The sensor communicates with an Arduino Uno microcontroller via the I2C bus using only four connections: VCC (3.3V), GND, SCL (clock), and SDA (data).

Sigit developed the Arduino firmware that initializes the BMP280, reads compensated pressure and temperature values from the sensor registers, computes altitude from the barometric formula using a reference sea-level pressure of 1013.25 hPa, and streams the results via serial output at 9600 baud for real-time monitoring on a connected PC.

The system samples at 1 Hz with a pressure range of 300–1100 hPa, covering all natural terrestrial atmospheric conditions from deep low-pressure systems to high-altitude mountain environments. Temperature compensation is handled internally by the BMP280, with output accuracy of ±0.5°C.

System Architecture — BMP280 → Arduino → Serial / Display
pressure, tempi2c dataserial bytestextBMP280Pressure + TempI2C BusSDA / SCLArduino UnoData ProcessingSerial OutUSB / UARTSerial MonitorReal-time DisplayThe BMP280 communicates via I2C (address 0x76/0x77). Arduino reads compensated pressure/temperature registers and streams via Serial at 9600 baud. Altitude is derived from the barometric formula: h = (T₀/L) × ((p/p₀)^(R×L/g) — 1).
4Results

Pressure and altitude measurements validated

Results — Pressure & Altitude Over Time (1-hour intervals)
Pressure (hPa)
Altitude (m)
100310051007100910111012hPa203040506070m06:0008:0010:0012:0014:0016:0018:0024.3°25.1°26.8°28.4°29.7°30.5°31.2°31.6°31°30.1°28.8°27.2°25.8°24.5°T°C
Pressure decreases with rising temperature (thermal expansion of air column)14 measurements, 1-hour intervals

The system demonstrated reliable pressure measurement across a 14-hour observation period, capturing the characteristic diurnal pressure cycle — higher readings during cooler morning hours (1010.8 hPa at 06:00) and lower readings during the warm afternoon (1004.8 hPa at 13:00). This pattern matches the expected inverse relationship between air temperature and barometric pressure due to thermal expansion of the air column.

Altitude estimation derived from the barometric formula showed consistent results with the pressure trend. The system successfully tracked relative altitude changes within a 50 m range over the measurement period. When calibrated against a known elevation reference, the BMP280 provides altitude resolution of 0.17 m — sufficient for weather balloon tracking, drone altitude hold, and basic surveying applications.

5Methodology

Barometric formula and I2C sensor integration

The BMP280 sensor was connected to the Arduino Uno via the I2C interface at address 0x76. The Adafruit BMP280 library was used for sensor initialization and reading of compensated pressure (hPa) and temperature (°C) values. The sensor was configured for ultra-high resolution mode (oversampling ×16 for pressure, ×2 for temperature) with IIR filter enabled to reduce measurement noise.

Altitude was calculated using the International Standard Atmosphere (ISA) barometric formula with a sea-level reference pressure of 1013.25 hPa at 15°C. The formula accounts for the exponential decrease of atmospheric pressure with altitude, providing altitude estimates accurate to approximately ±1 m per 0.12 hPa of pressure resolution near sea level.

Measurements were taken at 1 Hz over a 14-hour period from 06:00 to 19:00 local time at the test site in Serang, Banten, Indonesia (approximate elevation: 30 m above sea level). The Arduino was powered via USB from a laptop running the Arduino IDE Serial Monitor to capture and log the output data for analysis.

Data validation compared the BMP280 readings against local weather station reference data (BMKG Serang station), with agreement within ±0.5 hPa for absolute pressure after calibration offset correction. The open-source design enables other researchers to replicate the setup with components totaling under $10.

Pressure → Altitude Reference Table (ISA Standard Atmosphere)
Pressure (hPa)Altitude (m)Reference Location
1013.25(ref)0Sea level
1000.00111Coastal plains
975.00323Low hills
950.00540Highland plateau
900.00988Mountain base
850.001,457Mountain pass
800.001,949High mountain
750.002,466Alpine zone
700.003,012Very high altitude
650.003,591Extreme altitude
600.004,206Aircraft cabin
550.004,865Tibetan Plateau
ISA: International Standard Atmosphere. Altitude calculated from barometric formula using sea-level reference pressure 1013.25 hPa at 15°C.
6Related

Cross-references

Read the paper

Jurnal SETRUM — Sistem Kendali Tenaga Elektronika Telekomunikasi Komputer, 2023

DOI: 10.36055/setrum.v12i2.20123

AirFeel WS

Extends atmospheric sensing to full weather station capability with ESP32 and Fine Offset sensor packet parsing.

Pyranometer

Shares the same Arduino instrumentation platform for low-cost environmental measurement in resource-limited settings.

Low-cost Arduino-based atmospheric sensing builds the foundation for more advanced weather station and environmental monitoring instrumentation projects.

Built with Next.js, R3F, drei - Last updated 2026-06-22

GitHubContact