こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
TIのSensorTagにも使えるIoTのためのオープンソースオペレーティングシステム「コンチキ(Contiki)」
TI製の第2世代SensorTagにはあらゆる機能に活用できる10近くのセンサが詰め込まれている。中でもCC2650には、センサーのみならず、2.4GHzに対応したマルチスタンダードワイヤレスマイコンが心臓部に組み込まれており、それ単体だけでもIoTアプリケーションプロトタイピング用の強力なプラットフォームとして不足はない。そこでこの記事ではSensorTag上で組込みマイコン向けオープンソースOS Contikiを動作させてみようと思う。
低消費電力・マルチタスキング・6LoWPANのサポート
Cooja Contiki network simulation with 41 nodes. Source: wikimedia.org, CC BY-SA 3.0.
Contikiは、メモリ・電源・処理能力・通信帯域幅などのリソースが充分でないデバイス用のオペレーティングシステムだ。AtmelのAVRやARMに対応しており 、NXP LPC2103 (ARM)、MicrochipのdsPIC・PIC32、その他様々なマイコンで動作させることができる。もちろんCC2650を含むTI製のデバイスでも動作させることができる。
ContikiはIPv4やIPv6を始め、Rimeや軽量なカスタムプロトコルのための階層セットに対応しており、匿名通信からメッシュネットワークルートまで様々な形の無線ネットワークを、低消費電力で実現できるよう設計されている。
特にIPv6スタックには、今後普及が見込まれている6LoWPANのサポートが含まれている。6LoWPANはIEEE802.15.4無線ネットワークの拡張方式で、パケット損失は多いものの低消費でIPv6を行うことができる。これにより、ネットワークアドレス交換でIPv4と相互運用可能な、オープンスタンダードなデバイス間通信インフラを提供できうるという点で非常に興味深い。
Contikiはマルチタスキングカーネルや10キロバイトRAMにも対応できる。その他の機能としては、プリエンプティブマルチスレッドやウェブサーバー、ウィンドウシステム、さらにウェブブラウザ(VNC経由のリモートディスプレイ使用)まで備えている。
ワイヤレスセンサーネットワークに特化して設計されたCOOJAと呼ばれるシミュレータも利用可能だ。このシステムは実際にはネットワークの各ノードでContikiのシステムをコンパイルと実行のために使用している。
CC26xx Contiki サンプルプログラム
Source: ti.com, CC BY-SA 3.0.
テキサスインスツルメンツはC2650SensorTagの基本的な性能、メッシュネットワークと超低消費電力モードのデモとなるContiki サンプル を3種類提供している。
”cc26xx-demo" では基本的なContikiのオペレーションを見ることができる。センサやボタンからデータを読み取りシリアルポートに出力すると、Blueooth Low Energy (BLE) ビーコンが起動し、スマートフォンなどに転送される。 適切に構成された他のノードでも、IPv6経由でpingを実行できる
Source: ti.com, CC BY-SA 3.0.
"cc26xx-web-demo"を使用するためには、BeagleBone Black とUSBに接続されたサブ1GHzもしくは2.4GHzのRFインターフェイスを用いて、エッジルータを設定する必要がある。SensorTagのメッシュノードは、センサの読みを表示したりMQTTクライアントを設定するためのWebサーバーとして機能し、MQTTブローカーに対してローカルでメッセージを公開したり、IBMブルーミックスのクライドサービスにアップロードすることが可能だ。CoAPサーバーは、ネットワークベースのUARTやBLEビーコンと一緒に、リソースの設定や取得にも使用される。
Viewing CoAP resources with the Copper add-on for Firefox. Source: ti.com, CC BY-SA 3.0.
3つ目の"very-sleepy-demo"は通常モードで起動し、あらかじめ設定された時間内であればSensorTag へのアクセスが可能で、CoAPを用いた設定ができる。その後very sleepy modeになるとネットワークのメンテナンスに必要なタスクのみを行う。
ソースとツールチェーン
cc26xxシリーズのサンプル含むContikiのソースコードはGitHub から入手できる。
パッケージレジストリを介したLinuxディストリビューションで使用可能なアプリケーションのビルドには、GCC ARM組み込みツールチェーンが必要である。それ以外ではtarballでのインストールやソースからのビルドが可能である。後半の2つの方法ではプロジェクトがmakefilesを呼び出した際に実行可能なファイルと見なされるために、パスの設定が必要となる。
また必要となるソフトウェアがすべてインストールされており、VMWareプレーヤーさえあれば動くUbuntuの仮想マシンInstant Contiki も使用可能だ。
ビルドとアップロード
ダウンロードしたソースと、インストールされたパスを使ってサンプルをビルド、実行するのはとても簡単である。Debug DevPack とSmartRF Flash Programmer 2.0 (Windows) もしくは CCS Uniflash (Windows/Linux)を用いることで、SensorTagへのアップロードが可能になる。
まとめ
スケーラビリティを必要とするIoTアプリケーションに対し、Contikiは豊富な機能を持つプラットフォームを提供する。またテキサスインスツルメンツは新しいSensorTagを提供することで、それらの支援に大きな力を注いでいる。支援が、テキサスインスツルメンツ独自のデバイスではなく、上流となるContikiに向けられているのは素晴らしいことだ。
Top image: 6LoWPAN Mesh. Source: ti.com, CC BY-SA 3.0.