Download - mbed LPC1768とBluemixを用いたIoTプログラミング入門
mbed LPC1768と Bluemixを用いた IoTプログラミング
入門
S.Hanai 2015/4/7
おことわり
本資料の記載内容は、私が個人的に調べた内容であり、正式な日本 IBMのテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。
概要
献立
以下の構成で IoTプログラミングを入門する mbedのアプリケーションボード (Ethernet Starter Kit)を使用
IBM Internet of Things FoundationをMQTTのハブとして使用
アプリケーション構築環境として Bluemixを使用
構成
IBM Internet of Things Foundation
mbed LPC1768
MQTT/json
Bluemix
アプリケーション
MQTT/json or https/REST(json)
デバイス管理、イベント照会
IoT用のクラウド・ベースのハブhttps://internetofthings.ibmcloud.com/
Bluemixもしくは、 IBM Marketplace経由で使用できる
アプリケーションからは、MQTT以外に普通に https/REST(json)でもアクセスできる
認証トークンを用いたセキュリティ 長いので以降 IOTFと省略
IBM Internet of Things Foundation
デバイスの準備
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
ボードの入手
アプリケーションボード今回はスイッチ・サイエンスさんで購入https://www.switch-science.com/catalog/1276/
mbedアプリケーションボードは I/Oしか載っていないので、mbedも必要。今回は秋月電子さんで購入http://akizukidenshi.com/catalog/g/gM-03596/
ボードの接続
向きに注意 !両方の基板に VOUT/GND/P20/P21のシルク印刷があるので合わせる
mbedの登録
mbedはWebブラウザを使った IDEで開発できるが、これには登録が必要
以下のような参考ページを見て登録して、 LED点灯のような簡単な動作確認をしておくhttp://developer.mbed.org/users/nxpfan/notebook/lets_get_started_jp/
QuickStartを用いた動作確認
QuickStart
IOTFには QuickStartという仕組みがあり、これを使うと手早くデバイスの動作確認ができる
mbedの接続
Ethernetを DHCPがサポートされた LANに接続
USBを PCに接続アプリケーションボード側ではなくmbed上のUSB
USBコネクタのそばの青色 LEDが点灯すれば接続は ok
mbedの認識
mbedは USBメモリーとして認識されるWindowsの場合はデバイスドライバが必要とのこと (https://mbed.org/handbook/Windows-serial-configuration)
アプリケーションのデプロイは、この USBメモリーにアプリケーションをコピーするだけで行える
IBMIoTClientEthernetExampleのビルド
以下のページに移動http://developer.mbed.org/teams/IBM_IoT/code/IBMIoTClientEthernetExample/
右上にある Import this programをクリック
mbedの登録が済ませてあれば、ブラウザ上の開発環境が立ち上がるので importを完了する
デプロイ
Compileをクリックすると、コンパイルが行われてブラウザのダウンロードで .binファイル(IBMIoTClientEthernetExample_LPC1768.bin)が落ちてくる。
この binファイルを、 USBメモリとして認識されているmbedにコピーするなおファイルのコピー中は、 USBコネクタ横の青色LEDが細かく点滅するので、この点滅が終わるまで待つ
コピーが終わったら、mbed基板中央のリセットを押す
IDEの右上のターゲットがLPC1768になっていることを確認しておく
起動確認
うまくいくと LCDに表示が行われる
すぐ右にある Joystickを下に倒していくと、他の表示が見える
情報提供ページ
起動確認
デバイス ID重要。控えておく。また他の人に見られないように。
Ethernetの接続状況うまく DHCPからアドレスが取得できれば、 Connectedとなる
動作確認
ガイドのページを開く https://developer.ibm.com/iot/recipes/arm-mbed/
Visualizeのところにデバイス idを入力する
QuickStartモードでの動作確認
デモページが表示される
表示されているポテンションメータを動かしたり、本体を揺すって加速度センサーに情報を与えると、リアルタイムに情報が表示される
Internet of Things Foundation(IOTF)への登録
IOTFへの登録
現在は、 IBM Bluemixと、 IBM Cloud Marketplaceが選べるhttps://internetofthings.ibmcloud.com/dashboard/#/signup
現在のところ、 Bluemixであれば Free planというのがあるので開発、テスト用にはこちらを使うと良い
どちらを使っても、 IOTFにおける組織 (Organization)コードが変わるだけなので、プログラミング上は変わりない
Bluemixを用いた IOTFへの登録
Bluemixからの登録
Internet of Things Foundation Starterをカタログから選ぶ
好きな名前を付けて、作成をクリック
モノのインターネットを追加
モノのインターネットを追加
アプリケーションとして前ページで作った Internet of
Things Foundation Starterを設定
設定
ダッシュボード上のモノのインターネットをクリック
Connect your devicesを選択
IOTFダッシュボード
IOTFダッシュボードが表示されるので Devicesを選ぶ
デバイスを IOTFに追加
Add Devicesをクリック
デバイス設定
好きな名前を付ける (組織内で一意であれば良い )
mbedの LCDに表示されたdevice IDを入力
デバイス情報の表示
この部分をメモしておく
IOTF情報のデバイスへの設定
mbedの IDEからmain.cppを開く
ここにメモしておいた値を指定する ( 次ページに設定例 )。
設定例
// 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=の値
デプロイ
設定を変更したら、 Compileをしてダウンロードされた binファイルをmbedにコピーして resetボタンを押す
しばらくすると、 IOTFのダッシュボード上のインジケータが緑になりデバイスからイベントが上がってきて
いることが分かる
Node-REDでの動作確認
flow editor
ボイラープレートで作成しておいた Internet of Things Foundation Starterをダッシュボードで選び、経路の部分の URLを開く
flow editor
Go to your Node-RED flow editorをクリック デフォルトでフローができているので、 IBM IoT App
Inをダブルクリックする
処理イベントの選択
動作確認のため全てを受け取るようにする
設定が終わったら右上の Deployボタンをクリックする
デバイスイベントの確認
デバイスの電源が入っていればdebugペインにイベントが上がってくる
これは一番右にある緑の箱(debug)が出力している
条件を変更してみる
中央付近にある switchをダブルクリック。これは条件によってフローを変える部品
しきい値を 40から 30に変更 (現在 debugペインに報告されている温度より小さくする )
条件を変更してみる
表示が criticalに変わったことを確認
これは switchの結果がdanger側に変わったことが原因
IBM Cloud Marketplaceを用いたIOTFへの登録
IOTFへの登録
IBM Cloud Marketplaceを利用しても IOTFへの登録ができる。前章の Bluemixからの登録と、どちらを用いても良い
https://www.ibm.com/marketplace/cloud/buy-internet-of-things-foundation/us/en-us にアクセスする
右上の 30 day free trialをクリック
IOTFへの登録
IBM IDを持っている場合は、 IBM ID登録のメールアドレスで開始する
メールが届くので、中のリンクをクリックして登録を完了する。
IOTFダッシュボード
再び IOTFのダッシュボードで確認すると、組織が 2つに増えていることが分かる (Bluemixも IOTFに登録している場合 )
Bluemixから登録した分
IBM Cloud Marketplaceから登録
した分
デバイスの登録等の操作は Bluemixの時と同じ
IOTFを用いたアプリケーション開発
IOTFを用いたアプリケーションの作成
デバイス制御 APIデバイスの制御を行う
履歴イベント APIデバイスのイベントを照会する
デバイス制御 API
デバイス制御 API
以下のデバイス制御が可能 (https://docs.internetofthings.ibmcloud.com/api/device_management.html)
組織の照会 デバイスリスト デバイスタイプごとのリスト デバイスタイプのリスト デバイスの登録 デバイスの更新 登録デバイスの照会 デバイスの削除
デバイス制御 API
httpsでベーシック認証を行う ユーザ、パスワードは、 API Keyと Auth Tokenが必要になるので取得しておく
(1) API Keysを選び
(2) New API Keyを選ぶ
デバイス制御 API
この 2つをメモする。特に Auth Tokenは、ここでメモし忘れると
後から照会できない
デバイス制御 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に置き替え
る
デバイス制御 API
デバイスの一覧が JSONで返ってくる(現在は、ユーザ、パスワードは要求されなかっ
た )
履歴イベント API
履歴イベント API
デバイスからのイベントを照会するための API。認証はデバイス制御 APIと同じ。以下が可能。
全てのイベントの表示 パラメータの照会 デバイスタイプによるイベント照会 あるデバイスのイベント表示
MQTTだけでなく httpsでの照会も可能httpsはポーリングになるのでリアルタイムのイベント把握には向いていないが、数分ごとの把握で良い場合には十分
履歴イベント 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に置き替え
る
履歴イベント API
なお、 Cookieを用いることで、表示開始位置を変えることが可能 ( 詳細は、仕様書を参照
https://docs.internetofthings.ibmcloud.com/api/historical_events.html)
まとめ
ARM mbedのアプリケーションボードとIBMIoTClientEthernetExampleを用いると、簡単にIoTアプリケーションを構築できる
QuickStartを用いると認証などをスキップして簡単に動作確認が行える
IBM Internet of Things Foundationは、クラウドベースの IoT用のハブであり、現在は Bluemixか、 IBM Cloud Marketplaceから登録できる
IBM Internet of Things Foundationの APIは、MQTTだけでなく httpsで可能なのでブラウザを用いて簡単に動作確認できる
今後の予定
MQTTを用いた IBM Internet of Things Foundationへのアクセス
もう少し実用的な IoTアプリケーションの構築例