M5Stack_ENV_III センサの動作テスト

2025.2.13 Coskx Lab  

1 はじめに

M5Stack Basic V2.7に M5Stack_ENV_III を接続して環境値を測定します。

ENV IIIは、SHT30とQMP6988を内蔵し、温度、湿度、気圧のデータを検出する環境センサーで,Groveインターフェイスを使用してマイコンに接続できるようになっています。(I2Cインターフェイス(クロック信号SCLと、データ信号SDA)+ +V + GNDの4線ケーブル使用)
M5Stackとは付属の4線ケーブルで接続するだけで配線完了となります。



2 使用環境

3 接続

M5Stack Basic V2.7にはPort.A.I2Cコネクタに付属ケーブルで接続します。




4 テストプログラム

https://github.com/m5stack/M5Unit-ENV
を参考にさせていただきました。

  動作テスト用プログラム本体

//M5Stack_ENV_III.ino

#include <M5Stack.h>
#include "M5UnitENV.h"

SHT3X sht3x;
QMP6988 qmp;

void setup() {
    Serial.begin(115200);
    M5.begin();
    M5.Power.begin();
    M5.Lcd.setTextSize(3);

    while (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, 21, 22, 400000U)) {
        Serial.println("Couldn't find QMP6988");
        delay(1000);
    }

    while (!sht3x.begin(&Wire, SHT3X_I2C_ADDR, 21, 22, 400000U)) {
        Serial.println("Couldn't find SHT3X");
        delay(1000);
    }
}

void loop() {
    M5.Lcd.clear(TFT_BLACK);
    M5.Lcd.setTextColor(WHITE, BLACK);
    M5.Lcd.setCursor(0,0);

    if (sht3x.update()) {
        Serial.println("-----SHT3X-----");
        Serial.print("Temperature: ");
        Serial.print(sht3x.cTemp);
        Serial.println(" degrees C");
        Serial.print("Humidity: ");
        Serial.print(sht3x.humidity);
        Serial.println("% rH");
        Serial.println("-------------\r\n");

        M5.Lcd.println("-----SHT3X-----");
        M5.Lcd.print("Temp: ");
        M5.Lcd.print(sht3x.cTemp);
        M5.Lcd.println(" degC");
        M5.Lcd.print("Humd: ");
        M5.Lcd.print(sht3x.humidity);
        M5.Lcd.println("% rH");
    }

    if (qmp.update()) {
        Serial.println("-----QMP6988-----");
        Serial.print(F("Temperature: "));
        Serial.print(qmp.cTemp);
        Serial.println(" *C");
        Serial.print(F("Pressure: "));
        Serial.print(qmp.pressure);
        Serial.println(" Pa");
        Serial.print(F("Approx altitude: "));
        Serial.print(qmp.altitude);
        Serial.println(" m");
        Serial.println("-------------\r\n");

        M5.Lcd.println("-----QMP6988---");
        M5.Lcd.print(F("Temp: "));
        M5.Lcd.print(qmp.cTemp);
        M5.Lcd.println(" *C");
        M5.Lcd.print(F("Pres: "));
        M5.Lcd.print((int)(qmp.pressure/100));
        M5.Lcd.println(" hPa");
        M5.Lcd.print(F("App alt: "));
        M5.Lcd.print((int)qmp.altitude);
        M5.Lcd.println(" m");
    }
    delay(1000);
}

5 実行の様子と考察

シリアルモニタでの実行の様子を1サイクル分取得しました。

14:46:46.274 -> -----SHT3X-----
14:46:46.274 -> Temperature: 20.25 degrees C
14:46:46.274 -> Humidity: 40.98% rH
14:46:46.274 -> -------------
14:46:46.274 -> 
14:46:46.313 -> -----QMP6988-----
14:46:46.313 -> Temperature: 20.70 *C
14:46:46.313 -> Pressure: 98745.00 Pa
14:46:46.313 -> Approx altitude: 222.34 m
14:46:46.313 -> -------------
14:46:46.313 -> 

M5Stack単体での実行の様子は次のようになります。



SHT3XとQMP6988はそれぞれに温度センサを持っていますが,小数点以下は測定値が異なっています。
QMP6988は,高度を表示していますが,これは気圧をもとに算出されているものと思われます。

6 まとめ

M5Stack_ENV_III センサでの測定値を表示することができました。