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

Preview:

Citation preview

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アプリケーションの構築例

Recommended