Schnellstart
Dieses Board misst Feinstaub in der Luft als PM1, PM2.5 und PM10. Verbinden Sie es über I2C, installieren Sie die Arduino-Bibliothek zusammen mit den benötigten Bosch-Sensordateien und führen Sie das einfachste Beispiel aus, um etwa einmal pro Sekunde einen neuen Messwert zu sehen.
Sie programmieren den Controller, der mit diesem Breakout verbunden ist. Das Breakout selbst wird nicht geflasht.
- Arduino
1. Breakout-Board anschließen
Stecken Sie ein Qwiic-Kabel in einen der beiden Qwiic Connector am Board und in den Qwiic Connector Ihres Controllers. Es ist kein Löten nötig, und der zweite Qwiic Connector bleibt frei, um ein weiteres Qwiic-Board anzuschließen.
| Controller | Soldered BMV080 Particulate Matter Sensor |
|---|---|
| Qwiic Connector | Beliebiger Qwiic Connector |
Wenn Ihr Controller keinen Qwiic Connector hat, löten Sie die mitgelieferten Stiftleisten an und verbinden Sie das Board stattdessen mit den I2C-Pins:
| Controller | Soldered BMV080 Particulate Matter Sensor |
|---|---|
| 3,3 V | 3V3 |
| GND | GND |
| I2C-Daten (SDA) | SDA |
| I2C-Takt (SCL) | SCL |
Das Board arbeitet nur mit 3,3 V und hat keinen Regler. Schließen Sie 3V3 niemals an 5 V an
und verwenden Sie einen Controller mit 3,3-V-Logik.
Die Bibliothek benötigt Dateien aus dem Bosch BMV080 SDK, das Sie im nächsten Schritt
separat herunterladen. Dessen Dateitabelle enthält Einträge für ESP32-, ESP32-S2-,
ESP32-S3- und ESP32-C6-Boards sowie für Arm-Cortex-M0+-, Cortex-M33-, Cortex-M4- und
Cortex-M4F-Boards. Die library.properties der Bibliothek listet alle diese
außer Cortex-M4 auf. Wählen Sie daher einen Controller aus der Liste, der kein einfacher Cortex-M4 ist.
2. Bibliothek installieren
Laden Sie die Soldered BMV080 Arduino library aus ihrem GitHub-Repository herunter und fügen Sie sie in der Arduino IDE als ZIP-Bibliothek hinzu.
🔗Soldered BMV080 Arduino library
Geprüfte Arduino-Bibliothek bei Commit 011d5ca
Tipp: Download von GitHub. Klicken Sie auf der GitHub-Seite der Bibliothek auf die grüne Schaltfläche Code und wählen Sie Download ZIP. Fügen Sie die Datei dann in der Arduino IDE über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen... hinzu.
Diese Bibliothek benötigt das Bosch BMV080 SDK, das nicht in der Bibliothek enthalten ist. Laden Sie das Bosch SDK hier herunter.
Nachdem Sie das Bosch BMV080 SDK heruntergeladen und entpackt haben, kopieren Sie die erforderlichen Header-Dateien und vorkompilierten statischen Bibliotheken an diese Speicherorte in der Bibliothek. Die statischen Bibliotheken sind plattformspezifisch, kopieren Sie daher die Dateien für Ihre Zielplattform.
| Bosch SDK file | Soldered BMV080 Arduino library directory |
|---|---|
api/inc/bmv080.h | src/BMV080Wrapper/bmv080.h |
api/inc/bmv080_defs.h | src/BMV080Wrapper/bmv080_defs.h |
api/lib/xtensa_esp32/xtensa_esp32_elf_gcc/release/lib_bmv080.a | src/esp32/lib_bmv080.a |
api/lib/xtensa_esp32/xtensa_esp32_elf_gcc/release/lib_postProcessor.a | src/esp32/lib_postProcessor.a |
api/lib/xtensa_esp32s2/xtensa_esp32s2_elf_gcc/release/lib_bmv080.a | src/esp32s2/lib_bmv080.a |
api/lib/xtensa_esp32s2/xtensa_esp32s2_elf_gcc/release/lib_postProcessor.a | src/esp32s2/lib_postProcessor.a |
api/lib/xtensa_esp32s3/xtensa_esp32s3_elf_gcc/release/lib_bmv080.a | src/esp32s3/lib_bmv080.a |
api/lib/xtensa_esp32s3/xtensa_esp32s3_elf_gcc/release/lib_postProcessor.a | src/esp32s3/lib_postProcessor.a |
api/lib/riscv_rv32imc/riscv_none_elf_gcc/release/lib_bmv080.a | src/esp32c6/lib_bmv080.a |
api/lib/riscv_rv32imc/riscv_none_elf_gcc/release/lib_postProcessor.a | src/esp32c6/lib_postProcessor.a |
api/lib/arm_cortex_m0plus/arm_none_eabi_gcc/release/lib_bmv080.a | src/cortex-m0plus/lib_bmv080.a |
api/lib/arm_cortex_m0plus/arm_none_eabi_gcc/release/lib_postProcessor.a | src/cortex-m0plus/lib_postProcessor.a |
api/lib/arm_cortex_m33/arm_none_eabi_gcc/release/lib_bmv080.a | src/cortex-m33/lib_bmv080.a |
api/lib/arm_cortex_m33/arm_none_eabi_gcc/release/lib_postProcessor.a | src/cortex-m33/lib_postProcessor.a |
api/lib/arm_cortex_m4/arm_none_eabi_gcc/release/lib_bmv080.a | src/cortex-m4/lib_bmv080.a |
api/lib/arm_cortex_m4/arm_none_eabi_gcc/release/lib_postProcessor.a | src/cortex-m4/lib_postProcessor.a |
api/lib/arm_cortex_m4f/arm_none_eabi_gcc/release/lib_bmv080.a | src/cortex-m4f/lib_bmv080.a |
api/lib/arm_cortex_m4f/arm_none_eabi_gcc/release/lib_postProcessor.a | src/cortex-m4f/lib_postProcessor.a |
3. Erstes Beispiel ausführen
Dies ist simpleReading.ino, das einfachste Beispiel der Bibliothek. Es startet den
Sensor mit der Standardadresse 0x57 des Boards, schaltet ihn auf kontinuierliche
Messung und gibt PM10, PM2.5 und PM1 jedes Mal aus, wenn ein neuer Messwert eintrifft.
Laden Sie es hoch und öffnen Sie dann den Serial Monitor mit 115200 Baud.
#include "BMV080-SOLDERED.h"
BMV080 bmv080; // Create an instance of the BMV080 class
#define BMV080_ADDR 0x57 // BMV080 default address
void setup()
{
Serial.begin(115200);
while (!Serial)
delay(10); // Wait for Serial to become available.
Wire.begin();
if (bmv080.begin(BMV080_ADDR, Wire) == false)
{
Serial.println(
"BMV080 not detected at default I2C address. Check your jumpers and the hookup guide. Freezing...");
while (1)
;
}
/* Initialize the Sensor (read driver, open, reset, id etc.)*/
bmv080.init();
/* Set the sensor mode to continuous mode */
if (bmv080.setMode(BMV080_MODE_CONTINUOUS) == true)
{
Serial.println("BMV080 set to continuous mode");
}
else
{
Serial.println("Error setting BMV080 mode");
}
}
void loop()
{
if (bmv080.readSensor())
{
float pm10 = bmv080.PM10();
float pm25 = bmv080.PM25();
float pm1 = bmv080.PM1();
Serial.print("PM10: ");
Serial.print(pm10);
Serial.print("\t");
Serial.print("PM2.5: ");
Serial.print(pm25);
Serial.print("\t");
Serial.print("PM1: ");
Serial.print(pm1);
if (bmv080.isObstructed() == true)
{
Serial.print("\tObstructed");
}
Serial.println();
}
delay(100);
}
4. Ergebnis prüfen
Sobald der Sensor läuft, zeigt der Serial Monitor etwa Folgendes an. Die untenstehende Ausgabe stammt aus einem Testlauf mit diesem Board. Dabei wurde nicht aufgezeichnet, welcher Controller verwendet wurde.
BMV080 set to continuous mode
PM10: 9.84 PM2.5: 7.12 PM1: 5.06
PM10: 10.27 PM2.5: 7.39 PM1: 5.21
PM10: 10.03 PM2.5: 7.25 PM1: 5.14
PM10: 9.71 PM2.5: 7.01 PM1: 4.98
PM10: 9.92 PM2.5: 7.18 PM1: 5.09
Etwa einmal pro Sekunde erscheint eine neue Zeile, wobei jeder Wert in µg/m³ angegeben ist. Ihre Werte
hängen von der Luft um den Sensor ab. Wenn etwas das Sichtfeld des Sensors blockiert,
endet die Zeile mit Obstructed.
5. Wenn es nicht funktioniert
Fahren Sie mit der Fehlerbehebung fort und wiederholen Sie dieses einfachste Beispiel nach jeder Änderung.