IoTセンサーネットワークをSmartMeshで構築する!

メッシュネットワークであるSmartMeshを使って、センサーからの情報を集めるIoTシステムを構築してみます。仮想マシン上に構築した「VManager」を利用して、スケーラブルなIoTノード管理を実現する方法と、より効率的な運用方法の実践方法を3回にわたって紹介します。

仮想マシン上にVManagerを構築する

SmartMeshのVManagerは、VirtualBoxやVMware Playerなどの仮想環境で動作するように作られています。今回は、VirtualBoxを使用します。

仮想化イメージは、アナログ・デバイセズの「MyAnalog」からリクエスト可能です。冒頭の動画を参考に、SmartMeshを実際に構築してみてください。

SmartMeshの技術については、こちらに詳しくありますので、参考にしてください。

SmartMesh 技術

VManagerとEManagerの違い

EManagerは、PCベースのアプリケーションで構築可能です。Moteと呼ばれるノード端末は、最大100台まで管理することができます。

VManagerは、仮想環境で構築可能です。Moteと呼ばれるノード端末は、最大50,000台まで管理することができます。

VManager同士をGatewayで接続して最大ノード数を拡張することもできます。IoTノード端末数が増えれば増えるほど、その力を発揮するのがVManagerです。

SmartMeshの評価キットDC9021

SmartMeshを使うには、評価キットが必要です。こちらが、その中身です。

図

評価キットDC9021B

今回は、Moteと呼ばれる4つのノードと、白いUSBドングルDC2274A-Bを使用します。小規模な用途では、青いドングルのDC2274A-Aを使いますが、今回は使用しません。

その他にも、書き込みツールも含まれており、ボードのコンフィグレーションを必要に応じて変更できます。

PC環境

PCは、Windows10を使用しています。

VirtualBox 5.2.18 + Extenstion Pack
VirtualBox

こちらのガイドを参考にしてください。
SmartMesh IP Easy Start Guide for VManager.pdf

困ったときは、英語でサポートを受けてみよう!

今回の実験で、USBドングルを認識しない問題がありました。こういうことはよくあるかもしれませんが、そんな時は「サクッ」と英語でサポートの依頼をしてみましょう。アナログ・デバイセズでは、専任チームがいるので、解決に至らなくても多くのアドバイスをしてくれます。実に頼もしいものです。

困ったケース

現象:USBのドングルDC2274A-BをVirtualBoxで認識してくれない。

解決方法:解決方法は使用環境によって若干違うようですが、ワタクシの場合は、USBPcapというモジュールがUSBを解放してくれないために、USBドングルを組み込めなかったようです。このモジュールをUninstallすると、USBを認識してくれました。VirtualBoxのフォーラムにも同じような内容がありましたので、リンクだけ貼っておきます。ご参考に!

https://www.virtualbox.org/ticket/11251

https://forums.virtualbox.org/viewtopic.php?t=59303#p276014

https://forums.virtualbox.org/viewtopic.php?f=6&t=39104#p176270

動かしてみよう

それでは動かしてみましょう。VManagerを起動すると、中に入っているLinuxイメージが起動します。必要なドライバ類は全てインストールされているので、仮想マシン上で動くようにできています。

起動後は、login「dust」 password「dust」で入ることができます。USBデバイスであるDC2477A-Bが認識できていることを確認してください。

USBデバイスを正しく認識できているか確認する方法
USBデバイスとしてLinuxが認識できているかどうかを確認するには、「lsusb」コマンドで確認して見てください。

Moteの電源を入れよう

Moteに付いているSWを入れると、電源が入ります。緑のLEDが点滅し始めて、点灯すればメッシュ・ネットワークに参加したことになります。

SSHでログインして、Moteのステータスを確認しよう

Moteがネットワークに参加しているかどうかを確認するには、ssh経由の接続でVManagerのコンソール機能(CLI)を使います。

こちらのガイドから、SSHでログインする方法を確かめてください。

例)IPアドレスが、10.0.0.23の場合

$>ssh dust@10.0.0.23 -p 22

とタイプします。IPアドレスは使用環境に合わせてください。

IPアドレスの確認方法は、ifconfigで確認してください。

Consoleアプリを使って、Moteを確認

ログインできたら、consoleと入力します。

ログイン時に、ユーザーIDとパスワード確認されます。「dust」「dust」でログインして下さい。

コンソールにログインできたら、「sm」と入力してください。

$> sm
AP MAC                  Id  Clk State  State time  Jn  Nbrs Links
----------------------- --- --- ----- ------------ --- ---- -----
00-17-0D-00-00-31-99-E2   1 Int  Oper   0-00:04:31   1    4    36

Mote MAC                Id  State  State time  Age Jn  Nbrs Links
----------------------- --- ----- ------------ --- --- ---- -----
00-17-0D-00-00-31-C3-82   2  Oper   0-00:04:03  16   1    1    13
00-17-0D-00-00-31-C8-F4   3  Oper   0-00:03:39   2   1    1    13
00-17-0D-00-00-31-C8-39   4  Oper   0-00:02:25  17   1    1    13
00-17-0D-00-00-31-C9-F3   5  Oper   0-00:01:46   7   1    1    13

APs: 1, motes: 4. Live: 5, joining: 0, lost: 0
					

このようにMoteのステータスが表示されます。次に、ping Mote No.を指定すると、Moteのアドレスとレイテンシー、電圧、温度を返してきます。

$> ping 2 
In progress. Callback id: 1
 
$> PING 2018-08-23 22:41:55.374 Reply from Mote #2, mac: 00-17-0d-00-00-31-c3-82
CallbackId: 1, Latency: 1521ms (1 hops), Data: 2738mV, 26C

ping 3
In progress. Callback id: 2

$> PING 2018-08-23 22:42:00.288 Reply from Mote #3, mac: 00-17-0d-00-00-31-c8-f4
CallbackId: 2, Latency: 1753ms (1 hops), Data: 2731mV, 26C

ping 4
In progress. Callback id: 3
$> ping 5PING 2018-08-23 22:42:08.336 Reply from Mote #4, mac: 00-17-0d-00-00-31-c8-39
CallbackId: 3, Latency: 3817ms (1 hops), Data: 2905mV, 26C
 
In progress. Callback id: 4
$> PING 2018-08-23 22:42:09.683 Reply from Mote #5, mac: 00-17-0d-00-00-31-c9-f3
CallbackId: 4, Latency: 1215ms (1 hops), Data: 2898mV, 26C
					

SmartMeshの関連情報

SmartMeshは、PCはもちろんRaspberry Pi(2以降)やArduino、mbedなど多くの環境で動かせるようになっています。下記リンク先の情報を参考に、構築することもできます。

dustcloud.org

Mbed Sample for QSL

まとめ

SmartMeshの評価キットDC9021Bは、すぐにIoTセンサーネットワークが構築できます。アナログ・デバイセズのSmartMeshで、簡単IoTセンサーネットワークを構築してください!