Interface BMP180 Sensor With Arduino

Here’s a complete Arduino sketch to interface a BMP180 sensor with an OLED display using the Adafruit libraries. This code reads temperature and pressure from the BMP180 and displays it on a OLED screen.

Hardware Required

  • Arduino Uno/Nano/etc.
  • BMP180 sensor
  • OLED display
  • Jumper wires

Libraries to Install (via Library Manager in Arduino IDE)

  1. Adafruit BMP085 Unified (supports BMP180)
  2. Adafruit Unified Sensor
  3. Adafruit SSD1306
  4. Adafruit GFX

Wiring Connections

DeviceVCCGNDSDASCL
BMP180 3.3V – 5V GND A4 A5
OLED 3.3V – 5V GND A4 A5

Arduino Code:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

void setup() {
  Serial.begin(9600);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("OLED not found");
    while (1);
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);

  if (!bmp.begin()) {
    Serial.println("BMP180 not found");
    display.setCursor(0, 0);
    display.println("BMP180 Error");
    display.display();
    while (1);
  }

  display.setCursor(0, 0);
  display.println("BMP180 Ready");
  display.display();
  delay(2000);
}

void loop() {
  display.clearDisplay();

  sensors_event_t event;
  bmp.getEvent(&event);

  float temperature;
  bmp.getTemperature(&temperature);

  // Serial logging
  Serial.print("Temp: ");
  Serial.print(temperature);
  Serial.print(" °C, Pressure: ");
  Serial.print(event.pressure);
  Serial.println(" hPa");

  // OLED display
  display.setCursor(0, 0);
  display.print("Temp: ");
  display.print(temperature, 1);
  display.println(" C");

  display.setCursor(0, 20);
  display.print("Pres: ");
  display.print(event.pressure, 1);
  display.println(" hPa");

  display.display();
  delay(2000);
}

Troubleshooting for BMP180 with Arduino:

Confirm there’s no loose connection or wrong pin.

If you’re using a breadboard, reseat the wires or try a different one.