

The BMP 388 is a high-precision barometric pressure sensor designed to measure atmospheric pressure and temperature. It is a compact, low-power device that provides accurate readings, making it ideal for a wide range of applications. The sensor is commonly used in weather stations, altimeters, drones, and IoT devices for environmental monitoring. Its small size and high accuracy make it a popular choice for both hobbyists and professionals.








The BMP 388 offers excellent performance and flexibility. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.7V to 3.6V |
| Current Consumption | 3.4 µA (low-power mode) |
| Pressure Measurement Range | 300 hPa to 1250 hPa |
| Temperature Range | -40°C to +85°C |
| Pressure Accuracy | ±0.5 hPa |
| Temperature Accuracy | ±0.5°C |
| Communication Interface | I2C, SPI |
| Package Size | 2.0 mm × 2.0 mm × 0.75 mm |
The BMP 388 typically comes in a 10-pin LGA package. Below is the pinout description:
| Pin | Name | Description |
|---|---|---|
| 1 | VDD | Power supply (1.7V to 3.6V) |
| 2 | GND | Ground |
| 3 | SCL | I2C clock line / SPI clock |
| 4 | SDA | I2C data line / SPI data input |
| 5 | CSB | Chip select for SPI (active low) |
| 6 | SDO | SPI data output / I2C address selection |
| 7-10 | NC | Not connected (leave floating or connect to ground) |
0x76.0x77.Below is an example of how to connect and use the BMP 388 with an Arduino UNO via I2C:
| BMP 388 Pin | Arduino UNO Pin |
|---|---|
| VDD | 3.3V |
| GND | GND |
| SCL | A5 (SCL) |
| SDA | A4 (SDA) |
| SDO | GND (for address 0x76) |
| CSB | Leave unconnected |
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP3XX.h>
// Create an instance of the BMP388 sensor
Adafruit_BMP3XX bmp;
void setup() {
Serial.begin(9600);
while (!Serial); // Wait for Serial Monitor to open
// Initialize I2C communication
if (!bmp.begin(0x76)) {
// 0x76 is the I2C address when SDO is connected to GND
Serial.println("Could not find a valid BMP388 sensor, check wiring!");
while (1);
}
// Configure the sensor
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_50_HZ);
}
void loop() {
// Read temperature and pressure
if (!bmp.performReading()) {
Serial.println("Failed to perform reading!");
return;
}
// Print the readings to the Serial Monitor
Serial.print("Temperature = ");
Serial.print(bmp.temperature);
Serial.println(" °C");
Serial.print("Pressure = ");
Serial.print(bmp.pressure / 100.0); // Convert Pa to hPa
Serial.println(" hPa");
delay(1000); // Wait 1 second before the next reading
}
Sensor Not Detected
Inaccurate Readings
No Data Output
Q: Can the BMP 388 measure altitude?
Q: What is the maximum sampling rate of the BMP 388?
Q: Can I use the BMP 388 with a 5V microcontroller?
By following this documentation, you can effectively integrate the BMP 388 into your projects for accurate pressure and temperature measurements.