M5Stack Core2-projekt för luftkvalitetstestning

I dag gör vi ett projekt för att testa luftkvaliteten med M5Stack Core2 och M5Stack ENV Pro Unit (BME688)
M5Stack Core2 ESP32 IoT-utvecklingskit

M5Stack Core2 ESP32 IoT-utvecklingskit

Visa produkt

M5Stack temperatur-, luftfuktighets-, tryck- och gassensor (BME688)

M5Stack temperatur-, luftfuktighets-, tryck- och gassensor (BME688)

Visa produkt

 

M5Stack Core2

M5Core2 är den uppgraderade andra generationens kärnenhet i M5Stacks serie av IoT-utvecklingskit. Den har en ESP32 D0WDQ6-V3-MCU med två kärnor, Wi-Fi, 16 MB Flash, 8 MB PSRAM och en kapacitiv pekskärm på 2,0 tum. Den har ett USB Type-C-gränssnitt, ett batteri på 390 mAh som hanteras av ett AXP192-chip samt ytterligare komponenter som en inbyggd RTC-modul, vibrationsmotor, TF-kortplats, digitalt I2S-ljudgränssnitt och programmerbara kapacitiva knappar. Vi kan använda Core2-skärmen på ett bra sätt för visning.

ENV Pro Unit

ENV Pro Unit är en miljösensor som använder BME688-sensorn och har stöd för mätning av olika miljöparametrar, såsom flyktiga organiska föreningar (VOC), luftkvalitet inomhus (IAQ), temperatur, luftfuktighet och atmosfärstryck. Den har ett kompakt format, ett brett driftområde, ett enkelt kommunikationsgränssnitt (I2C), utmärkta prestanda och låg strömförbrukning, vilket gör den lämplig för väderstationer, övervakning av inomhusmiljöer och detektering av luftkvalitet.

Projekt

Anslut

Den här delen är mycket enkel. Core 2 och ENV Pro Unit använder båda Grove-gränssnittet och Grove PORT A. Det är en I2C-gränssnittsport. Vi behöver bara en Grove-kabel.

      

Kod

// Kodningsdelen är den svåraste delen av det här projektet. Då sätter vi igång.
// Först och främst tar vi reda på vilka bibliotek vi behöver:
#include 
#include 
#include 
#include  
// Eftersom den här sensorn är en BME680-sensor kan vi använda biblioteken Adafruit_BME680 och Adafruit_Sensor för detta samt biblioteken M5Core2 och Wire.

// Nästa steg är att definiera I2C-stiften:
#define SDA_PIN 32
#define SCL_PIN 33

// Skapa därefter 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("Data från ENV Pro-enheten");

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

 // Initierar BME688-sensorn (BME688:s standardadress är 0x77):
  if (!bme.begin(0x77, &Wire)) { 
    M5.Lcd.println("Kunde inte hitta BME688-sensorn!");
    while (1);
  }

 // Ställer in BME688-parametrar:
  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 (kontrollera först om BME688-sensorn är tillgänglig):
void loop() {
  if (! bme.performReading()) {
    M5.Lcd.println("Det gick inte att genomföra avläsningen!");
    return;
  }

 // Visa 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("Luftfuktighet: %.2f %%", bme.humidity);
  M5.Lcd.setCursor(10, 90);
  M5.Lcd.printf("Tryck: %.2f hPa", bme.pressure / 100.0);
  M5.Lcd.setCursor(10, 120);
  M5.Lcd.printf("Gas: %d ohm", bme.gas_resistance);

// Uppdatera data var 11:e sekund (gassensorns standardiserade skanningshastighet är 10,8 s):
  delay(11000); 
}


✔ Cofot!

 

Resultat

Det fungerade bra, och jag kunde uppdatera data till vår Home Assistant.
Gasavläsningen är en milliohmavläsning. I vårt test var värdet högre än 20 000, så luftkvaliteten kommer att vara god; omvänt är den sämre.
    

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält markeras med *

Register for our newsletter

Get the latest information about our products and special offers.

Website Feedback

Help us improve OpenELAB

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