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.