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.
- Arduino
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.
| Kontroler | Soldered BMV080 Particulate Matter Sensor |
|---|---|
| Qwiic konektor | Bilo koji Qwiic konektor |
Ako vaš kontroler nema Qwiic konektor, zalemite priložene pin headere i spojite pločicu na njegove I2C pinove:
| Kontroler | Soldered BMV080 Particulate Matter Sensor |
|---|---|
| 3,3 V | 3V3 |
| GND | GND |
| 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-a | Direktorij Soldered BMV080 Arduino biblioteke |
|---|---|
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. 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.
#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.
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.