mbed lpc1768とbluemixを用いたiotプログラミング入門

59
mbed LPC1768 と Bluemix と ととと IoT ととととととととと S.Hanai 2015/4/7

Upload: shisei-hanai

Post on 27-Jul-2015

1.791 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: mbed LPC1768とBluemixを用いたIoTプログラミング入門

mbed LPC1768と Bluemixを用いた IoTプログラミング

入門

S.Hanai 2015/4/7

Page 2: mbed LPC1768とBluemixを用いたIoTプログラミング入門

おことわり

本資料の記載内容は、私が個人的に調べた内容であり、正式な日本 IBMのテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。

Page 3: mbed LPC1768とBluemixを用いたIoTプログラミング入門

概要

Page 4: mbed LPC1768とBluemixを用いたIoTプログラミング入門

献立

以下の構成で IoTプログラミングを入門する mbedのアプリケーションボード (Ethernet Starter Kit)を使用

IBM Internet of Things FoundationをMQTTのハブとして使用

アプリケーション構築環境として Bluemixを使用

Page 5: mbed LPC1768とBluemixを用いたIoTプログラミング入門

構成

IBM Internet of Things Foundation

mbed LPC1768

MQTT/json

Bluemix

アプリケーション

MQTT/json or https/REST(json)

デバイス管理、イベント照会

Page 6: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IoT用のクラウド・ベースのハブhttps://internetofthings.ibmcloud.com/

Bluemixもしくは、 IBM Marketplace経由で使用できる

アプリケーションからは、MQTT以外に普通に https/REST(json)でもアクセスできる

認証トークンを用いたセキュリティ 長いので以降 IOTFと省略

IBM Internet of Things Foundation

Page 7: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイスの準備

Page 8: mbed LPC1768とBluemixを用いたIoTプログラミング入門

ARMとの提携

Impact2014で ARMとの提携を発表http://developer.mbed.org/blog/entry/IBM-teams-up-with-mbed-for-IoT-kit/

キットとして販売されるようだが、実際は hardware自体はmbedのアプリケーションボードが利用できる (今回の資料も、これを使用 )http://developer.mbed.org/cookbook/mbed-application-board

Page 9: mbed LPC1768とBluemixを用いたIoTプログラミング入門

ボードの入手

アプリケーションボード今回はスイッチ・サイエンスさんで購入https://www.switch-science.com/catalog/1276/

mbedアプリケーションボードは I/Oしか載っていないので、mbedも必要。今回は秋月電子さんで購入http://akizukidenshi.com/catalog/g/gM-03596/

Page 10: mbed LPC1768とBluemixを用いたIoTプログラミング入門

ボードの接続

向きに注意 !両方の基板に VOUT/GND/P20/P21のシルク印刷があるので合わせる

Page 11: mbed LPC1768とBluemixを用いたIoTプログラミング入門

mbedの登録

mbedはWebブラウザを使った IDEで開発できるが、これには登録が必要

以下のような参考ページを見て登録して、 LED点灯のような簡単な動作確認をしておくhttp://developer.mbed.org/users/nxpfan/notebook/lets_get_started_jp/

Page 12: mbed LPC1768とBluemixを用いたIoTプログラミング入門

QuickStartを用いた動作確認

Page 13: mbed LPC1768とBluemixを用いたIoTプログラミング入門

QuickStart

IOTFには QuickStartという仕組みがあり、これを使うと手早くデバイスの動作確認ができる

Page 14: mbed LPC1768とBluemixを用いたIoTプログラミング入門

mbedの接続

Ethernetを DHCPがサポートされた LANに接続

USBを PCに接続アプリケーションボード側ではなくmbed上のUSB

USBコネクタのそばの青色 LEDが点灯すれば接続は ok

Page 15: mbed LPC1768とBluemixを用いたIoTプログラミング入門

mbedの認識

