Projet de test de la qualité de l'air M5Stack Core2
M5Stack Core2
M5Core2 est le dispositif principal amélioré de deuxième génération de la série de kits de développement M5Stack IoT. Il dispose d'un microcontrôleur ESP32 D0WDQ6-V3 avec processeurs double cœur, Wi-Fi, 16 Mo de Flash, 8 Mo de PSRAM et un écran tactile capacitif de 2,0 pouces. Il comprend une interface USB Type-C, une batterie de 390 mAh gérée par une puce AXP192 et des composants supplémentaires tels qu'un module RTC intégré, un moteur de vibration, un emplacement pour carte TF, une interface audio numérique I2S et des boutons capacitifs programmables. bonne utilisation de l'écran core2 pour l'affichage.
Unité ENV Pro
Projet
Connecter
Cette partie est très simple. Le Core 2 et l'ENV Pro Unit utilisent tous l'interface Grove, et ils utilisent tous deux Grove PORT A. Il s'agit d'un port d'interface I2C. Nous avons juste besoin d'un câble Grove.
Code
// 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); }