Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
M5Stackを用いたIoT開発
Search
MIERUNE
PRO
February 28, 2024
Programming
0
790
M5Stackを用いたIoT開発
IoTに便利という評判のM5Stackを買ってもらったので、どんなことができるかいろいろ試してみた。
MIERUNE
PRO
February 28, 2024
Tweet
Share
More Decks by MIERUNE
See All by MIERUNE
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
110
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
83
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
770
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
580
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
660
QGISで簡単にDEMを可視化 - ElevationTile4JP & QuickDEM4JP プラグインのアップデート / FOSS4G TOKAI 2024
mierune
PRO
0
330
ゼロから始める点群可視化 feat.QGIS
mierune
PRO
0
330
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
820
MIERUNE BBQ #10 in 札幌時計台 オープニング・クロージング
mierune
PRO
0
700
Other Decks in Programming
See All in Programming
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
230
Jakarta EE meets AI
ivargrimstad
0
650
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
Jakarta EE meets AI
ivargrimstad
0
190
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
120
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
340
Micro Frontends Unmasked Opportunities, Challenges, Alternatives
manfredsteyer
PRO
0
100
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
受け取る人から提供する人になるということ
little_rubyist
0
230
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Statistics for Hackers
jakevdp
796
220k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Visualization
eitanlees
145
15k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Code Reviewing Like a Champion
maltzj
520
39k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Transcript
©OpenStreetMap contributors 2024.02.27 SUZUKI Yusuke M5Stackを用いたIoT開発
©OpenStreetMap contributors 01 M5Stackについて 02 M5Stackの開発環境 03 M5Stackで何をしよ うか? 目次
©Project PLATEAU / MLIT Japan 鈴木 祐亮 自己紹介 その1 SUZUKI
Yusuke • 長野県出身。北海道在住23年目。北陸新幹線とカニ が好き。 • 株式会社MIERUNE所属。バックエンドのエンジニア • AWS・CloudFlare等のクラウドサービスも触って る • 会社のインフラ周りの運用も担当 GISエンジニア
©Project PLATEAU / MLIT Japan 鈴木 祐亮 自己紹介 その2 SUZUKI
Yusuke • 趣味 ◦ カメラ ◦ 映画鑑賞・レビュー ◦ イラスト描き ◦ ゲーム (コンピュー タ、アナログ) ◦ etc… GISエンジニア 知人の某女史にSNS用 イラストを提供 風景写真と食べ物写真を掲載してる 私のインスタグラム
©OpenStreetMap contributors 01 M5Stackとは
©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その1 ⚫ マイコンチップ搭載ボード
Arduino (アルドゥイーノ) と互換性があ るIoTモジュール ◦ Arduino自体はイタリア生まれ 2003年から発売 ⚫ M5Stackの開発・販売は中国・深センにあるスタートアップ企業 ・M5Stack社 ⚫ M5Stackは製品グループの総称 ◦ M5Stack Core、M5Stack Fire、M5StickC、 M5StickV、M5Paperなどの目的別製品がある
©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が証明書ベースのデバイス認証しかサポートしてないので。
©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その3 ⚫ 低電力
5V@500mA ⚫ 16MBフラッシュメモリ、8MB PSRAM ⚫ OSは特にない。リアルタイムOSが動く ◦ 一度に動かせるプログラムは一個だけ。 ⚫ バッテリー内臓(容量390mAh) ◦ 電源がない環境でもでもおおよそ3日間ほど稼働できる模様。 ◦ 背面にバッテリー増量用端子。拡張バッテリーもあり
©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その4 ⚫ 画面・ボタン・センサー・通信機能を搭載
◦ 画面: 320x240ピクセルのカラー液晶 ◦ ボタン: 3つのボタン(M5Core 2はタッチパネル) ◦ センサー: 加速度センサー、ジャイロセンサー、温度センサー ⚫ その他、時計、バイブレーター、マイク、スピーカーも備える
©Project PLATEAU / MLIT Japan M5Stackとは M5Stackの特長 その5 ⚫ 拡張ソケットが3つ
◦ GROVE規格(I2C+I/O+UART)PORT A, B, C ◦ 様々なセンサーを組み合わせて搭載できる(Stack) ⚫ マイクロSDカード ◦ SRAM、フラッシュメモリに乗らない大きなデータの取り扱い時 に利用 ◦ 16GBまで対応 ▪ (とされてるが、手持ちの32GBカードも認識)
©Project PLATEAU / MLIT Japan M5Stackとは Raspberry PIってのもありますが ⚫ ラズパイは、Linuxを動かせるマイコンボード
◦ どっちかというと小さなPC ◦ 近年、性能も向上しており、どんどんミニPCに近づいてる ◦ それにともない、価格も向上。 ◦ 安価な時代はとっくに終わった。 ⚫ M5Stackは、マイコンボード ⚫ ラズパイとM5StackはPCとゲーム機の関係に近い ⚫ ラズパイは特にUSBを利用するIoTデバイスとして使うのがよさげ ◦ 汎用I/O : GPIOも搭載してるので簡単な ▪ ケーブルが外れやすい ⚫ 各種センサーを活用する場合だと、M5Stackの方が使いやすいかも ◦ 割と堅牢
©OpenStreetMap contributors 02 M5Stackの開発環境
©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その1 ⚫ Windows
or Mac or Linuxでプログラムを開発 > ビルド ⚫ 作成したプログラムはビルドしたバイナリをUSB-Cケーブルを通じ てM5Stackに書き込む ⚫ M5Stackで動かせるのはひとつのプログラムだけ
©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その2 ⚫ Arduino
(アルドゥイーノ) IDE ◦ 使える言語は基本がC++ ◦ バイナリはESP32向け。 ◦ x86/x64系WindowsでもApple SiliconのMacでも、クロ スコンパイル可能 ◦ Arduino IDEは動作がもっさりしてるので、VSCodeを使っ ても開発環境は構築できる(まだ試してない)
©Project PLATEAU / MLIT Japan Arduino (アルドゥイーノ) IDE
©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Stackの開発環境 その3 ⚫ その他開発環境
◦ UIFlow ▪ Scratch風に、コードブロックを組み合わせてプログラムを構築するプロ グラミング環境 ◦ MicroPython ▪ 組み込み機器向けのPythonを使ってプログラミング
©Project PLATEAU / MLIT Japan M5Stackの開発環境 サンプル1: Hello, World #include
<M5Core2.h> void setup() { M5.begin(); M5.Lcd.setTextSize(6); M5.Lcd.print("Hello World!!"); } void loop() { }
©Project PLATEAU / MLIT Japan M5Stackの開発環境 サンプルプログラムの構造 ⚫ setup() 関数
◦ 初期化処理を行う ⚫ loop() 関数 ◦ メイン処理を行う ⚫ この構造になんか見覚えがある方 ◦ 電子アートとビジュアルデザインのためのプログラミング言語 ・Processingと似てる。 ◦ そもそもArduino(アルドゥイーノ)IDE自体がProcessingの エディタに影響をうけてる
©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル2: LEDを光らせる
⚫ サンプル3: ボタンを使う ⚫ サンプル4: 音を鳴らす ◦ wavファイル、mp3ファイルの再生が可能 ◦ 無限ブッダマシン的に延々とお経を鳴らすとかも可能
©Project PLATEAU / MLIT Japan M5Stackの開発環境
©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル5: WiFiにつなぐ
◦ WiFiはいくつかAPを登録しておけば、一番電波強度が強いAP を使う ◦ スマホみたく、その場に存在するAPを動的に選択することがで きない。 ◦ プログラムのコードにAP情報を埋め込んでおく必要がある。 ▪ せめて設定ファイル編集で適用できないものか ◦ ネットに接続すれば、様々な通信プロトコルを扱える ▪ HTTP, TCP, UDP etc…
©Project PLATEAU / MLIT Japan M5Stackの開発環境 その他のサンプル: ⚫ サンプル6: MQTTサーバ
(ブローカー)と情報の送受 信を行う ◦ M5Stackはメッセージ を待ち続けたり(Sub)、 定期的にメッセージを送 ること(Pub)もできる ◦ 複数のM5Stackに同時 にメッセージも送れる
©Project PLATEAU / MLIT Japan M5Stackの開発環境 M5Core2を動かす。 MQTTサーバを動かしてないので メッセージ送信は失敗してる。 MQTTサーバのmosquittoを動か
す。 M5Core2からのメッセージを受信 してる。
©Project PLATEAU / MLIT Japan M5Stackの開発環境 ここでM5Core2からのメッセージ を確認するため、mosquitto_sub を動かしてトピックを指定する。 M5Core2からの送ってるメッセー
ジを確認できる。 M5Core2のプログラムは他の publisherからのメッセージも受け られる。 なので、mosquitto_pubプログラ ムを起動。メッセージを送ってみる。
©Project PLATEAU / MLIT Japan mosquitto_pubプログラムから 送ってるメッセージをM5Core2で 受け取れてることを確認。 これらができることがわかると、活 用分野が広がりますね。
©OpenStreetMap contributors 03 M5Stackで 何 をしよう か?
©Project PLATEAU / MLIT Japan M5Stackで何をしようか? アイデア:その1 ⚫ 機器単体でネットワーク対応しているため、IoT的な機器を用いるアイデアはおおむね実 現可能と思われる。
⚫ 例えば... ◦ BLE通信で値を取得できる温度計(Switchbot)から定期的に温度情報を受信。 ▪ →その後、なんらかのAPIを通じて、温度をGoogle SpreadSheetに記録し続ける ◦ 人感センサーと組み合わせる。 ▪ 誰かが部屋に入退室した時間を(なるべく)自動化する ◦ 備品の在庫管理 ▪ 備品を使う度に、付近のM5Stackのボタンを押す。 • M5Stackに関連する在庫の数量を減らすことができる ▪ 定期的に最新の在庫数を管理するシートに送信・在庫数の同期を取ったり、リアルタイムに在庫数 を変動させる。
©Project PLATEAU / MLIT Japan M5Stackで何をしようか? アイデア:その2 ⚫ その他いろいろ ◦
対応するセンサーを繋いでみると可能性さらに広がりそう。
©OpenStreetMap contributors 04 まとめ・質疑応答
© 地理院地図 全国最新写真(シームレス) •M5Stackは、IoTデバイスの開発に適したマイコ ンボード •センサー等の拡張モジュールも豊富。低価格 •PCで開発。ネット接続も簡単。AWS IoT等と連携 可能 まとめ・質疑応答