M5Stack Core2-Projekt zur Luftqualitätsermittlung

Heute führen wir ein Luftqualitätstestprojekt mit dem M5Stack Core2 und der M5Stack ENV Pro Unit (BME688) durch.
M5Stack Core2 ESP32 IoT-Entwicklungskit

M5Stack Core2 ESP32 IoT-Entwicklungskit

Produkt anzeigen

M5Stack Temperatur-, Feuchtigkeits-, Luftdruck- und Gassensor (BME688)

M5Stack Temperatur-, Feuchtigkeits-, Luftdruck- und Gassensor (BME688)

Produkt anzeigen

 

M5Stack Core2

Der M5Core2 ist das verbesserte Core-Gerät der zweiten Generation aus der M5Stack-IoT-Entwicklungskit-Serie. Er verfügt über einen ESP32-D0WDQ6-V3-MCU mit Dual-Core-Prozessoren, WLAN, 16 MB Flash, 8 MB PSRAM und einen 2,0-Zoll-kapazitiven Touchscreen. Zur Ausstattung gehören eine USB-Typ-C-Schnittstelle, ein 390-mAh-Akku mit Verwaltung durch einen AXP192-Chip sowie zusätzliche Komponenten wie ein integriertes RTC-Modul, ein Vibrationsmotor, ein TF-Kartensteckplatz, eine digitale I2S-Audioschnittstelle und programmierbare kapazitive Tasten. Wir können den Bildschirm des Core2 optimal zur Anzeige nutzen.

ENV Pro Unit

Die ENV Pro Unit ist ein Umgebungssensor, der die BME688-Sensorlösung verwendet und die Messung verschiedener Umgebungsparameter wie flüchtiger organischer Verbindungen (VOCs), Raumluftqualität (IAQ), Temperatur, Luftfeuchtigkeit und Luftdruck unterstützt. Sie zeichnet sich durch ihre kompakte Größe, einen großen Betriebsbereich, eine einfache Kommunikationsschnittstelle (I2C), hervorragende Leistung und geringen Stromverbrauch aus und eignet sich damit für Wetterstationen, die Überwachung von Innenräumen und die Erkennung der Luftqualität.

Projekt

Verbinden

Dieser Teil ist sehr einfach. Der Core 2 und die ENV Pro Unit verwenden beide eine Grove-Schnittstelle und den Grove-PORT A. Dabei handelt es sich um einen I2C-Schnittstellenanschluss. Wir benötigen lediglich ein Grove-Kabel.

      

Code

// Der Programmierteil ist der schwierigste Teil dieses Projekts. Legen wir los.
// Zuerst finden wir heraus, welche Bibliotheken wir benötigen:
#include 
#include 
#include 
#include  
// Da dieser Sensor ein BME680-Sensor ist, können wir hierfür die Bibliotheken Adafruit_BME680 und Adafruit_Sensor sowie die Bibliotheken M5Core2 und Wire verwenden.

// Als Nächstes müssen wir die I2C-Pins definieren:
#define SDA_PIN 32
#define SCL_PIN 33

// Als Nächstes das BME688-Objekt erstellen:
Adafruit_BME680 bme;

// Teil der Void-Setup-Funktion:
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-Gerätedaten");

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

 // BME688-Sensor initialisieren (die Standardadresse des BME688 ist 0x77):
  if (!bme.begin(0x77, &Wire)) { 
    M5.Lcd.println("BME688-Sensor konnte nicht gefunden werden!");
    while (1);
  }

 // BME688-Parameter festlegen:
  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); 

// Teil der Void-Loop-Funktion (zuerst prüfen, ob der BME688-Sensor verfügbar ist):
void loop() {
  if (! bme.performReading()) {
    M5.Lcd.println("Messung konnte nicht durchgeführt werden!");
    return;
  }

 // Sensordaten anzeigen:
  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("Luftfeuchtigkeit: %.2f %%", bme.humidity);
  M5.Lcd.setCursor(10, 90);
  M5.Lcd.printf("Druck: %.2f hPa", bme.pressure / 100.0);
  M5.Lcd.setCursor(10, 120);
  M5.Lcd.printf("Gas: %d Ohm", bme.gas_resistance);

// Daten alle 11 Sekunden aktualisieren (Die Standard-Scan-Geschwindigkeit des Gassensors beträgt 10,8 s):
  delay(11000); 
}


✔ Copiep!

 

Ergebnis

Es funktionierte einwandfrei, und ich konnte die Daten an unseren Home Assistant übertragen.
Der Gaswert wird in Milliohm angegeben. In unserem Test lag der Wert über 20.000, daher ist die Luftqualität gut; andernfalls ist sie schlechter.
    

Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * gekennzeichnet.

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.