

The BOSCH BMV080 is a compact and highly accurate air quality sensor designed to detect particulate matter (PM) in the air. It provides real-time data on air pollution levels, making it ideal for applications such as air purifiers, HVAC systems, smart home devices, and environmental monitoring systems. The sensor is capable of detecting fine particles, including PM2.5 and PM10, which are critical indicators of air quality.








The BMV080 is designed for low power consumption and high precision, making it suitable for battery-powered and compact devices. Below are the key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage | 3.3V to 5.0V |
| Operating Current | 15 mA (typical) |
| Standby Current | < 1 mA |
| Particle Size Detection | PM1.0, PM2.5, PM10 |
| Measurement Range | 0 to 1,000 µg/m³ |
| Communication Interface | I²C, UART |
| Operating Temperature | -10°C to +60°C |
| Dimensions | 30 mm x 20 mm x 10 mm |
The BMV080 has a simple pinout for easy integration into various systems. Below is the pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.3V to 5.0V) |
| 2 | GND | Ground |
| 3 | SDA | I²C data line or UART TX |
| 4 | SCL | I²C clock line or UART RX |
| 5 | INT | Interrupt pin for data-ready signal (optional) |
The BMV080 is straightforward to use in a circuit. It supports both I²C and UART communication protocols, allowing flexibility in interfacing with microcontrollers like the Arduino UNO.
Below is an example of how to interface the BMV080 with an Arduino UNO using the I²C protocol:
#include <Wire.h>
// BMV080 I²C address
#define BMV080_I2C_ADDR 0x76
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
Wire.begin(); // Initialize I²C communication
// Check sensor connection
Wire.beginTransmission(BMV080_I2C_ADDR);
if (Wire.endTransmission() == 0) {
Serial.println("BMV080 connected successfully!");
} else {
Serial.println("Failed to connect to BMV080.");
while (1); // Halt execution if sensor is not detected
}
}
void loop() {
// Request data from the sensor
Wire.beginTransmission(BMV080_I2C_ADDR);
Wire.write(0x00); // Command to read PM data (example command)
Wire.endTransmission();
Wire.requestFrom(BMV080_I2C_ADDR, 6); // Request 6 bytes of data
if (Wire.available() == 6) {
uint16_t pm1_0 = (Wire.read() << 8) | Wire.read(); // PM1.0 value
uint16_t pm2_5 = (Wire.read() << 8) | Wire.read(); // PM2.5 value
uint16_t pm10 = (Wire.read() << 8) | Wire.read(); // PM10 value
// Print the values to the serial monitor
Serial.print("PM1.0: ");
Serial.print(pm1_0);
Serial.print(" µg/m³, PM2.5: ");
Serial.print(pm2_5);
Serial.print(" µg/m³, PM10: ");
Serial.print(pm10);
Serial.println(" µg/m³");
} else {
Serial.println("Failed to read data from BMV080.");
}
delay(1000); // Wait 1 second before the next reading
}
Sensor Not Detected:
Inaccurate Readings:
Communication Errors:
Q: Can the BMV080 detect gases like CO2 or VOCs?
A: No, the BMV080 is specifically designed to detect particulate matter (PM1.0, PM2.5, PM10). For gas detection, consider using a dedicated gas sensor.
Q: Is the BMV080 suitable for outdoor use?
A: Yes, but it should be housed in a protective enclosure to shield it from extreme weather conditions and direct exposure to contaminants.
Q: Can I use the BMV080 with a 5V microcontroller?
A: Yes, the BMV080 supports a supply voltage range of 3.3V to 5.0V, making it compatible with both 3.3V and 5V systems.