M5Stack Core2
M5Core2 is het verbeterde kernapparaat van de tweede generatie in de M5Stack-serie IoT-ontwikkelkits. Het beschikt over een ESP32 D0WDQ6-V3 MCU met dualcoreprocessors, wifi, 16 MB Flash, 8 MB PSRAM en een capacitief touchscreen van 2,0 inch. Het bevat een USB Type-C-interface, een batterij van 390 mAh die wordt beheerd door een AXP192-chip, en aanvullende componenten zoals een ingebouwde RTC-module, vibratiemotor, TF-kaartsleuf, I2S-digitale audio-interface en programmeerbare capacitieve knoppen. We kunnen het scherm van de Core2 goed gebruiken voor de weergave.

ENV Pro Unit

Project
Verbinden
Dit deel is heel eenvoudig. De Core 2 en de ENV Pro Unit gebruiken beide een Grove-interface en gebruiken allebei Grove-poort A. Dit is een I2C-interfacepoort. We hebben alleen een Grove-kabel nodig.

Code
// Het codegedeelte is het lastigste onderdeel van dit project. Laten we eraan beginnen.
// Laten we allereerst uitzoeken welke bibliotheken we nodig hebben:
#include
#include
#include
#include
// Omdat deze sensor een BME680-sensor is, kunnen we hiervoor de bibliotheken Adafruit_BME680 en Adafruit_Sensor gebruiken, samen met de bibliotheken M5Core2 en Wire.
// Vervolgens moeten we de I2C-pinnen definiëren:
#define SDA_PIN 32
#define SCL_PIN 33
// Vervolgens maken we het BME688-object aan:
Adafruit_BME680 bme;
// Onderdeel van de void setup:
void setup() {
M5.begin();
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(10, 10);
M5.Lcd.println("Gegevens van de ENV Pro-eenheid");
// I2C initialiseren:
Wire.begin(SDA_PIN, SCL_PIN);
// BME688-sensor initialiseren (het standaardadres van de BME688 is 0x77):
if (!bme.begin(0x77, &Wire)) {
M5.Lcd.println("BME688-sensor niet gevonden!");
while (1);
}
// BME688-parameters instellen:
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);
// Onderdeel van de void loop (controleer eerst of de BME688-sensor beschikbaar is):
void loop() {
if (! bme.performReading()) {
M5.Lcd.println("Meten mislukt!");
return;
}
// Sensorgegevens weergeven:
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("Luchtvochtigheid: %.2f %%", bme.humidity);
M5.Lcd.setCursor(10, 90);
M5.Lcd.printf("Druk: %.2f hPa", bme.pressure / 100.0);
M5.Lcd.setCursor(10, 120);
M5.Lcd.printf("Gas: %d ohm", bme.gas_resistance);
// Gegevens elke 11 seconden bijwerken (de standaards scantijd van de gassensor is 10,8 s):
delay(11000);
}
Resultaat

