Day10. IoTプロトタイプに最適!『M5Stack』で温度警報器を作る
※ひとりでIoTまるっとチュートリアル Advent Calendar 2018
10日目の記事です。まだ登録していない方はこの機会によろしくおねがいします!
ここ一年、一部の界隈で人気が急上昇中のM5Stack。今回はその人気と使い方に迫ります!
目次
☑ M5Stackとは
☑ 楽しい!充実の周辺機器たち
☑ Arduino IDEを使ったローカル環境開発
☑ M5Cloudを使ったクラウド上での開発
☑ 便利な周辺機器
M5stackとは
M5Stackは良い。どういいのか、まとめてみました。
- ESP3ベースなので、省電力
- 画面がある
- 音が出る
- GPIO/I2C/...などマイコンとして基本的にある機能はすべて具備
- WiFi/Bluetoothモジュール内蔵
- 最近流行りのarduino/micropython環境で開発ができる
- M5Cloudにより、遠隔デプロイが可能。
- stackすることによる、拡張性◎
- 比較的安価(4500円程度)
とにかく安価で色々なことがギュッとつまった、プロトタイピングに最適なマイコンです。
やはり人気があり、先人たちがいろいろな記事を上げています。どれもとても勉強になるので、是非ご覧になってください。
楽しい!充実の周辺機器たち
M5stackの特徴の一つ、拡張性。かなりコミュニティが盛んで、高い頻度で新モジュールが追加されています。スイッチサイエンスやAmazonにたくさんあるので、探してみましょう!
今回は、そのなかからいくつか抜粋して紹介します。
バッテリー 850mAh
長時間、コンセント無しで動作が出来たら、モビリティも上がり嬉しいですよね。m5stackはデフォルトでバッテリーが付属していますが、3.7 V / 150 mAと、長時間動かすには心許ないです。バッテリーを装着すると、数倍長持ちします。これで持ち運びも完璧!
また、下記のような記事を見つけました。電池残量が可視化されていて、目安にめちゃくちゃいいですね。
GPSモジュール
なんと、GPS機能まで搭載できます!どこでどんなセンシングをしたかが記録できるので、バッテリーを積んで、持ち運びマイコンの完成です!
参考
- micropythonでGPS(Github)
- GPSのログデータ(滴了庵日録)
- M5StackでGPS衛星の現在位置を表示する]
M5Stack Faces
入力機能をもっと豊かにするアタッチメントです。
ゲームボーイ風のコントローラなどもあり、用途の幅が拡がります!
Arduino IDEを使ったローカル開発
さて、概要はこの辺にして、開発に入っていきましょう。M5Stackの元になっているESP32は、Arduino IDEでの開発が可能です。順を追って、手順を説明しましょう。(今回は、windows環境を想定しています。Mac/Linux環境はこちらの公式のdocumentをどうぞ)
1. Arduinoのインストール
2. ドライバのインストール
3. BoardManagerにm5stackを追加
参考1 : board managerの追加方法(ESP32) : 公式
参考2 : M5Stack買ったよ(Install備忘録) : ハマりがち(boardmanager周り)なところをしっかり抑えて書いてくれている
4. M5Stack boardの選択
5. ライブラリの追加
ArduinoのインストールはDay6に詳しく書いたので割愛します。
(参考 : Day6. ArduinoではじめてのLチカ)
続いて、M5Stackを認識させるため、Arduinoを使うローカルPCにドライバ登録をします。下記からダウンロードをしてください。
・32bit PCの方は "CP210xVCPInstaller_x86.exe"
・64bit PCの方は "CP210xVCPInstaller_x64.exe"
をクリックしましょう。
※私はWindows10 Universalでなく、Windows 7/8/8.1 (v6.7.6)がいいという記事を見かけたので、それを信じて後者をインストールしました。
正しくインストールできていれば、画像のように、デバイスマネージャでドライバを認識してくれます。
次に、ArduinoのボードマネージャにM5Stackを追加します。下記リンクを右クリック⇛[名前をつけてリンク先を保存]で、デスクトップなどにダウンロードします。
download_arduino_esp32_support.exe
その後、下図のようにArduinoIDEのフォルダドラッグ&ドロップします。
管理者権限で、このファイルを実行してください。処理が終わると、ボードが登録されています。便利ですね!
登録が終わったら、M5Stack Boardをボードマネージャから選択しましょう。
最後に、ライブラリを追加します。下図に従い、M5Stackパッケージをインストールしてください。
あとはArduino言語に従って、やりたい処理を書いてい来ます。
といってもはじめからいろいろするのは大変なので、いつもどおり、スケッチ例を使いながら勉強しましょう。デフォルトでかなりの例が入っているので、重宝します。
CLOCKのスケッチ例をコンパイルすると、時計になりました!!
※ エラーデバッグをしたいときはDay7で説明したとおり、Arduino IDEのシリアルコンソールから確認しましょう。次に紹介するM5Cloudに関しても、このデバッグ方法は同じです。文字化けするときは、ボーレートを確認しましょう。
M5Cloudを使ったクラウド上での開発
M5Stackの大きな特徴の一つが、このM5Cloud。ローカルの機器の開発をクラウド側で実装できるという、とても便利なサービスです。
機器の遠隔管理・遠隔デプロイが可能になるコンソール画面です。まだベータ版ですが、可能性はめちゃくちゃ感じます。処理はmicropythonで書きます。pythonを触ったことがある人なら、馴染みやすいかなと思います。少し癖があったり、ライブラリがまだまだなところがあったりもしますが、今後利用者が増えてくれば、その辺も解決するでしょう(期待しています)
Arduinoを使うときとは勝手が違い、WiFi環境が必須です。
まずは環境構築ですが、実は公式ドキュメントがめちゃくちゃ丁寧なので、それを参考にするのが一番いいだろうと思います。
注意点としては、WindowsではEspressif Flash Download Toolsというものを使って初期設定をするのですが、フォルダ名が日本語だったりするとエラーが出かねないので、ローマ字と半角記号のみでディレクトリパスを用意しておきましょう。
さて、準備が出来たらコードを書いていきます。micropythonは、上述の公式ドキュメントがめちゃくちゃ便利なのと、下記qiitaも参考になります。(M5StackでMicroPythonを使えるようにする )
まだまだドキュメントは少ないですが、interfaceなどでも特集が組まれたりしているので、始めたい人は購入してみるのもいいかと思います。
ここでは、簡単な例を作っていきます。温度が30℃以上になると、画面が赤くなり、そしてブザーが鳴る&slackに通知なんてどうでしょう。簡易版IoT火災報知器の完成です!
from m5stack import lcd, speaker
from machine import I2C
import time
i2c = I2C(freq=400000, sda=21, scl=22)
while True:
temp_byte = i2c.readfrom(72, 2) # アドレス72番から2byte読み込み
temp = int.from_bytes(temp_byte,"big")/128 # 温度換算
print(temp)
if temp > 30:
lcd.clear(lcd.RED)
lcd.setColor(lcd.WHITE, lcd.RED)
lcd.text(lcd.CENTER,lcd.CENTER, str(temp))
speaker.volume(1)
speaker.tone(freq=1000, duration=200) # 30℃以上で
else:
lcd.clear(lcd.BLUE)
lcd.setColor(lcd.WHITE, lcd.BLUE)
lcd.text(lcd.CENTER,lcd.CENTER, str(temp))
time.sleep(5)
こんな感じで、警報が鳴ります。もちろん、pythonを使えば通知を送ることも出来ます。
まとめ
いかがでしたか?ほんのちょっとでも、M5Stackの魅力が伝われば嬉しいです。
なお、M5Stackのユーザグループは開発者を中心にめちゃくちゃ活発で、日々アイディアツールが生まれています。このスピード感の速さも魅力の一つですね。とにかく、オールインワンマイコンとして今後も拡がりがありそうなので、みなさんも始めてみてはいかがでしょうか?
さて、少し日数を割きましたが、マイコンに焦点を当てた話はここまでです。(本当はサーバー上で実装/処理できるマイコンobnizや、SIMを差し込めるWioLTEなどについても話したかったのですが、日数の都合、省略します。)
明日からは、いよいよローカルを離れ、クラウドに向かっていきます。
IoTサービスを考える上での要、「無線通信技術」に徹底解説します。お楽しみに!ではではっ
前の日 : 非エンジニアでもシステム構築可能。IoTのキラーアイテム『Node-RED』
次の日 : IoTの中核部分「通信技術」の奥深さと可能性に迫る
この記事が参加している募集
サポートいただけると励みになります! よろしくおねがいします!!