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

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);
}
Resultat

