Read this in other languages: English.
Particle Electron 資産トラッカーを使用すると、環境センサーデータを収集し、GPSまたはセルラー三角測量を使用してその位置を計算し、両方のデータイベントを Particle Functions を使用して Particle.io コンソールに送信することができます。 物理的なものが過酷な環境条件にさらされた時、Where、What、When の情報を知ることにより、多くのビジネスプロセスを改善することができます。
このセクションでは以下を確認します:
- Particle Electron 資産トラッカーのハードウェア構成
- Particle ソフトウェア ツールチェーン
- Watson IoT Asset Tracker プログラムは、温度と加速度計のデータを問い合わせ、クラウドに報告します
Particle Electron Asset Tracker v2 ボードでは、uBlox M8 GNSS GPS レシーバーと Adafruit LIS3DH Triple Axis 加速度計を Particle Electron に接続することができます。 Grove センサーを接続することもできます。
-
http://login.particle.io/ サイトで自身の Particle.io アカウントを設定する。
-
自身の Particle Electron を起動し名前をつける。
- 私の Electron は
blockchain-iot-asset-tracker1
です。
- 私の Electron は
-
SIM を起動する。
-
自身の Particle Electron を登録すると、Particle Devices Console に表示される。
-
Particle.io の提供する Particle Build WebIDE か CLI コマンドライン toolchain を使用する。
-
私は WebIDE に関して以下のサンプルを使用して少し学びました:
- LEDをブレッドボードに配線し、blink-led プログラムで点滅させてみた
- ウェブ接続の LED サンプルアプリケーションを試してみた
- Cloud2LED.bin を変更して Particle クラウドから LED の On/Off を Electron に送信してみた。 私はそれを大文字と小文字を区別しないよう、"on/off" と "ON/OFF" を共に認識するよう簡単な改造をしてみました!
-
Particle Functions を読むと、イベントを公開して購読できるようになります。
-
私は Web IDE よりコマンドラインインターフェースを好むので、ガイドに従って、Particle CLI をインストールしました。
$ particle login
$ particle upgrade
ファームウェアのアップグレード は、Google Map ジオロケーションデバイスのロケータを機能させるために重要でした。私の Particle Electron は v0.4.9 が工場出荷時にインストールされていましたが、v0.6.4にアップグレードすると Google Maps 機能が機能するようになりました。
- 次のステップとして particle compile コマンドを学びます。
$ particle compile
私の場合は:
$ particle compile electron WatsonIoTAssetTracker --saveTo WatsonIoTAssetTracker.bin
- あなたの Particle プロジェクトで利用できる多くの Arduino 用の Particle ライブラリ があります。
$ particle library list
$ particle library view AssetTracker
$ particle library view OneWire
- あなたの Particle Electron を書き換えるためには、 dfu-util をインストールする必要があります。私は Fedora 25 リポジトリにある dfu-util-0.9-1.fc25.x86_64.rpm を使用しました。
- Electron のリセットボタンとモードボタンを押したままにして
- リセットボタンをはなす
- LEDが黄色になるのを待つ
- モードボタンをはなす
- 最後に、次のコマンドを使用してプログラムをボードに書き込みます:
$ particle flash --usb firmware.bin
私の場合は:
$ particle flash --usb WatsonIoTAssetTracker.bin
- プログラムが何をしているかを見るには、Particle serial 出力を監視するようにUSBケーブルを設定します。rickkas7 が素晴らしい Particle serial チュートリアル を書きました。
$ particle serial monitor
このリポジトリにある Watson IoT Asset Tracker プログラムの実装を見てみましょう。温度と加速度計のデータを要求し、その位置とともにクラウドに報告します。
このリポジトリで WatsonIoTAssetTracker.ino コードを取得し、以下のレビューに従ってください。 これは Particle Simple project ですので、project.properties ファイルもリポジトリからダウンロードする必要があります。これには、プログラムをコンパイルするために必要なライブラリのリストが含まれています。
訳注: INO ファイルは Arduino Sketch File 形式で、Arduino ベースの IoT 機器上で動作するプログラムです。
この Arduino プログラムのもっとも興味深いのは setup()
で、温度と加速度センサーのデータを送信して問い合わせる4つの Particle 関数を宣言しています。
// Declare a Particle.function so that we can adjust the Asset Tracking on and off reporting interval from the cloud.
Particle.function("SetInterval",AssetTrackerSetReportInterval);
// Declare a Particle.function so that we can query the current temperature from the cloud.
Particle.function("GetCurrTemp",AssetTrackerGetCurrentTemp);
// Declare a Particle.function so that we can adjust the accelerometer threshold from the cloud.
Particle.function("SetXYZThresh",AssetTrackerSetAccelThresh);
// Declare a Particle.function so that we can query recent accelerometer data from the cloud.
Particle.function("GetRecentXYZ",AssetTrackerGetRecentAccel);
このプログラムの次の興味深い点は、Google Maps Locator API を使用して、Cellular タワーの信号強度に基づいて地理的位置を三角測量することです。 Google は、Cellular タワーの位置 (ヒント: タワーは移動せず、地面に固定されています) を把握しており、タワーからあなたのデバイスまでの信号の RSSI 強度から、そのおおよその位置を計算することができます。 都合の良いことに、Particle Electron にはSIMカードがあり、携帯電話網を介して通信することができます。
Asset Trackerボードで GPS を使用するのは素晴らしいことですが、遮られることもなく、GPS衛星と常に直線的な通信ができる状態を常に保つことは困難でしょう。 また GPS チップセットはかなりのバッテリー電力を消費するので、トラッカーの稼働時間を短くしてしまうでしょう。 実際、Cellular による三角測量はGPSほど正確ではありません。 しかし、高速道路を走行する際に「どこにいるの?」という質問に答えるほとんどのケースでは、数百メートルの半径で十分なことがほとんどです。 私は個人的に Google Maps API Key を持っています。 これは CellularHelper ライブラリを使用しています。
$ particle library view CellularHelper
$ particle library view google-maps-device-locator
プログラムは4つの Particle Function コールバックとヘルパー関数を実装して、加速度センサーと温度センサーを照会します。
注目すべきは、もっと洗練された実装でしたが、私は Grove 温度センサー を AssetTracker ボードの Grove コネクタと連携させることができませんでした。 私はいくつかの古き良き Dallas DS18B20 温度センサーを注文しました。 私は、これらの チュートリアルの指示 に従って、それらの1つ (と1つの抵抗器) を私の Particle Electron に配線しました。 これは OneWire ライブラリを使用します。
プログラムは、その場所に応じて設定した間隔で定期的に起動します。 これにより、DeviceLocator イベントがトリガーされます。 Cellular タワーの信号強度を照会し、RSSI データを Google Maps API に送信した後、地理的位置の緯度/経度/確度など座標情報をボードに返信します。 プログラムが座標情報を取得すると、温度を読み取り、加速度計がモーション閾値を超えているかどうかをチェックします。 その後、Particleコールバック関数 AssetTrackerLocationCallback() によって3つのデータポイント(WHERE、WHAT、WHEN)をクラウドに送信します。 この情報の組み合わせは IoT 資産トラッカー の基礎です。
また、提供された Particle 資産トラッカーのケースにうまく収まります:
最初にデータが Particle コンソールに届くと、あなたはとても喜ぶでしょう。 ここに、Particle.io クラウドに到着する温度データ、加速度計データ、および地理位置データのスクリーンショットがあります。
あなたが本当にやりたいことは、そのデータをどこか別の場所に送ることです。 私の場合、IoT データを IBM Cloud および Node-RED にルーティングして、Hyperledger Fabricブロックチェーンに格納する必要があります。 次のセクション もしくは Node-REDのセクション にジャンプします。
移動する前に、Node-RED プログラムがこれらのセンサーイベントを監視/購読することを許可する Particle トークンが必要です。
$ particle token list
$ particle token new
ターミナルから以下のコマンドでデータを参照することができます:
$ curl https://api.particle.io/v1/devices/events?access_token=<your-token-here>