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 使用環境
- Windows 11pro 64-bit
- Arduino IDE 2.3.4
- M5Stack Basic V2.7
- M5Stack_ENV_III センサ
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 センサでの測定値を表示することができました。