前々からほしかったM5StickCとENV Hatが手に入ったので、さっそく湿度と温度を取得して表示してみることにしました!
目次
前提条件
今回のプログラムを作るにあたって、以下の前提条件があります。
- Arduino IDEのインストールが済んでいる
- USBドライバのインストールが済んでいる
- Arduino IDEにM5Stickのライブラリのインストールが済んでいる
今回用意したもの
M5StickC
小型のM5Stackです。
小さいながらもディスプレイがついているので、センサーの値を表示して確認することができます。
M5Stackよりも安くて小型なので今回はこちらを使うことにしました。
ENV Hat
Hatシリーズという簡単にM5StickCに接続できるセンサー類がたくさんあります。
今回は温度湿度を測るので、温度湿度を取得できるEnv Hatを使います。
Env Hatは温度湿度のほかに、気圧や磁界を取得することができます。
Env Hatが手に入らない場合は、M5STACK-ENV-UNIT(環境センサユニット)があるので、そちらを入手するのもアリです。
M5StickCとENV Hatで湿度と温度を取得して表示する
Arduino IDEでスケッチを作成
Arduino IDEを開きます。
[ファイル] > [スケッチ例] > [M5StickC] > [Basic] > [HelloWorld] を選択するとスケッチが作成されます。今回は「MyEnv」と名前を付けて保存しました。
GitHubから温度湿度を取得するのに必要なファイルをDLする
GitHubにEnv Hatを使うのに必要なライブラリがあるので、ダウンロードしましょう。(ダウンロードはこちら)
必要なファイルは「DHT12.cpp」「DHT12.h」の2つです。
ダウンロードしたファイルを、保存したスケッチMyEnv.inoと同じディレクトリに保存します。
MyEnv.inoを編集
今回は1秒ごとにセンサーから温度と湿度を取得して表示します。
loop()の中で1秒間処理を待機させる必要があるので、待機させる関数delay()を利用します。
delay(ミリ秒)で処理を待機させることができます。
1秒は1000ミリ秒なので delay(1000)で1秒待機します。
#include <M5StickC.h> //I2Cを使うためのライブラリインクルード #include <Wire.h> //ENV Hatの温度湿度を使うためのライブラリ #include "DHT12.h" //ENV Hatの温度湿度を使うためのライブラリを変数化 DHT12 dht12; // the setup routine runs once when M5StickC starts up void setup(){ // Initialize the M5StickC object M5.begin(); //ディスプレイ設定 M5.Lcd.setRotation(3);//横向きにする M5.Lcd.fillScreen(BLACK);//背景色黒くする // I2C初期化 Wire.begin(0, 26); } // the loop routine runs over and over again forever void loop() { // 気温 float tmp = dht12.readTemperature(); M5.Lcd.setCursor(0, 20); M5.Lcd.printf("Temp: %2.1f C", tmp); // 湿度 float hum = dht12.readHumidity(); M5.Lcd.setCursor(0, 40); M5.Lcd.printf("Humi: %2.0f %%", hum); // 1秒待機 delay(1000); }
M5StickCに書き出して動作確認!
Arduino IDEの「マイコンボードに書き込む」ボタンをクリックして、M5StickCにコンパイルしましょう。
問題なければ、M5StickCの画面に温度と湿度が表示されます。
最後に
実はスケッチ例でコーディングなしでENV Hatを利用できます(笑)
今回わざわざコーディングしましたが、スケッチ例でENV Hatを利用することができるサンプルコードがあります。
サンプルコードを使えば簡単に温度や湿度や気圧を取得して表示することができます(笑)
[ファイル] > [スケッチ例] > [M5StickC] > [Hat] > [ENV]で簡単にENV Hatを利用できます。ただ、メチャクチャコードが書かれているので、わかりやすくするために今回はHelloWorldを編集してENV Hatを利用するようにしました。
コメントを残す