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
860
M5Stackを用いたIoT開発
IoTに便利という評判のM5Stackを買ってもらったので、どんなことができるかいろいろ試してみた。
MIERUNE
PRO
February 28, 2024
Tweet
Share
More Decks by MIERUNE
See All by MIERUNE
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
56
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
150
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
140
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
130
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
170
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
130
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
880
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
660
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
750
Other Decks in Programming
See All in Programming
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
130
MCP with Cloudflare Workers
yusukebe
2
220
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
750
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
2
230
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
100
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
5
900
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
470
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Agile that works and the tools we love
rasmusluckow
328
21k
Why Our Code Smells
bkeepers
PRO
335
57k
For a Future-Friendly Web
brad_frost
175
9.4k
Making Projects Easy
brettharned
116
5.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
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等と連携 可能 まとめ・質疑応答