M5Stack Core2 luftkvalitetstestningsprojekt

Idag ska vi göra ett luftkvalitetstestprojekt med M5Stack Core2 och M5Stack ENV Pro-enhet (BME688)
M5Stack Core2 ESP32 IoT utvecklingskit

M5Stack Core2 ESP32 IoT utvecklingskit

Visa produkt

M5Stack Temperatur-, Fuktighets-, Tryck- och Gassensor (BME688)

M5Stack Temperatur-, Fuktighets-, Tryck- och Gassensor (BME688)

Visa produkt

 

M5Stack Core2

M5Core2 är den uppgraderade andra generationens kärnenhet i M5Stack IoT-utvecklingskitsserien. Den har en ESP32 D0WDQ6-V3 MCU med dubbelkärniga processorer, Wi-Fi, 16MB Flash, 8MB PSRAM och en 2,0-tums kapacitiv pekskärm. Den inkluderar ett USB Type-C-gränssnitt, ett 390mAh batteri som hanteras av en AXP192-chip, och ytterligare komponenter såsom en inbyggd RTC-modul, vibrationsmotor, TF-kortplats, I2S digitalt ljudgränssnitt och programmerbara kapacitiva knappar. Vi kan göra bra användning av Core2-skärmen för visning.

ENV Pro-enhet

ENV Pro-enheten är en miljösensor som använder BME688-sensorlösningen och stöder mätning av olika miljöparametrar såsom flyktiga organiska föreningar (VOC), inomhusluftkvalitet (IAQ), temperatur, luftfuktighet och atmosfärstryck. Den har kompakt storlek, brett driftområde, enkelt kommunikationsgränssnitt (I2C), utmärkt prestanda och låg strömförbrukning, vilket gör den lämplig för väderstationer, inomhusmiljöövervakning och luftkvalitetsdetektering.

Projekt

Anslut

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

      

Kod

// The code part is the hardest part of this project. Let's do it.
// First of all, let's find out which libraries we need:
#include 
#include 
#include 
#include  
// Because this sensor is a BME680 sensor, we can use Adafruit_BME680 and Adafruit_Sensor libraries for this part, and use a M5Core2 library, a Wire library.

// Next step, we need define the I2C pins:
#define SDA_PIN 32
#define SCL_PIN 33

// Next, creating the BME688 Object:
Adafruit_BME680 bme;

// Void Setup part:
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 Unit Data");

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

 // Initializing the BME688 Sensor (BME688 default address is 0x77):
  if (!bme.begin(0x77, &Wire)) { 
    M5.Lcd.println("Could not find BME688 sensor!");
    while (1);
  }

 // Setting BME688 parameters:
  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); 

// Void Loop part (Check if the BME688 sensor is available first):
void loop() {
  if (! bme.performReading()) {
    M5.Lcd.println("Failed to perform reading!");
    return;
  }

 // Display sensor data:
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(10, 30);
  M5.Lcd.printf("Temp: %.2f C", bme.temperature);
  M5.Lcd.setCursor(10, 60);
  M5.Lcd.printf("Humidity: %.2f %%", bme.humidity);
  M5.Lcd.setCursor(10, 90);
  M5.Lcd.printf("Pressure: %.2f hPa", bme.pressure / 100.0);
  M5.Lcd.setCursor(10, 120);
  M5.Lcd.printf("Gas: %d ohms", bme.gas_resistance);

// Update data every 11 seconds (Gas sensor standard scanning speed is 10.8s):
  delay(11000); 
}


✔ Copied!

 

Resultat

Det fungerade bra, och jag kunde uppdatera data till vår Home Assistant.
Gasavläsningen är en milliohm-avläsning. I vårt test var värdet högre än 20 000, så luftkvaliteten kommer att vara bra, tvärtom är den sämre.
    

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *

Sidopanel

Senaste inlägg

Denna sektion innehåller för närvarande inget innehåll. Lägg till innehåll i denna sektion med hjälp av sidofältet.

Registrera dig för vårt nyhetsbrev

Få den senaste informationen om våra produkter och specialerbjudanden.