Slide 1

Slide 1 text

©OpenStreetMap contributors 2024.02.27 SUZUKI Yusuke M5Stackを用いたIoT開発

Slide 2

Slide 2 text

©OpenStreetMap contributors 01 M5Stackについて 02 M5Stackの開発環境 03 M5Stackで何をしよ うか? 目次

Slide 3

Slide 3 text

©Project PLATEAU / MLIT Japan 鈴木 祐亮 自己紹介 その1 SUZUKI Yusuke ● 長野県出身。北海道在住23年目。北陸新幹線とカニ が好き。 ● 株式会社MIERUNE所属。バックエンドのエンジニア ● AWS・CloudFlare等のクラウドサービスも触って る ● 会社のインフラ周りの運用も担当 GISエンジニア

Slide 4

Slide 4 text

©Project PLATEAU / MLIT Japan 鈴木 祐亮 自己紹介 その2 SUZUKI Yusuke ● 趣味 ○ カメラ ○ 映画鑑賞・レビュー ○ イラスト描き ○ ゲーム (コンピュー タ、アナログ) ○ etc… GISエンジニア 知人の某女史にSNS用 イラストを提供 風景写真と食べ物写真を掲載してる 私のインスタグラム

Slide 5

Slide 5 text

©OpenStreetMap contributors 01 M5Stackとは

Slide 6

Slide 6 text

©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その1 ⚫ マイコンチップ搭載ボード Arduino (アルドゥイーノ) と互換性があ るIoTモジュール ○ Arduino自体はイタリア生まれ 2003年から発売 ⚫ M5Stackの開発・販売は中国・深センにあるスタートアップ企業 ・M5Stack社 ⚫ M5Stackは製品グループの総称 ○ M5Stack Core、M5Stack Fire、M5StickC、 M5StickV、M5Paperなどの目的別製品がある

Slide 7

Slide 7 text

©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その2 ⚫ 今日使うのはM5Core2 for AWS ⚫ CPU ESP32 (32bit 240MHz) ○ 参考) ■ iPhone 3GS 32bit ARMベース 600MHz ■ Nintendo 3DS 32bit 任天堂独自CPU 268MHz ○ WiFi (2.4GHz) とBLE (Bluetooth Low Energy) 機能を内臓 ⚫ M5Core2 for AWS の製品には、AWS IoTでデバイス認証を行うため の暗号化・証明書チップも搭載している ○ AWS IoTが証明書ベースのデバイス認証しかサポートしてないので。

Slide 8

Slide 8 text

©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その3 ⚫ 低電力 5V@500mA ⚫ 16MBフラッシュメモリ、8MB PSRAM ⚫ OSは特にない。リアルタイムOSが動く ○ 一度に動かせるプログラムは一個だけ。 ⚫ バッテリー内臓(容量390mAh) ○ 電源がない環境でもでもおおよそ3日間ほど稼働できる模様。 ○ 背面にバッテリー増量用端子。拡張バッテリーもあり

Slide 9

Slide 9 text

©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その4 ⚫ 画面・ボタン・センサー・通信機能を搭載 ○ 画面: 320x240ピクセルのカラー液晶 ○ ボタン: 3つのボタン(M5Core 2はタッチパネル) ○ センサー: 加速度センサー、ジャイロセンサー、温度センサー ⚫ その他、時計、バイブレーター、マイク、スピーカーも備える

Slide 10

Slide 10 text

©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その5 ⚫ 拡張ソケットが3つ ○ GROVE規格(I2C+I/O+UART)PORT A, B, C ○ 様々なセンサーを組み合わせて搭載できる(Stack) ⚫ マイクロSDカード ○ SRAM、フラッシュメモリに乗らない大きなデータの取り扱い時 に利用 ○ 16GBまで対応 ■ (とされてるが、手持ちの32GBカードも認識)

Slide 11

Slide 11 text

©Project PLATEAU / MLIT Japan M5Stackとは Raspberry PIってのもありますが ⚫ ラズパイは、Linuxを動かせるマイコンボード ○ どっちかというと小さなPC ○ 近年、性能も向上しており、どんどんミニPCに近づいてる ○ それにともない、価格も向上。 ○ 安価な時代はとっくに終わった。 ⚫ M5Stackは、マイコンボード ⚫ ラズパイとM5StackはPCとゲーム機の関係に近い ⚫ ラズパイは特にUSBを利用するIoTデバイスとして使うのがよさげ ○ 汎用I/O : GPIOも搭載してるので簡単な ■ ケーブルが外れやすい ⚫ 各種センサーを活用する場合だと、M5Stackの方が使いやすいかも ○ 割と堅牢

Slide 12

Slide 12 text

©OpenStreetMap contributors 02 M5Stackの開発環境

Slide 13

Slide 13 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その1 ⚫ Windows or Mac or Linuxでプログラムを開発 > ビルド ⚫ 作成したプログラムはビルドしたバイナリをUSB-Cケーブルを通じ てM5Stackに書き込む ⚫ M5Stackで動かせるのはひとつのプログラムだけ

Slide 14

