Skip to main content

Brzi početak

Ova pločica mjeri fine čestice u zraku kao PM1, PM2.5 i PM10. Povežite je preko I2C-a, instalirajte Arduino biblioteku zajedno s Bosch datotekama senzora koje su joj potrebne i pokrenite njezin najjednostavniji primjer kako biste otprilike jednom u sekundi dobili novo očitanje.

Programirate kontroler spojen na ovu pločicu. Sama pločica se ne programira.

1. Povežite pločicu​

Spojite Qwiic kabel na bilo koji Qwiic konektor na pločici i na Qwiic konektor na kontroleru. Lemljenje nije potrebno, a drugi Qwiic konektor ostaje slobodan za lančano spajanje druge Qwiic pločice.

KontrolerSoldered BMV080 Particulate Matter Sensor
Qwiic konektorBilo koji Qwiic konektor

Ako vaš kontroler nema Qwiic konektor, zalemite priložene pin headere i spojite pločicu na njegove I2C pinove:

KontrolerSoldered BMV080 Particulate Matter Sensor
3,3 V3V3
GNDGND
I2C podatkovna linija (SDA)SDA
I2C taktna linija (SCL)SCL

Pločica radi isključivo na 3,3 V i nema regulator. Nikada ne spajajte 3V3 na 5 V i koristite kontroler s logikom od 3,3 V.

Biblioteka treba datoteke iz Bosch BMV080 SDK-a, koji preuzimate zasebno u sljedećem koraku. Njezina tablica datoteka ima mjesta za ESP32, ESP32-S2, ESP32-S3 i ESP32-C6 pločice te za pločice s procesorima Arm Cortex-M0+, Cortex-M33, Cortex-M4 i Cortex-M4F. Datoteka library.properties te biblioteke navodi sve njih osim Cortex-M4, stoga s popisa odaberite kontroler koji nije običan Cortex-M4.

2. Instalirajte biblioteku​

Preuzmite Soldered BMV080 Arduino biblioteku s njezina GitHub repozitorija i dodajte je u Arduino IDE kao ZIP biblioteku.

🔗Soldered BMV080 Arduino biblioteka

Provjerena Arduino biblioteka na commitu 011d5ca

→

Savjet: preuzimanje s GitHuba. Na GitHub stranici biblioteke kliknite zeleni gumb Code i odaberite Download ZIP, zatim ga dodajte u Arduino IDE-u preko Sketch → Include Library → Add .ZIP Library....

Ova biblioteka se oslanja na Bosch BMV080 SDK, koji nije uključen u biblioteku. Bosch SDK preuzmite ovdje.

Nakon što preuzmete i raspakirate Bosch BMV080 SDK, kopirajte potrebne header datoteke i prevedene statičke biblioteke na ove lokacije u biblioteci. Statičke biblioteke ovise o platformi, stoga kopirajte datoteke za svoju ciljnu platformu.

Datoteka iz Bosch SDK-aDirektorij Soldered BMV080 Arduino biblioteke
api/inc/bmv080.hsrc/BMV080Wrapper/bmv080.h
api/inc/bmv080_defs.hsrc/BMV080Wrapper/bmv080_defs.h
api/lib/xtensa_esp32/xtensa_esp32_elf_gcc/release/lib_bmv080.asrc/esp32/lib_bmv080.a
api/lib/xtensa_esp32/xtensa_esp32_elf_gcc/release/lib_postProcessor.asrc/esp32/lib_postProcessor.a
api/lib/xtensa_esp32s2/xtensa_esp32s2_elf_gcc/release/lib_bmv080.asrc/esp32s2/lib_bmv080.a
api/lib/xtensa_esp32s2/xtensa_esp32s2_elf_gcc/release/lib_postProcessor.asrc/esp32s2/lib_postProcessor.a
api/lib/xtensa_esp32s3/xtensa_esp32s3_elf_gcc/release/lib_bmv080.asrc/esp32s3/lib_bmv080.a
api/lib/xtensa_esp32s3/xtensa_esp32s3_elf_gcc/release/lib_postProcessor.asrc/esp32s3/lib_postProcessor.a
api/lib/riscv_rv32imc/riscv_none_elf_gcc/release/lib_bmv080.asrc/esp32c6/lib_bmv080.a
api/lib/riscv_rv32imc/riscv_none_elf_gcc/release/lib_postProcessor.asrc/esp32c6/lib_postProcessor.a
api/lib/arm_cortex_m0plus/arm_none_eabi_gcc/release/lib_bmv080.asrc/cortex-m0plus/lib_bmv080.a
api/lib/arm_cortex_m0plus/arm_none_eabi_gcc/release/lib_postProcessor.asrc/cortex-m0plus/lib_postProcessor.a
api/lib/arm_cortex_m33/arm_none_eabi_gcc/release/lib_bmv080.asrc/cortex-m33/lib_bmv080.a
api/lib/arm_cortex_m33/arm_none_eabi_gcc/release/lib_postProcessor.asrc/cortex-m33/lib_postProcessor.a
api/lib/arm_cortex_m4/arm_none_eabi_gcc/release/lib_bmv080.asrc/cortex-m4/lib_bmv080.a
api/lib/arm_cortex_m4/arm_none_eabi_gcc/release/lib_postProcessor.asrc/cortex-m4/lib_postProcessor.a
api/lib/arm_cortex_m4f/arm_none_eabi_gcc/release/lib_bmv080.asrc/cortex-m4f/lib_bmv080.a
api/lib/arm_cortex_m4f/arm_none_eabi_gcc/release/lib_postProcessor.asrc/cortex-m4f/lib_postProcessor.a

3. Pokrenite prvi primjer​

Ovo je simpleReading.ino, najjednostavniji primjer iz biblioteke. Pokreće senzor na zadanoj adresi pločice 0x57, prebacuje ga na kontinuirano mjerenje i ispisuje PM10, PM2.5 i PM1 svaki put kad stigne novo očitanje. Učitajte ga, a zatim otvorite Serial Monitor na 115200 baud.

Select Board
simpleReading.ino
#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. Provjerite rezultat​

Kada senzor radi, Serial Monitor prikazuje nešto poput ovoga. Donji ispis potječe iz testnog pokretanja na ovoj pločici; u pokretanju nije zabilježeno koji je kontroler korišten.

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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

Novi redak pojavljuje se otprilike jednom u sekundi, a svaka vrijednost je u µg/m³. Vaši brojevi ovise o zraku oko senzora. Kada nešto zaklanja pogled senzora, redak završava s Obstructed.

5. Ako ne radi​

Nastavite s Rješavanjem problema i nakon svake promjene ponovno isprobajte ovaj najjednostavniji primjer.