Contents menu
※この記事は2020年2月14日に更新されました。
先日から右脳で覚えるプログラミングシリーズを更新していますが、並行してM5Stack関係も更新していきたいと思っています。
本日は、第一弾としてM5Stackで温度計湿度計を作る手順を順番に見ていきたいと思います。
1、 M5Stackとセンサーを購入
M5Stackは、いろんなモデルがあるかと思いますが、まずはいろいろ遊んでみる人や、筆者のように、水耕栽培のプログラムを書きたい!という人にはこのモデルでOKだと思います。
M5Stack Grayといって、加速度、ジャイロ、磁気を計測可能な9軸センサ、MPU9250を搭載したモデルもあります。
このあたりは開発したい目的に合わせて選んで行けばいいと思います。
筆者の購入したベーシックモデルはこんな感じです。



USBケーブルと、ジャンパワイヤのオスメスがセットになっています。
2、センサーを購入する

このセンサーの購入が大変でした。
在庫切れが続き、なかなか手に入らず、スイッチサイエンスさんにて、在庫通知の登録をして、待つことニか月、やっと在庫通知がきて購入することができました。
筆者が購入したセンサーは【Si7021搭載 温湿度センサモジュール】というもの。
2020年2月14日現在、また在庫なしになっていました。
人気だからなのか、どこかのスクールか、業者がまとめ買いしているのか・・・
とにかく在庫通知を登録して待つしかないようです。
3、センサーと本体を接続する

はんだづけをしなくていいというのもM5Stack最大の魅力の一つです。
このセンサーもM5Stackに付属でついてくる、オスメスのジャンパワイヤだけで接続できます。
M5Stack側にはオスのジャンパワイヤを差し込みます。

ちょっと画像が荒いですが
- 3V3
- G
- 21
- 22
に差し込みます。
センサー側にはメスのジャンパワイヤを。
- VIN
- GND
- SDA
- SCL
それぞれ対になっているので、色でしっかり分けて間違えないようにしましょう。
- 3V3→VIN
- G→GND
- 21→SDA
- 22→SCL
筆者も一度差し込み間違いでエラーとなりました。
4、開発環境を整える(アルディーノをインストール&ライブラリーの読み込み)

右脳で覚えるプログラミングシリーズでは、メモ帳を使っていました。
M5Stackはアルディーノを使うと便利です。
プログラムの管理もしやすいですし、すぐに呼び出して過去に書いたプログラムなどをコピペしたりも簡単です。
アルディーノをはこちらから無料ダウンロードできます。
ダウンロードが完了したら、ライブラリーを読み込みましょう。
Arduino IDEの「ツール」→「ライブラリを管理」をクリックして、ライブラリマネージャーを立ち上げます。
ライブラリマネージャーの検索欄に「adafruit si7021」と入力。
「Adafruit Si7021 Library by Adafruit」をインストールしてください。
これで、Si7021のセンサーライブラリの読み込みが完了します。
5、プログラムを書く

コードを書くためにはまずは開発環境を整えないといけません。
M5Stackの開発環境はウェブのGUI版などがあるのですが、実はこのウェブGUI版環境はSSLで暗号化されておらず、少し不安が残る。。。というわけで、変にGUIで覚えてしまうと後で混乱する可能性があるため、筆者はアルディーノを使用しました。
諸々の開発環境や、コードの書き方などについてはこちらの書籍を参考にさせていただきました。
この本。
めちゃめちゃおススメです。
めちゃめちゃ分かりやすく書いてくれています。
これはまじで買うべきです。
この本一冊で、いろいろなことが学べて創造でき、自分の目的のプログラムをイメージしやすくなると思います。
いろいろ戻ったり書き込んだりとしたいので、電子書籍ではなく、通常の書籍をおすすめします。
Si7021を使った温度と湿度のみのシンプルなセンサーのコードは書籍のP106を参照してください。
筆者は温度の部分を名前に変えてみました。
参考コード
#include <M5Stack.h>
#include "Adafruit_Si7021.h"
Adafruit_Si7021 sensor = Adafruit_Si7021();
void setup(){
M5.begin();
if(!sensor.begin()){
Serial.println("Did not find Si7021 sensor!");
while (true);{
delay(0);
}
}
M5.Lcd.setTextSize(3);
}
void loop(){
float temp = sensor.readTemperature();
float humid = sensor.readHumidity();
M5.Lcd.setCursor(40,80);
M5.Lcd.print("Kotaro: ");
M5.Lcd.print(temp, 1);
M5.Lcd.print("'C");
M5.Lcd.setCursor(40, 140);
M5.Lcd.print("Humid: ");
M5.Lcd.print(humid, 1);
M5.Lcd.print("%");
delay(1000);
}
↑↑↑みんなのM5Stack入門(P110)引用
書けたら、Arduino IDEの「スケッチ」→「マイコンボードに書き込む」でM5Stackに書き込んでくれます。
この時に、もしエラーがあれば、書き込む前にArduino IDEが知らせてくれます。
無事に、温度と湿度を計測できたでしょうか?
このコードだと、このような画面になると思います。

まとめ
本体+センサー+参考書の3つのアイテムで温湿度計が完成です。
筆者は植物や、栽培などの用途でプログラムをイメージしていますので、温湿度計から入りましたが、書籍には、ジャイロの使い方など様々な情報が載っています。
みなさんの開発目的に合わせて利用してみてください。
みなさんの参考になれば幸いです。