

The Adafruit BMP183 (Part ID: 1900) is a high-precision digital barometric pressure sensor designed to measure atmospheric pressure and temperature. This sensor is ideal for applications requiring accurate altitude measurement, weather forecasting, and environmental monitoring. Its compact size and low power consumption make it suitable for portable devices and embedded systems.








The Adafruit BMP183 is based on Bosch Sensortec's BMP183 sensor and offers the following key specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V |
| Typical Operating Voltage | 3.3V |
| Pressure Measurement Range | 300 hPa to 1100 hPa |
| Pressure Resolution | 0.02 hPa |
| Temperature Measurement Range | -40°C to +85°C |
| Temperature Resolution | 0.1°C |
| Communication Interface | I2C and SPI |
| Current Consumption | 12 µA (typical in ultra-low power mode) |
| Dimensions | 3.6mm x 3.8mm x 0.93mm |
The BMP183 sensor is typically mounted on a breakout board by Adafruit, which includes the following pins:
| Pin Name | Description |
|---|---|
| VIN | Power supply input (1.8V to 3.6V, typically 3.3V) |
| GND | Ground |
| SCL | I2C clock line (or SPI clock in SPI mode) |
| SDA | I2C data line (or SPI data in SPI mode) |
| CS | Chip Select (used in SPI mode, tie to GND for I2C) |
| SDI | SPI Data Input (used in SPI mode) |
| SDO | SPI Data Output (used in SPI mode) |
Below is an example of how to use the BMP183 with an Arduino UNO using the Adafruit BMP183 library:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP183.h>
// Create an instance of the BMP183 sensor
Adafruit_BMP183 bmp;
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
Serial.println("Initializing BMP183 sensor...");
// Initialize the BMP183 sensor
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP183 sensor, check wiring!");
while (1); // Halt execution if sensor initialization fails
}
Serial.println("BMP183 sensor initialized successfully!");
}
void loop() {
// Read pressure in hPa
float pressure = bmp.readPressure() / 100.0; // Convert Pa to hPa
// Read temperature in Celsius
float temperature = bmp.readTemperature();
// Print the readings to the Serial Monitor
Serial.print("Pressure: ");
Serial.print(pressure);
Serial.println(" hPa");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000); // Wait 1 second before taking the next reading
}
Sensor Not Detected:
Inaccurate Readings:
No Output on Serial Monitor:
Q: Can the BMP183 measure altitude directly?
A: The BMP183 does not measure altitude directly but calculates it based on atmospheric pressure. Use the formula provided in the Adafruit BMP183 library for altitude estimation.
Q: Can I use the BMP183 with a 5V microcontroller?
A: Yes, but you must use level shifters to step down the 5V signals to 3.3V to avoid damaging the sensor.
Q: What is the typical accuracy of the BMP183?
A: The BMP183 offers a pressure accuracy of ±1 hPa and a temperature accuracy of ±2°C under standard conditions.
By following this documentation, you can effectively integrate the Adafruit BMP183 into your projects for reliable pressure and temperature measurements.