mbedは USBメモリーとして認識されるWindowsの場合はデバイスドライバが必要とのこと (https://mbed.org/handbook/Windows-serial-configuration)

アプリケーションのデプロイは、この USBメモリーにアプリケーションをコピーするだけで行える

Page 16: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IBMIoTClientEthernetExampleのビルド

以下のページに移動http://developer.mbed.org/teams/IBM_IoT/code/IBMIoTClientEthernetExample/

右上にある Import this programをクリック

mbedの登録が済ませてあれば、ブラウザ上の開発環境が立ち上がるので importを完了する

Page 17: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デプロイ

Compileをクリックすると、コンパイルが行われてブラウザのダウンロードで .binファイル(IBMIoTClientEthernetExample_LPC1768.bin)が落ちてくる。

この binファイルを、 USBメモリとして認識されているmbedにコピーするなおファイルのコピー中は、 USBコネクタ横の青色LEDが細かく点滅するので、この点滅が終わるまで待つ

コピーが終わったら、mbed基板中央のリセットを押す

IDEの右上のターゲットがLPC1768になっていることを確認しておく

Page 18: mbed LPC1768とBluemixを用いたIoTプログラミング入門

起動確認

うまくいくと LCDに表示が行われる

すぐ右にある Joystickを下に倒していくと、他の表示が見える

情報提供ページ

Page 19: mbed LPC1768とBluemixを用いたIoTプログラミング入門

起動確認

デバイス ID重要。控えておく。また他の人に見られないように。

Ethernetの接続状況うまく DHCPからアドレスが取得できれば、 Connectedとなる

Page 20: mbed LPC1768とBluemixを用いたIoTプログラミング入門

動作確認

ガイドのページを開く https://developer.ibm.com/iot/recipes/arm-mbed/

Visualizeのところにデバイス idを入力する

Page 21: mbed LPC1768とBluemixを用いたIoTプログラミング入門

QuickStartモードでの動作確認

デモページが表示される

表示されているポテンションメータを動かしたり、本体を揺すって加速度センサーに情報を与えると、リアルタイムに情報が表示される

Page 22: mbed LPC1768とBluemixを用いたIoTプログラミング入門

Internet of Things Foundation(IOTF)への登録

Page 23: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFへの登録

現在は、 IBM Bluemixと、 IBM Cloud Marketplaceが選べるhttps://internetofthings.ibmcloud.com/dashboard/#/signup

現在のところ、 Bluemixであれば Free planというのがあるので開発、テスト用にはこちらを使うと良い

どちらを使っても、 IOTFにおける組織 (Organization)コードが変わるだけなので、プログラミング上は変わりない

Page 24: mbed LPC1768とBluemixを用いたIoTプログラミング入門

Bluemixを用いた IOTFへの登録

Page 25: mbed LPC1768とBluemixを用いたIoTプログラミング入門

Bluemixからの登録

Internet of Things Foundation Starterをカタログから選ぶ

好きな名前を付けて、作成をクリック

Page 26: mbed LPC1768とBluemixを用いたIoTプログラミング入門

モノのインターネットを追加

モノのインターネットを追加

アプリケーションとして前ページで作った Internet of

Things Foundation Starterを設定

Page 27: mbed LPC1768とBluemixを用いたIoTプログラミング入門

設定

ダッシュボード上のモノのインターネットをクリック

Connect your devicesを選択

Page 28: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFダッシュボード

IOTFダッシュボードが表示されるので Devicesを選ぶ

Page 29: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイスを IOTFに追加

Add Devicesをクリック

Page 30: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス設定

好きな名前を付ける (組織内で一意であれば良い )

mbedの LCDに表示されたdevice IDを入力

Page 31: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス情報の表示

この部分をメモしておく

Page 32: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTF情報のデバイスへの設定

mbedの IDEからmain.cppを開く

ここにメモしておいた値を指定する ( 次ページに設定例 )。

Page 33: mbed LPC1768とBluemixを用いたIoTプログラミング入門

設定例

// Configuration values needed to connect to IBM IoT Cloud#define ORG "quickstart" // org=の値#define ID "" // id=の値#define AUTH_TOKEN "" // auth-token=の値#define TYPE DEFAULT_TYPE_NAME // type=の値

Page 34: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デプロイ

設定を変更したら、 Compileをしてダウンロードされた binファイルをmbedにコピーして resetボタンを押す

しばらくすると、 IOTFのダッシュボード上のインジケータが緑になりデバイスからイベントが上がってきて

いることが分かる

Page 35: mbed LPC1768とBluemixを用いたIoTプログラミング入門

Node-REDでの動作確認

Page 36: mbed LPC1768とBluemixを用いたIoTプログラミング入門

flow editor

ボイラープレートで作成しておいた Internet of Things Foundation Starterをダッシュボードで選び、経路の部分の URLを開く

Page 37: mbed LPC1768とBluemixを用いたIoTプログラミング入門

flow editor

Go to your Node-RED flow editorをクリック デフォルトでフローができているので、 IBM IoT App

Inをダブルクリックする

Page 38: mbed LPC1768とBluemixを用いたIoTプログラミング入門

処理イベントの選択

動作確認のため全てを受け取るようにする

設定が終わったら右上の Deployボタンをクリックする

Page 39: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイスイベントの確認

デバイスの電源が入っていればdebugペインにイベントが上がってくる

これは一番右にある緑の箱(debug)が出力している

Page 40: mbed LPC1768とBluemixを用いたIoTプログラミング入門

条件を変更してみる

中央付近にある switchをダブルクリック。これは条件によってフローを変える部品

しきい値を 40から 30に変更 (現在 debugペインに報告されている温度より小さくする )

Page 41: mbed LPC1768とBluemixを用いたIoTプログラミング入門

条件を変更してみる

表示が criticalに変わったことを確認

これは switchの結果がdanger側に変わったことが原因

Page 42: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IBM Cloud Marketplaceを用いたIOTFへの登録

Page 43: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFへの登録

IBM Cloud Marketplaceを利用しても IOTFへの登録ができる。前章の Bluemixからの登録と、どちらを用いても良い

https://www.ibm.com/marketplace/cloud/buy-internet-of-things-foundation/us/en-us にアクセスする

右上の 30 day free trialをクリック

Page 44: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFへの登録

IBM IDを持っている場合は、 IBM ID登録のメールアドレスで開始する

メールが届くので、中のリンクをクリックして登録を完了する。

Page 45: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFダッシュボード

再び IOTFのダッシュボードで確認すると、組織が 2つに増えていることが分かる (Bluemixも IOTFに登録している場合 )

Bluemixから登録した分

IBM Cloud Marketplaceから登録

した分

デバイスの登録等の操作は Bluemixの時と同じ

Page 46: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFを用いたアプリケーション開発

Page 47: mbed LPC1768とBluemixを用いたIoTプログラミング入門

IOTFを用いたアプリケーションの作成

デバイス制御 APIデバイスの制御を行う

履歴イベント APIデバイスのイベントを照会する

Page 48: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

Page 49: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

以下のデバイス制御が可能 (https://docs.internetofthings.ibmcloud.com/api/device_management.html)

組織の照会 デバイスリスト デバイスタイプごとのリスト デバイスタイプのリスト デバイスの登録 デバイスの更新 登録デバイスの照会 デバイスの削除

Page 50: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

httpsでベーシック認証を行う ユーザ、パスワードは、 API Keyと Auth Tokenが必要になるので取得しておく

(1) API Keysを選び

(2) New API Keyを選ぶ

Page 51: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

この 2つをメモする。特に Auth Tokenは、ここでメモし忘れると

後から照会できない

Page 52: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

httpsなので普通にブラウザを用いて呼び出しできる

例:デバイスの一覧

List DevicesGet a list of all devices in an organization.

RequestGET internetofthings.ibmcloud.com/api/v0001/organizations/org_id/devices ブラウザで、この URL

にアクセスすれば良い。この時 org_idを自分の組織 idに置き替え

Page 53: mbed LPC1768とBluemixを用いたIoTプログラミング入門

デバイス制御 API

デバイスの一覧が JSONで返ってくる(現在は、ユーザ、パスワードは要求されなかっ

た )

Page 54: mbed LPC1768とBluemixを用いたIoTプログラミング入門

履歴イベント API

Page 55: mbed LPC1768とBluemixを用いたIoTプログラミング入門

履歴イベント API

デバイスからのイベントを照会するための API。認証はデバイス制御 APIと同じ。以下が可能。

全てのイベントの表示 パラメータの照会 デバイスタイプによるイベント照会 あるデバイスのイベント表示

MQTTだけでなく httpsでの照会も可能httpsはポーリングになるのでリアルタイムのイベント把握には向いていないが、数分ごとの把握で良い場合には十分

Page 56: mbed LPC1768とBluemixを用いたIoTプログラミング入門

履歴イベント API

例:全てのイベントの表示

View all eventsView events across all devices registered to the organization

RequestGET internetofthings.ibmcloud.com/api/v0001/historian/org_id

ブラウザで、この URLにアクセスすれば良い。この時 org_idを自分の組織 idに置き替え

Page 57: mbed LPC1768とBluemixを用いたIoTプログラミング入門

履歴イベント API

なお、 Cookieを用いることで、表示開始位置を変えることが可能 ( 詳細は、仕様書を参照

https://docs.internetofthings.ibmcloud.com/api/historical_events.html)

Page 58: mbed LPC1768とBluemixを用いたIoTプログラミング入門

まとめ

ARM mbedのアプリケーションボードとIBMIoTClientEthernetExampleを用いると、簡単にIoTアプリケーションを構築できる

QuickStartを用いると認証などをスキップして簡単に動作確認が行える

IBM Internet of Things Foundationは、クラウドベースの IoT用のハブであり、現在は Bluemixか、 IBM Cloud Marketplaceから登録できる

IBM Internet of Things Foundationの APIは、MQTTだけでなく httpsで可能なのでブラウザを用いて簡単に動作確認できる

Page 59: mbed LPC1768とBluemixを用いたIoTプログラミング入門

今後の予定

MQTTを用いた IBM Internet of Things Foundationへのアクセス

もう少し実用的な IoTアプリケーションの構築例