M5Stack

【M5Stack】温湿度気圧センサユニットの使い方を分かりやすく解説!【ENV Ⅲ】

m5stack-ENVIII.png

<この記事について>

  • 「M5Stackに接続する温湿度気圧センサユニットの使い方がよく分からない…」と悩んでいる人のために書きました。
  • この記事を読むことで、M5Stackで温湿度気圧センサユニット(ENV Ⅲ)を使う方法が分かります。
  • 結論としては、「ライブラリをインストール」→「ユニットを接続」→「プログラムを書いて実行」という手順で温湿度気圧センサユニットを使うことができます。

こんにちは!こんばんは!

ちゃとらです(・ω・)/

最初となるM5Stack専用便利ユニットの解説となります!ユニットの最大の特徴は接続がとても簡単なことです。

ぶっちゃけこのユニットはM5Stackに搭載されている温度センサ(MPU6886)よりも精度が高いんですよね…

ちなみに、このユニットはM5Stack BASICやM5Stack GRAYなどでも使用可能です。

ちゃとら

M5Stackで温湿度気圧センサユニット(ENV Ⅲ)を使う方法について分かりやすく解説していきます!

m5stack-mpu6886-thermometer.png
【M5Stack】温度センサの使い方を分かりやすく解説!【MPU6886】この記事では、M5Stackに搭載されているMPU6886で温度センサを使う方法について解説しています。特別な設定は必要なく、プログラムを書いて実行するだけで温度センサを使用することができます。...

今回扱う電子機器

M5Stackの種類M5Stack FIRE(V2.6)
値段49.90ドル(税別)
(販売価格は7700円程 投稿日現在)
生産国中国
サイズ5.4 x 5.4 x 3.05 cm
内容物ENV Ⅲユニット(1個)、Groveケーブル(1個)
値段6.95ドル(税別)
(販売価格は1100円程 投稿日現在)
生産国中国
サイズ2.42 x 3.22 x 0.81 cm

M5StackはいつものM5Stack FIREを使っていきます。7700円程度の値段です。

温湿度気圧センサユニットはENV Ⅲを使います。1100円ぐらいの価格ですが専用のケーブルもちゃんと付いています。

ENV ⅢがあるということはENV ⅡとENV Ⅰもありますが、現在は販売終了となっています。

ENV ⅡもしくはENV Ⅰを使う場合は搭載されているセンサが異なりプログラムの書き方も若干変わってくるので注意です。

ENV Ⅲについて

ENV Ⅲに搭載されているセンサや通信方式について解説していきます。

ENV Ⅲの写真その1
ENV Ⅲの写真その2
項目内容
搭載センサSHT30, QMP6988
接続場所PORT A
通信方式I2C

ENV Ⅲは通信方式がI2CなのでPORT Aに接続します。

また、ENV ⅢにはSHT30とQMP6988というセンサが搭載されていて、SHT30が温湿度センサでQMP6988が気圧センサです。

SHT30

項目内容
温度測定範囲-40℃~150℃
誤差範囲±2℃
動作温度範囲-40℃~125℃
メーカーSensirion(スイス)

測定できる温度範囲はそこそこ広いです。しかし、ENV Ⅲ自体の動作温度範囲は0~40℃なので寒すぎたり暑すぎる場所では出力値がバグってしまいます…

ENV ⅡにもSHT30が温湿度センサとして搭載されていていましたが、ENV ⅠにはDHT12が搭載されていていました。

QMP6988

項目内容
気圧測定範囲300hPa~1100hPa
誤差範囲±0.039hPa
動作温度範囲-40℃~85℃
メーカーQST CORPORATION(中国)

ENV Ⅲになってから気圧センサとしてQMP6988が搭載されています。

ちなみに、ENV ⅡとENV ⅠにはBMP280が気圧センサとして搭載されていました。

使い方

以下の手順にてM5StackでENV Ⅲを制御します。

  1. 「M5Unit-ENV」ライブラリをインストールする
  2. M5StackとENV Ⅲを接続する
  3. プログラムを書いて実行する

手順としては簡単でありプログラムもかなり楽に記述できます。

ここでは、M5Stackのセットアップ(Arduino IDE)は完了していること前提で解説していきます。

ちゃとら

M5Stackのセットアップ(Arduino IDE)がまだ完了していない人は以下の記事を参考にしてください!

m5stack-setup-arduino.png
【M5Stack】M5Stackのセットアップ(Arduino)を分かりやすく解説!【Arduino IDE】この記事では、M5Stackのセットアップ(Arduino IDE)について解説しています。手順としては、「USBドライバをインストール」→「ボードマネージャをインストール」→「ライブラリをインストール」→「プログラムを書いて実行」となっています。...

