M5Stack Core2
M5Core2 er anden generation af kerneenheden i M5Stacks IoT-udviklingskitserie. Den har en ESP32 D0WDQ6-V3-MCU med processorer med to kerner, Wi-Fi, 16 MB Flash, 8 MB PSRAM og en 2,0-tommers kapacitiv berøringsskærm. Den har en USB Type-C-grænseflade, et 390 mAh-batteri styret af en AXP192-chip samt ekstra komponenter såsom et indbygget RTC-modul, en vibrationsmotor, en TF-kortplads, et I2S-digitalt lydinterface og programmerbare kapacitive knapper. Vi kan udnytte Core2-skærmen til visning.

ENV Pro Unit

Projekt
Tilslut
Denne del er meget enkel. Core 2 og ENV Pro Unit bruger begge Grove-grænsefladen, og de bruger begge Grove PORT A. Det er en I2C-grænsefladeport. Vi skal bare bruge et Grove-kabel.

Kode
// Kodedelen er den sværeste del af dette projekt. Lad os gå i gang.
// Først skal vi finde ud af, hvilke biblioteker vi har brug for:
#include
#include
#include
#include
// Da denne sensor er en BME680-sensor, kan vi bruge Adafruit_BME680- og Adafruit_Sensor-bibliotekerne til denne del samt et M5Core2-bibliotek og et Wire-bibliotek.
// Derefter skal vi definere I2C-benene:
#define SDA_PIN 32
#define SCL_PIN 33
// Opret derefter 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("ENV Pro-enhedsdata");
// Initialiser I2C:
Wire.begin(SDA_PIN, SCL_PIN);
// Initialiserer BME688-sensoren (BME688's standardadresse er 0x77):
if (!bme.begin(0x77, &Wire)) {
M5.Lcd.println("Kunne ikke finde BME688-sensoren!");
while (1);
}
// Indstilling af BME688-parametre:
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 (kontrollér først, om BME688-sensoren er tilgængelig):
void loop() {
if (! bme.performReading()) {
M5.Lcd.println("Kunne ikke udføre aflæsningen!");
return;
}
// Vis 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("Luftfugtighed: %.2f %%", bme.humidity);
M5.Lcd.setCursor(10, 90);
M5.Lcd.printf("Tryk: %.2f hPa", bme.pressure / 100.0);
M5.Lcd.setCursor(10, 120);
M5.Lcd.printf("Gas: %d ohm", bme.gas_resistance);
// Opdatér data hvert 11. sekund (gassensorens standardscanningshastighed er 10,8 sek.):
delay(11000);
}
Resultat

