M5Stack Core2-projekt til test af luftkvalitet

I dag laver vi et projekt til test af luftkvalitet med M5Stack Core2 og M5Stack ENV Pro Unit (BME688)
M5Stack Core2 ESP32 IoT-udviklingskit

M5Stack Core2 ESP32 IoT-udviklingskit

Se produkt

M5Stack-temperatur-, luftfugtigheds-, tryk- og gassensor (BME688)

M5Stack-temperatur-, luftfugtigheds-, tryk- og gassensor (BME688)

Se produkt

 

M5Stack Core2

M5Core2 er anden generation af kerneenheden i M5Stacks IoT-udviklingskitserie. Den har en ESP32 D0WDQ6-V3-MCU med processorer med to kerner, Wi-Fi, 16 MB Flash, 8 MB PSRAM og en 2,0-tommers kapacitiv berøringsskærm. Den har en USB Type-C-grænseflade, et 390 mAh-batteri styret af en AXP192-chip samt ekstra komponenter såsom et indbygget RTC-modul, en vibrationsmotor, en TF-kortplads, et I2S-digitalt lydinterface og programmerbare kapacitive knapper. Vi kan udnytte Core2-skærmen til visning.

ENV Pro Unit

ENV Pro Unit er en miljøsensor, der bruger BME688-sensorløsningen og understøtter måling af forskellige miljøparametre såsom flygtige organiske forbindelser (VOC'er), indendørs luftkvalitet (IAQ), temperatur, luftfugtighed og atmosfærisk tryk. Den har et kompakt design, et bredt driftsområde, en enkel kommunikationsgrænseflade (I2C), fremragende ydeevne og lavt strømforbrug, hvilket gør den velegnet til vejrstationer, indendørs miljøovervågning og detektering af luftkvalitet.

Projekt

Tilslut

Denne del er meget enkel. Core 2 og ENV Pro Unit bruger begge Grove-grænsefladen, og de bruger begge Grove PORT A. Det er en I2C-grænsefladeport. Vi skal bare bruge et Grove-kabel.

      

Kode

// Kodedelen er den sværeste del af dette projekt. Lad os gå i gang.
// Først skal vi finde ud af, hvilke biblioteker vi har brug for:
#include 
#include 
#include 
#include  
// Da denne sensor er en BME680-sensor, kan vi bruge Adafruit_BME680- og Adafruit_Sensor-bibliotekerne til denne del samt et M5Core2-bibliotek og et Wire-bibliotek.

// Derefter skal vi definere I2C-benene:
#define SDA_PIN 32
#define SCL_PIN 33

// Opret derefter BME688-objektet:
Adafruit_BME680 bme;

// Setup-delen:
void setup() {
  M5.begin();
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(10, 10);
  M5.Lcd.println("ENV Pro-enhedsdata");

// Initialiser I2C:
Wire.begin(SDA_PIN, SCL_PIN);

 // Initialiserer BME688-sensoren (BME688's standardadresse er 0x77):
  if (!bme.begin(0x77, &Wire)) { 
    M5.Lcd.println("Kunne ikke finde BME688-sensoren!");
    while (1);
  }

 // Indstilling af BME688-parametre:
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); 

// Loop-delen (kontrollér først, om BME688-sensoren er tilgængelig):
void loop() {
  if (! bme.performReading()) {
    M5.Lcd.println("Kunne ikke udføre aflæsningen!");
    return;
  }

 // Vis sensordata:
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(10, 30);
  M5.Lcd.printf("Temperatur: %.2f C", bme.temperature);
  M5.Lcd.setCursor(10, 60);
  M5.Lcd.printf("Luftfugtighed: %.2f %%", bme.humidity);
  M5.Lcd.setCursor(10, 90);
  M5.Lcd.printf("Tryk: %.2f hPa", bme.pressure / 100.0);
  M5.Lcd.setCursor(10, 120);
  M5.Lcd.printf("Gas: %d ohm", bme.gas_resistance);

// Opdatér data hvert 11. sekund (gassensorens standardscanningshastighed er 10,8 sek.):
  delay(11000); 
}


✔ Cofod!

 

Resultat

Det fungerede fint, og jeg kunne opdatere dataene i vores Home Assistant.
Gasaflæsningen er en milliohm-aflæsning. I vores test var værdien højere end 20.000, så luftkvaliteten vil være god; ellers er den dårligere.
    

Skriv en kommentar

Din e-mailadresse bliver ikke offentliggjort. Påkrævede felter er markeret med *

Tilmeld dig vores nyhedsbrev

Få de seneste oplysninger om vores produkter og specialtilbud.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.