ライブラリをインストール

まずは、ライブラリをインストールをします。

今回は「M5_ENV.h」を使用するので、「M5Unit-ENV」というライブラリをインストールします。

Arduino IDEを開き「ツール」→「ライブラリを管理…」を選択し、ライブラリマネージャで「M5Unit-ENV」と検索しライブラリをインストールしましょう。

枠内の右下に出てくる「インストール」ボタンをクリックすればインストールできます。

ライブラリのインストール
ライブラリの詳細リンク

https://github.com/m5stack/M5Unit-ENV

接続

次は接続ですが、かなり簡単でGroveケーブルでENV Ⅲを接続すればOKです。M5Stackの右側に接続口があるのでここに接続します。

M5Stackの接続口

M5StackとENV Ⅲの接続

こんな感じで接続します。ENV ⅢはI2C通信で使うのでPORT Aに接続します。PORT B,Cは別の通信方式の接続口なので間違えないよう注意です!

プログラムを書いて実行

それでは、以下のプログラムをM5Stackに書き込んでENV Ⅲを使ってみましょう!

#include <M5Stack.h>
#include "M5_ENV.h"
SHT3X sht30;      // sht30のオブジェクトを生成
QMP6988 qmp6988;  // qmp6988のオブジェクトを生成

// 取得する温湿度気圧それぞれのデータを初期化
float prs = 0.0;
float temp = 0.0;
float hum = 0.0;

void setup() 
{
  M5.begin();
  Wire.begin();    // I2C通信の設定
  
  qmp6988.init();  // qmp6988を初期化

  M5.Lcd.setTextSize(3);
}

void loop() 
{
  // 気圧データを取得
  prs = qmp6988.calcPressure() / 100;

  // 温度・湿度データを取得
  if(sht30.get() == 0)
  {
    temp = sht30.cTemp;
    hum = sht30.humidity;
  }

  // 温湿度気圧それぞれのデータをシリアル通信で送信
  Serial.print("P(hPa):");
  Serial.print(prs);
  Serial.print(",");
  Serial.print("T(*C):");
  Serial.print(temp);
  Serial.print(",");
  Serial.print("H(%):");
  Serial.println(hum);

  // 温湿度気圧それぞれのデータをM5Stackに表示
  M5.Lcd.setCursor(0, 50);
  M5.Lcd.setTextColor(BLUE, BLACK);
  M5.Lcd.printf("P: %.2f hPa ", prs);
  M5.Lcd.setCursor(0, 100);
  M5.Lcd.setTextColor(RED, BLACK);
  M5.Lcd.printf("T: %.2f *C ", temp);
  M5.Lcd.setCursor(0, 150);
  M5.Lcd.setTextColor(GREEN, BLACK);
  M5.Lcd.printf("H: %.2f %% ", hum);
  
  delay(100);
}

プログラムを作成できたら、シリアルポートとボードの設定を忘れずに行いましょう。

「ツール」→「シリアルポート」でM5Stackが接続されているポート番号を選び、
「ツール」→「ボード」→「ESP32 Arduino」で「M5Stack-Core-ESP32」を選びましょう。

それぞれ設定ができたら、M5Stackにプログラムを書き込みます。

M5Stackに表示
こんな感じで表示されればOKです。また、シリアル通信で温度,湿度,気圧それぞれのデータを送信しているのでM5Stackがパソコンと接続されていれば、シリアルプロッタでグラフ表示させることもできます。
温湿度気圧データ

グラフ表示させるときは通信速度を115200bpsに設定します。

グラフだと分かりにくいですが精度が高いセンサなのでどの値もずれが少ないです。M5Stack本体に搭載されている温度センサ(MPU6886)とは精度が全然違うんですよね…

用途としては、農業IoTやデジタルの温湿度計として使えそうです。

余談ですが、気圧から高度も測定可能です。高度計測もいけそう…です。

まとめ

ENV Ⅲについて

  1. ENV Ⅲは通信方式がI2CなのでPORT Aに接続する。温湿度センサとしてはSHT30が搭載されていて、気圧センサとしてはQMP6988が搭載されている。
  2. 「ライブラリをインストール」→「ユニットを接続」→「プログラムを作成して実行」という簡単な手順でENV Ⅲを制御可能。
ちゃとら

ENV Ⅲを使えば正確な温度,湿度,気圧を測定可能!

今回はここまでです。

ちゃとら(・ω・)/