Slide 14 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その2 ⚫ Arduino (アルドゥイーノ) IDE ○ 使える言語は基本がC++ ○ バイナリはESP32向け。 ○ x86/x64系WindowsでもApple SiliconのMacでも、クロ スコンパイル可能 ○ Arduino IDEは動作がもっさりしてるので、VSCodeを使っ ても開発環境は構築できる(まだ試してない)

Slide 15

Slide 15 text

©Project PLATEAU / MLIT Japan Arduino (アルドゥイーノ) IDE

Slide 16

Slide 16 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その3 ⚫ その他開発環境 ○ UIFlow ■ Scratch風に、コードブロックを組み合わせてプログラムを構築するプロ グラミング環境 ○ MicroPython ■ 組み込み機器向けのPythonを使ってプログラミング

Slide 17

Slide 17 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 サンプル1: Hello, World #include void setup() { M5.begin(); M5.Lcd.setTextSize(6); M5.Lcd.print("Hello World!!"); } void loop() { }

Slide 18

Slide 18 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 サンプルプログラムの構造 ⚫ setup() 関数 ○ 初期化処理を行う ⚫ loop() 関数 ○ メイン処理を行う ⚫ この構造になんか見覚えがある方 ○ 電子アートとビジュアルデザインのためのプログラミング言語 ・Processingと似てる。 ○ そもそもArduino(アルドゥイーノ)IDE自体がProcessingの エディタに影響をうけてる

Slide 19

Slide 19 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル2: LEDを光らせる ⚫ サンプル3: ボタンを使う ⚫ サンプル4: 音を鳴らす ○ wavファイル、mp3ファイルの再生が可能 ○ 無限ブッダマシン的に延々とお経を鳴らすとかも可能

Slide 20

Slide 20 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境

Slide 21

Slide 21 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル5: WiFiにつなぐ ○ WiFiはいくつかAPを登録しておけば、一番電波強度が強いAP を使う ○ スマホみたく、その場に存在するAPを動的に選択することがで きない。 ○ プログラムのコードにAP情報を埋め込んでおく必要がある。 ■ せめて設定ファイル編集で適用できないものか ○ ネットに接続すれば、様々な通信プロトコルを扱える ■ HTTP, TCP, UDP etc…

Slide 22

Slide 22 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル6: MQTTサーバ (ブローカー)と情報の送受 信を行う ○ M5Stackはメッセージ を待ち続けたり(Sub)、 定期的にメッセージを送 ること(Pub)もできる ○ 複数のM5Stackに同時 にメッセージも送れる

Slide 23

Slide 23 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Core2を動かす。 MQTTサーバを動かしてないので メッセージ送信は失敗してる。 MQTTサーバのmosquittoを動か す。 M5Core2からのメッセージを受信 してる。

Slide 24

Slide 24 text

©Project PLATEAU / MLIT Japan M5Stackの開発環境 ここでM5Core2からのメッセージ を確認するため、mosquitto_sub を動かしてトピックを指定する。 M5Core2からの送ってるメッセー ジを確認できる。 M5Core2のプログラムは他の publisherからのメッセージも受け られる。 なので、mosquitto_pubプログラ ムを起動。メッセージを送ってみる。

Slide 25

Slide 25 text

©Project PLATEAU / MLIT Japan mosquitto_pubプログラムから 送ってるメッセージをM5Core2で 受け取れてることを確認。 これらができることがわかると、活 用分野が広がりますね。

Slide 26

Slide 26 text

©OpenStreetMap contributors 03 M5Stackで 何 をしよう か?

Slide 27

Slide 27 text

©Project PLATEAU / MLIT Japan M5Stackで何をしようか? アイデア:その1 ⚫ 機器単体でネットワーク対応しているため、IoT的な機器を用いるアイデアはおおむね実 現可能と思われる。 ⚫ 例えば... ○ BLE通信で値を取得できる温度計(Switchbot)から定期的に温度情報を受信。 ■ →その後、なんらかのAPIを通じて、温度をGoogle SpreadSheetに記録し続ける ○ 人感センサーと組み合わせる。 ■ 誰かが部屋に入退室した時間を(なるべく)自動化する ○ 備品の在庫管理 ■ 備品を使う度に、付近のM5Stackのボタンを押す。 ● M5Stackに関連する在庫の数量を減らすことができる ■ 定期的に最新の在庫数を管理するシートに送信・在庫数の同期を取ったり、リアルタイムに在庫数 を変動させる。

Slide 28

Slide 28 text

©Project PLATEAU / MLIT Japan M5Stackで何をしようか? アイデア:その2 ⚫ その他いろいろ ○ 対応するセンサーを繋いでみると可能性さらに広がりそう。

Slide 29

Slide 29 text

©OpenStreetMap contributors 04 まとめ・質疑応答

Slide 30

Slide 30 text

© 地理院地図 全国最新写真(シームレス) ●M5Stackは、IoTデバイスの開発に適したマイコ ンボード ●センサー等の拡張モジュールも豊富。低価格 ●PCで開発。ネット接続も簡単。AWS IoT等と連携 可能 まとめ・質疑応答