センサモジュールの駆動設定の変更

センサモジュールには多数のセンサが搭載されており、外部端子に追加のセンサを接続することもできます。このように多くのセンサを搭載していますが、それぞれのセンサを個別にON/OFFしたり、データ取得のインターバルを変更する事がPDHのデバイスコントロール画面から簡単に行えます。デバイスコントロール画面はNode-REDのダッシュボードの機能を使っていますので、同じネットワークに接続したコンピュータからリモートで操作することもできます。

1)PDHのデバイスコントロール画面で設定を変更する

PDHのダッシュボードを開き、左上の三本線メニューからデバイスコントロール画面に切り替えます。


センサデバイスコントロールの画面が表示されます。
ここではまだセンサモジュールの設定状態は反映されていませんので、「RELOAD」のボタンを押して読み込みます。

接続したセンサモジュールから応答があれば、responseの赤いランプが点灯して設定状態が画面に反映されます。
この状態では、BMX160, BME688, ADS1015の3つのセンサがONになっています。on/off設定の横の数字は、データ取得のインターバルで単位はmsです。BME688は、3秒(=3,000ms)おきにデータを取得します。
この状態で、センサモジュールの各種センサのON/OFFや値を取得するインターバルを個別に設定することができます。
設定を変更するごとにPDHとセンサモジュール間で通信を行っていますので、連続で早く切り替えると通信エラーが発生することがあります。responseのランプで反応を見て、一呼吸置きながら設定を変更していくと良いでしょう。
*ここで設定した内容は、センサモジュールの不揮発性メモリに保存されますので、センサモジュールの電源を入れなおしても保持されています。

2)シリアル通信でコマンドを送信して設定を変更する

オンボードのI2Cセンサ類を使用するMode D(デジタルモード)では、USBやBluetoothで接続したPDHやPCからシリアル通信コマンドを送信することで運転条件を変更することができます。高速ADC 6chを駆動するMode A(アナログモード)では運転条件はサンプリング周期1 ms固定で運転していますので変更はできません。

1)USB接続でArduino IDEの「シリアルモニタ」を使用したコマンド送信

 

R-MSMセンサモジュールをUSBでPCに接続し、Arduino IDEを開きます。
・ツールメニューからシリアルポートをR-MSMセンサモジュールが接続されたポートに設定します。

・ポート設定ができたら、「シリアルモニタ」を開きます。

 

 

 

シリアルモニタが開いたら、通信速度を1,000,000bpsに設定します。

この状態で、稼働状態になっているセンサーがあればデータが表示されます。
(←この例では全てのセンサーがOFFになっている状態を示しています) 

 

 

 

入力フィールドに「BME688_enable=true」と入力し、送信ボタンを押します。

*このコマンドは、気温・湿度・気圧・ガスを計測する環境センサ”BME688”を有効(enable)にするコマンドです。

 

 

 

BME688が「有効」に設定されると、JSONフォーマットでデータが送られてきます。

同様に、「BME688_interval=6000」と入力し、送信ボタンを押すとBME688環境センサの動作周期(インターバル)が6秒に設定されます。
(*interval設定の単位はmsです)

 

 

このように、
「”センサデバイス名”_enable=true」で、当該のセンサデバイスをONに、
「”センサデバイス名”_enable=false」で、当該のセンサデバイスをOFFに、
「”センサデバイス名”_interval=(動作周期ms)」で、当該のセンサデバイスの動作周期を設定することができます。

このコマンドでコントロールできるセンサデバイスの名称は、以下の通りです。
Model: PMSM-EV002
BMX160 :  9軸モーションセンサ
BME688 : 環境センサ(気温・湿度・気圧・ガス)
ADS1015 : 4ch A/Dコンバータ
MCP4725 : 1ch D/Aコンバータ
S11059 : カラーセンサ
MCP23008 : 拡張I/Oポート
VL53L1X : レーザー距離センサ
AK9750 : 人感センサ
BMX055 : 9軸モーションセンサ —外付けセンサ
BME680 : 環境センサ(気温・湿度・気圧・ガス) —外付けセンサ
MPR121 : 12ch タッチセンサ —外付けセンサ
MCP9601 : 温度センサ(熱電対)—外付けセンサ
RPR0521 : 照度センサ —外付けセンサ
DS18B20 : 1-wire 温度センサ —外付けセンサ
MH-X14B : CO2センサ —外付けセンサ
LPWA IM920sL : LPWA通信モジュール —外付けモジュール

