IoT時代における
デバイスのファームウェアとクラウドの
いい関係
JAWS DAYS 2018 / IoTトラック
Mar. 10, 2018 / TOC五反田メッセ
株式会社ソラコム
テクノロジー・エバンジェリスト
松下 享平
自己紹介
株式会社ソラコム / テクノロジー・エバンジェリスト
松下 享平 (まつした こうへい) “max”
• 静岡県民 🗻
• 前職: 東証二部ハードウェア・メーカーで
IoT事業のコーディネート
• 好きなソラコムサービス
• SORACOM Air メタデータサービス
• SORACOM Funnel
• soracom-cli
• Facebook, Twitter: ma2shita
NEW!!!
クラウドネットワーク
センサー/デバイス
“モノ”
モノやコトをデジタル化する技術
お客様事例:AGC旭硝子様
グローバルで製造現場を
見える化。作業のデータ収集
から分析までの一連の通信の
流れにSORACOM
作業者(スマートウォッチ、スマホ、ス
マートグラス)の作業データをリアルタ
イムに収集、蓄積、分析までを自動化し、
カイゼン活動に活用。
(協力パートナー:シーイーシー様)
お客様事例:トーア紡コーポレーション様
工場のPLCから電力使用量を
取得しクラウドへ送信
工場内ダッシュボードとスマホで
見える化
現場主導の省エネ対策を実現
工場の電力使用量を
オンデマンドで見える化
お客様事例: チカク様
スマホで撮った
子どもの写真・動画を
実家のテレビへ配信
お年寄りをターゲット。テレビにつなぐだけ。
難しい通信設定は不要で不具合時も電源
の入れなおし。
お客様事例: ダイドードリンコ株式会社様
SORACOM Funnelを活用し
安全かつ容易にデータを送信
毎日、明日が楽しみになる。
未来型自販機!
IoTの基本要素とネットワークの課題
近距離
無線通信
スマートフォン等
接続の方法
人向け通信プラン
通信の管理、セキュリティ
中・長距離
無線通信
2015年9月30日発表
1日10円〜 1回線~
モノ向け通信サービス
SORACOM Air for セルラー
IoT向け通信プラットフォーム SORACOM
近距離
無線通信
スマートフォン等
便利なモバイル(3G/LTE)通信
1日10円、1回線からのIoT向け
回線管理やセキュリティも
中・長距離
無線通信
Raspberry Pi 等
モデム付きマイコン等
for LoRaWAN
1デバイス~
LoRaWAN通信サービス
IoT/M2M向け無線データ通信サービス
SORACOM Air
for Sigfox
1デバイス~ 1回線~
Sigfox通信サービス
for セルラー
1日10円〜 1回線~
セルラー(3G/LTE)通信サービス
Japan / Global
クラウドネットワーク
センサー/デバイス
“モノ”
USB
UART (シリアル)
SD等
センサー/デバイス
“モノ”
接点
《センサー素子》
MCU
《マイコン》
I/O IF
マイコン上で動くソフトウェア
《ファームウェア》
#define SENSOR_PIN 13
void setup () {
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
int btn = digitalRead(SENSOR_PIN);
if (btn) {
dash_button();
}
}
• 低級言語で記述
• 書き換えには特殊な操作が必要
• デバッグ I/F
• DFU モード
USB
UART (シリアル)
SD等
接点
《センサー素子》
MCU
《マイコン》
I/O IF
一般的なファームウェアの機能
• センサー素子の制御やI/O制御
• センサー素子から取得したデータの処理
• 外部機器とのI/O IF制御
マイコン上で動くソフトウェア
《ファームウェア》
USB
UART (シリアル)
SD等
接点
《センサー素子》
MCU
《マイコン》
I/O IF
IoTで求められるファームウェアの役割
• センサー素子の制御やI/O制御
• センサー素子から取得したデータの処理
• 外部機器とのI/O IF制御
Wi-Fi, BT,
セルラー, LPWA等
《無線モデム》
• 無線モデム制御
• クラウド通信処理
• バッファリング、再送処理
• プロトコル処理、暗号化
• 接続先や認証情報の保管・読出
クラウド
• 低級言語で記述
• 書き換えには特殊な操作が必要
• デバッグ I/F
• DFU モード
ファームウェアの課題
• 要件は走りながら
決めたい
• 出荷後も機能向上を
行いたい
• 開発言語に起因する
生産性の課題
• ファームウェア更新の
特殊性の課題
ファームウェアの課題
• 開発言語に起因する
生産性の課題
• ファームウェア更新の
特殊性の課題
生産性の高い言語で開発し、
バンバン書き換えができないか?
そもそも書き換えが不要なくらい
シンプルにできないか?
ファームウェアの課題
• 開発言語に起因する
生産性の課題
• ファームウェア更新の
特殊性の課題
生産性の高い言語で開発し、
バンバン書き換えができないか?
そもそも書き換えが不要なくらい
シンプルにできないか?
USB
UART (シリアル)
SD等
接点
《センサー素子》
MCU
《マイコン》
I/O IF
なぜ「あのボタン」は良いのか?
• センサー素子の制御やI/O制御
• センサー素子から取得したデータの処理
• 外部機器とのI/O IF制御
Wi-Fi, BT,
セルラー, LPWA等
《無線モデム》
• 無線モデム制御
• クラウド通信処理
• バッファリング、再送処理
• プロトコル処理、暗号化
• 接続先や認証情報の保管・読出
クラウド
クラウドに「処理を委譲」
ファームウェアの実装を小さく・シンプルに
エッジコンピューティングに関する勘違いと
IoT時代におけるファームウェアの理想形
デバイス内部における高度な処
理のこと ☜ これは勘違い
単体のデバイスがクラウドのコ
ンピューティングリソースに勝て
る理由がない
本当はクラウドで処理したいんだ
けど、ネットワークとか応答速度
という理由から
泣く泣くデバイス内部で行う処
理のこと
センサー素子や通信モデムとの I/O 処理に特化させて
書き換えが不要なくらいにシンプル化
処理はクラウド
IoT時代におけるファームウェアの理想形
【再掲】
ネットワークとか応答速度という理由から
泣く泣くデバイス内部で行う
ファームウェアの課題
• 開発言語に起因する
生産性の課題
• ファームウェア更新の
特殊性の課題
生産性の高い言語で開発し、
バンバン書き換えができないか?
そもそも書き換えが不要なくらい
シンプルにできないか?
AWS Greengrass 解説 (デバイス屋視点)
クラウド上で作った python※ な AWS Lambda (以下 ローカル
Lambda) を GGC 実行中のマシンに転送してくれる
転送されたローカル Lambda を実行できる
• AWS IoT Core※ に対して MQTT Subscribe を行い、
そのトピックに対応したローカル Lambda を起動してくれる
「オンデマンド関数」
• GGC 起動後からずーっと起動し続けてくれる
「存続期間が長く無制限に稼働する関数」 NEW!!
• ローカルリソース (GGC 実行中のマシンのリソース e.g. /dev/ttyS0) を
扱える ネ申Update !!
生産性の高い言語で
バンバン更新できる仕組み
https://qiita.com/ma2shita/items/b3435e5e9306c6b44de8
実は import greengrasssdk が無くてもいいのです!
組込みでよくある loop() 実装ができる!
「存続期間が長く無制限に稼働する関数」
をOTAで更新するDEMO
DEMO: 構成
AWS Greengrass Core
On Ubuntu
In VirtualBox
Management
Console
新しい AWS Lambda 関数
更新後 Version
カウントを Publish する
AWS IoT Core
log 現在の Version
カウントをログする
ローカル Lambda 関数からのリソースアクセス
1 import greengrasssdk
2 client = greengrasssdk.client('iot-data’)
3 from threading import Timer
4 import logging
5 import serial ## $ pip install pyserial -t .
6
7 def loop():
8 ser = serial.Serial("/dev/ttyS0", 9600)
9 line = ser.readline()
10 client.publish(topic='foo/data', payload='serial data: {}'.format(line))
11 Timer(0, loop).start()
12
13 loop()
14
15 def lambda_handler(event, context):
16 return
このコードがローカル Lambda で動く!
もう AWS Greengrass Core があれば
怖くない … ?
https://aws.amazon.com/jp/blogs/news/aws-greengrass-ubiquitous-real-world-computing/
そうじゃない世界もある
STMicroelectronics
B-L475E-IOT01A
Arm® Cortex®-M4 core 80MHz
1 MBFlash & 128 KB SRAM
Welcome to Embedded World !!
この、限られたリソースへようこそ!!
Real Time OS
https://www.slideshare.net/kuroneko_ko2a/amazon-freertos/21
アーキテクトとして知っておくと良い事
ぶっちゃけ、生産性は高く無い
• FreeRTOS Hello World で ggr ってみてください
• それでも生の FreeRTOS を使うより、超いろいろ揃ってる!
https://www.slideshare.net/AmazonWebServices/new-launch-aws-greengrass-and-amazon-freertos-connectivity-and-security-at-the-edge-iot403-reinvent-2017/15
Amazon FreeRTOS 単体でも AWS IoT Core と連携は可能
• もちろんネットワーク的近隣に GGC が動いているマシンがあるのも良い
Amazon FreeRTOS な
デバイス AWS GGC な
デバイス
AWS IoT Core
アーキテクトとして知っておくと良い事
― Amazon FreeRTOS を使わざるを得ない状況
動作環境の制限が強い場合
• 商品形状、消費電力、耐環境性、供給性
応答時間に縛られた性能を要求される場合
• まさに RTOS の目的そのもの
• 開発言語に起因する
生産性の課題
• ファームウェア更新の
特殊性の課題
Amazon FreeRTOS が解決するもの
• 開発言語に起因する
生産性の課題 → しょうがない
• ファームウェア更新の
特殊性の課題 → OTA !!
※OTA は2018年3月段階でβです
Amazon FreeRTOS への道
/dev/* で操作できるなら
Raspberry Pi + GGC で開始
どうしても、と
言うのなら
Amazon FreeRTOS へ
正直
人類には早すぎる
我々は、まず GGC を使おう
Python※ コードを
配信する仕組みとしてのみ
使っても便利すぎる GGC
Raspberry Pi が無いと
GGC をトライできない?
https://qiita.com/ma2shita/items/22b56c6b6f7d11758880
シリアルポートなデバイスは?
https://qiita.com/ma2shita/items/763a911de4c0432d3479
Amazon FreeRTOS までの
要求では無いけど
組込みで AWS サービスを
使いたい!
IoT通信プラットフォーム SORACOM
SORACOMのグローバルなインフラ
欧米や日本も含めたアジア多くの国と地域で利用可能
IoT向けデータ通信
SORACOM Air
Cellular (2G, 3G, LTE) / LPWA (LoRaWAN, Sigfox)
データ通信
インターフェース
ライブラリ & SDKs
CLI, Ruby, Swift
Web インターフェース
User Console
API
Web API, Sandbox
ネットワーク
アプリケーション
データ転送支援
SORACOM
Beam
クラウドアダプタ
SORACOM
Funnel
データ収集・蓄積
SORACOM
Harvest
プライベート接続
SORACOM
Canal
デバイスLAN
SORACOM
Gate
専用線接続
SORACOM
Direct
仮想専用線
SORACOM
Door
認証サービス
SORACOM
Endorse
デバイス管理
SORACOM
Inventory
透過型
トラフィック処理
SORACOM
Junction
セキュア&クラウドネイティブな
プロトコル
SORACOM Beam / Funnel による
ソフトウェア実装の工数削減
モノ
生の
HTTP / TCP / UDP
認証情報
センサー制御、エッジ処理
バッファリング、エラー処理
バッファリング、エラー処理
暗号化・プロトコル実装
認証処理(SDK)
SORACOM Beam や Funnelで
クラウドを活用
デバイス開発を最小限に
SORACOM Beam
SORACOM Funnel
AWS IoT Core
Amazon Kinesis
Data Streams
Amazon Kinesis
Firehose
Amazon MQ
アイコン
はよ!
エンジニア向け 1Day IoT ラーニングイベント
SORACOM Tech Camp 2018
4/26 (木)
《東京》大崎ブライトコアホール (抽選制/無料)
https://techcamp2018.soracom.jp/
クラウドネットワーク
センサー/デバイス
“モノ”
モノやコトをデジタル化
世界中のヒトとモノをつなげ
共鳴する社会へ

JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係