こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
Weptech ゲートウェイとIBM IoT Foundationの組み合わせで加速するTI SensorTagの開発
Weptech 6LoWPAN IoT ゲートウェイは、EthernetとARM Cortex-M3マイクロコントローラを搭載し、2.4GHzとサブGHzの無線通信を提供します。また、Contikiのボーダールータファームウェアのサポートにより、SensorTagsの既存のIPネットワークへの統合が可能です。
第2世代のTI SensorTagは、Contikiがサポートされ、MQTTブローカにセンサデータをパブリッシュするいくつかのサンプルアプリケーションが提供されています。 IBM IoT Foundation QuickstartブローカのIPアドレスを設定すれば、すぐにリアルタイムにセンサデータをグラフ化することができます。
ゲートウェイハードウェアとIBMのクラウドサービスを組み合わせることで、最新の標準規格に基づいたセンサネットワークソリューションを素早く検証することが可能になります。
ネットワークアーキテクチャ
IEEE802.15.4ワイヤレスネットワークリンク上の6LoWPANを利用した1つ以上のSensorTagsと、IPv6からIPv4 (NAT64)へのアドレス変換を行うエッジ/ボーダールータとの通信におけるネットワークアーキテクチャは、シンプルなものになっています。これにより、SensorTagデバイスやほかの6LoWPANデバイスが、ローカルLANやインターネットを通して、IPv4ホストと接続することができます。
6LoWPAN IoT Gatewayのセットアップ
私が受け取ったゲートウェイデバイスのパッケージには、部品の実装されたプリント基板とピンヘッダ、机の上や壁などに取り付けられるケース、ゴム製の足、書き込み・電源供給用のUSBケーブルが付属していました。
この記事を書いている時、ゲートウェイのファームフェアは、TI SensorTagのデモと一緒には、Contiki GitHubリポジトリに用意されていませんでした。ただ、パッケージの中のカードにWeptechの連絡先があり、最新のファームウェアを入手できました。
With the gate
PythonのインストールされたコンピュータのUSBポートにゲートウェイを接続します。ゲートウェイのCC2538上のブートローダと通信するスクリプトを実行させる前に、新しいファームウェアをフラッシュメモリにプログラムします。これは、ボードをリセットし、リセットボタンの隣にあるボタンを押すだけで実行できました。
ゲートウェイには、構成を管理するためのインタフェースが備えられていません。その代り、DHCPを通してIPv4アドレスを取得します。ネットワークに接続し、電源を供給するだけなのです。
SensorTagsをプログラムする
まずはじめに、適切なARMツールチェインがインストールされ、Contikiのソースコードがあることを確認しておく必要があります。ソフトウェア環境の構築の仕方については、TI Wikiをご参照ください。examples/cc26xx/cc26xx-web-demoというディレクトリにMQTTのサンプルプログラムが見つかるはずです。
この記事を書いている時には、ゲートウェイのファームウェアはIPv6ブリッジへの対応や、有線ネットワークからSensorTagへのアクセスする他の手段への対応がされていませんでした。そのため、project-conf.hファイルで、6LBRクライアントとともにCoAPサーバとネットワークUARTを無効化しました。
/* Enable/Disable Components of this Demo */ #define CC26XX_WEB_DEMO_CONF_MQTT_CLIENT 1 #define CC26XX_WEB_DEMO_CONF_6LBR_CLIENT 0 #define CC26XX_WEB_DEMO_CONF_COAP_SERVER 0 #define CC26XX_WEB_DEMO_CONF_NET_UART 0
MQTTブローカのIPアドレスは、mqtt-client.cで設定されます。
上の図でコメントアウトしたアドレスは、10.0.10.21(ドット区切りの4つ組から16進数0A000A15に変換されている)という、ローカルネットワークに存在しRaspberry Pi上で動作しているMosquittoのインスタンスのものであるのに対し、コメントアウトしていないのはIBMのクラウドサービスのものです。
また、ゲートウェイとともに動作させる前に、プリフィックスを64:ff9b::/96から上にあるように変更する必要がありました。(2つの"FF"の前の10バイトの"00")
ここで、次のようにしてソースコードをビルドします。
make BOARD=sensortag/cc2650
ボードの種類を指定することを忘れないようにしてください。もしもSensorTagに書き込み終わった際に何も起こらない場合、間違ったターゲット用にファームウェアをビルドした可能性が高いです。
SensorTagにアプリケーションを搭載する最も良い方法は、Debugger DevPackを使うことです。このデバイスは、無料でダウンロードできるSmartRF Flash Programmer (Windowsのみ) かCCS Uniflash (WindowsおよびLinuxバージョンあり)とともに使うことができます。
UniflashのインストールされたLinuxを使って、sudoでGUIを立ち上げたため、すべてのアップデートを確認・インストールすることができました。
Debugger DevPackを使って、SensorTagに書き込むために次のコマンドを使用しました:
$ sudo /opt/ti/uniflash_3.4/uniflash.sh -ccxml ~andrew/SW/Contiki/CC2650F128.ccxml -operation Erase -program cc26xx-web-demo.elf
ccxmlファイルには、ターゲットファイルとデバッグプローブの情報が書かれています。TIの公式IDEであるCode Composer Studio(無料)を使用し、サンプルプロジェクトをインポート、Debugger DevPack (XDS110デバッグプローブを選択)を使うため、プロジェクトの設定を変え、ファイルを生成しました。
ファイルには以下の内容が含まれています:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configurations XML_version="1.2" id="configurations_0">
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="http://www.rs-online.com/designspark/electronicsconnections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
<instance XML_version="1.2" href="http://www.rs-online.com/designspark/electronicsdrivers/tixds510icepick_c.xml" id="drivers" xml="tixds510icepick_c.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="http://www.rs-online.com/designspark/electronicsdrivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="http://www.rs-online.com/designspark/electronicsdrivers/tixds510cortexM.xml" id="drivers" xml="tixds510cortexM.xml" xmlpath="drivers"/>
<platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="CC2650F128_0" href="http://www.rs-online.com/designspark/electronicsdevices/cc2650f128.xml" id="CC2650F128_0" xml="cc2650f128.xml" xmlpath="devices"/>
</platform>
</connection>
</configuration>
</configurations>
ただ、ソフトウェアやプローブが将来アップレートされ、上で示しているのとは異なるCCXML構成を使うことができるようになるかもしれません。
SensorTagのプログラムに使用したDebugger DevPack を取り外すと、Tag上の緑色のLEDが点灯するようになります。次に、ゲートウェイに接続できたかどうか見ていきます。
Device-IDを決める
Weptech IoTゲートウェイ上のシンプルなウェブインターフェースにより、SensorTagのIPv6をすぐに確認することができます。IBM Quickstartクラウドサービスが必要とするDevice-IDは、アドレスの最後の3バイトの前に00124bをつけることで作られます。たとえば、この場合、Tagのアドレスは次のようなものです。
fe80::212::4b00:78f:c203
このとき、Device-IDは次のようになります: 00124b8fc203.
2つ以上のSensorTagを使用する場合、単純に1つずつ起動して、新しいIPv6アドレスを毎回記録するようにします。
IBM Internet of Things Foundation Quickstart
SensorTagが6LoWPANゲートウェイに接続され、Device-IDが設定されていれば、Quickstart webページに入り、リアルタイムのセンサの値、稼働時間、ワイヤレスリンクの信号強度にアクセスすることができるようになります。
データポイントを選択することで、前の図にあるようなグラフを表示できます。
IBM Bluemix
このようにQuickstartにより、ちいさなSensorTagからのデータのホストへのアクセスできるようになります。
しかし、これはほんの入門にすぎず、ここからCloud FoundryベースでJava、Node.js、Go、PHP、PythonなどをサポートするIBM Bluemix platform-as-a-service (PaaS)で操作するアプリケーションに組み込むことが可能です。
Bluemixカタログには、コンテナイメージ、幅広いサービスの選択、そしてIoTのための接続可視化ツールNode-REDが含まれます。さまざまな異なる種類のソースからのデータを組み合わせ、処理を行い、幅広い出力の選択を提供することで、IoTアプリケーションのラピッドプロトタイピングを可能にします。
新しいNode-REDのインスタンスを作成するのには数分しかかからず、一度動作すれば、カットアンドペーストするだけで自動的に「フロー」がQuickstartからNode-REDへ生成され、デバックノードを通して、入力したリアルタイムのSensorTagのデータを出力することができます。フローは、独自のロジックや出力などを実装するために簡単に編集することが出来ます。
まとめ
Weptech IoTゲートウェイは、6LoWPANワイヤレスネットワークとイーサネットをブリッジする素晴らしいソリューションで、これは、Linuxの動作するBeagleBoneとエッジルータのソフトウェア、USB接続のIEEE802.15.4無線ドングルを使うソリューションから大きな進歩です。現時点では、IPv6のブリッジなど、ゲートウェイがサポートしていない機能がいくつかあります。
ARMツールチェインやフラッシュプログラミングツールのダウンロードとセットアップはSensorTag上のContikiで何をするにしろ必要です。これには、少し時間がかかりますが1時間以上かかるものではない上に、一度セットアップするだけで良いので楽です。SensorTag独自のIDは(MACアドレスから与えられる)IPv6に基づいているので、これは1つのバイナリファームウェアイメージで多くのTagに使うことができ、個別に設定する必要がありません。
IBMのクラウドツールは、SensorTagの開発者にとってとても迅速で素晴らしいリソースです。Bluemixは、有料ですが、30日の無料使用期間があり、またそのあとも月額の割引があります。さらにMQTTとNode-REDをIBMクラウドで使うことで、いつでもインスタンスの使用を選択することができます。