*外付けセンサのデータは、センサがI2C拡張ポートに接続されていないときは出力されません。
*MCP23008拡張I/Oポートは、IO 0~5を入力ポート、IO 6~8を出力ポートに設定しています。
 MCP23008のデータを読み込んだ場合、IO 0~5の状態を表示します。

■センサデバイス運転条件の設定コマンドの他に、いくつかの入出力コマンドも用意されています。

・MCP23008 拡張I/Oポート
 「MCP23008_GP(ポート番号)=true」 :  GP5,GP6,GP7の出力ポートを指定して、値をtrue(High)に設定します。
 「MCP23008_GP(ポート番号)=false」 :  GP5,GP6,GP7の出力ポートを指定して、値をfalse(Low)に設定します。
 これらのコマンドを送信すると、出力ポートの状態がJSON形式で送り返されます。

・外付け液晶モジュール(0.91インチSSD1306搭載、有機ELディスプレイ)
 「display_line(行番号)=(文字列)」:I2C拡張ポートに接続した有機ELディスプレイに文字列を表示します。
  行番号は1,2,3のいずれかを指定します。

・MCP4725 1ch D/Aコンバータ
 「MCP4725_value=(DAコンバータ設定値)」  0~4095の設定ができます。
 DAコンバーターの出力ポートは、0~4095の値に応じて0~3.3Vの電圧が出力されます。
 この値はEEPROMに記憶され、再起動時には値が復帰されます。
 *頻繁に変更しない電空レギュレータ制御などの用途を想定しています。
  一連の処理の中で頻繁に値の更新を繰り返すような用途は避けてください。

 

2)PDHのNode-REDから、センサモジュールの設定を変更する方法
この方法は、先に説明したコマンドをNode-REDを使用して送信するものです。
センサモジュールにあらかじめ設定されているセンサの運転条件をNode-REDから変更することができます。

1. センサモジュールとPDHが接続状態であることを確認します。
接続状態でない場合は、センサモジュールとのペアリングを参考にして接続してください。

2.PDHのNode-REDのフローエディタにアクセスします。
Webブラウザを使用して、http://[PDHのIPアドレス]:1880で開きます。

3. Node-REDフローエディタの左端にあるパレットから、injectノードとserial-outノードを使用します。

4. serial outノードのプロパティを設定します。

シリアルポートの名称は、クイックリファレンスの内容に沿って一台だけ接続した状態では通常「/dev/rfcomm0」になっています。センサモジュールを複数接続している場合などはポート名称を調べて設定してください。

「設定」の「ボーレート」は、プルダウンメニューから「カスタム」を選んで、「1000000bps」をセットします。
その他の項目は初期値のままで大丈夫です。

「入力」では、「入力の分割方式」で「文字列で区切る」「\n」が設定されていることを確認しておいてください。

設定ができたら「更新」ボタンを押します。

 

 

 

5. injectノードのプロパティを設定します。
msg.payload の右側のフィールドで、プルダウンメニューから「文字列」を選択し、「BME680_enable=true」の文字列を設定します。
これは環境センサBME680をONにするコマンドです。設定できたら「完了」を押します。

6. injectノードをもう2つ追加して、プロパティの設定で文字列を次のように設定します。

・「BME680_enable=false」 :環境センサBME680をOFFにするコマンドです。
・「BME680_interval=6000」: 環境センサBME680の動作周期を6000ms(6秒間隔)にするコマンドです。

7. ノードの準備ができたら、3つのinjectノードの出力をserial outノードに接続してデプロイボタンを押します。

センサモジュールとの接続ができれば、「接続済」の表示が出ます。
この状態でinjectノードの左についているボタンをクリックすると、プロパティで設定した文字列がセンサモジュールに送信され、動作設定を変更することができます。