Skip to content
BeginnerUnoarduino-unobme280oled

OLED Weather Station with BME280 & Arduino Uno

Read temperature, humidity, and barometric pressure from a BME280 sensor over I2C and display them on a 128×64 SSD1306 OLED with custom icons. Includes altitude calculation and pressure trend arrow.

SolderHub10/17/2026 18 min read 0 views

The BME280 — Three Sensors in One Package

The Bosch BME280 combines a temperature sensor (±1 °C), a humidity sensor (±3% RH), and a barometric pressure sensor (±1 hPa) in a 2.5 mm × 2.5 mm package. It communicates over I2C with just two wires and draws less than 3 µA in sleep mode.

Paired with a 0.96" SSD1306 OLED on the same I2C bus, you get a self-contained weather station that uses only two GPIO pins (A4 and A5 on Uno). We'll display all three readings on screen, calculate altitude from pressure, and draw an up/down arrow when pressure changes more than 2 hPa over 10 minutes.

💡 Tip

Most BME280 breakout boards support both 3.3V and 5V via an onboard regulator. Check your module's datasheet — some have the I2C address jumper set to 0x76; others to 0x77. The default in the Adafruit library is 0x77.

Components

4 items
NameQtyLink
Arduino Uno R3×1Buy ↗
BME280 Sensor Breakout (3.3V/5V)×1Buy ↗
0.96" I2C OLED Display 128×64 (SSD1306)×1Buy ↗
Breadboard + Jumper Wires×1—

Need these parts? Get this build sheet by email

Parts list with buy links, plus new builds as they're published. By subscribing you agree to our Privacy Policy. Unsubscribe anytime.

Wiring (shared I2C bus)

Both the BME280 and OLED share the same SDA/SCL lines:

ModuleVCCGNDSDASCL
BME2803.3VGNDA4A5
OLED SSD13063.3VGNDA4A5

No additional resistors needed — both modules include pull-ups.

C++

Live simulation

Q&A is currently disabled site-wide.

Related projects