センサモジュールの運転条件の設定
オンボードのI2Cセンサ類を使用するDモードでは、USBやブルートゥースで接続したPCからシリアル通信コマンドを送信することで運転条件を変更することができます。高速ADC 6chを駆動するAモードでは運転条件は1 msec固定で運転していますので変更はできません。
1)USB接続でArduino IDEの「シリアルモニタ」を使用したコマンド送信
preMSMセンサモジュールをUSBでPCに接続し、Arduino IDEを開きます。
・ツールメニューからシリアルポートをpreMSMセンサモジュールが接続されたポートに設定します。
・ポート設定ができたら、「シリアルモニタ」を開きます。
シリアルモニタが開いたら、通信速度を1,000,000bpsに設定します。
この状態で、稼働状態になっているセンサーがあればデータが表示されます。
(←この例では全てのセンサーがOFFになっている状態を示しています)
入力フィールドに「BME680_enable=true」と入力し、送信ボタンを押します。
*このコマンドは、気温・湿度・気圧・ガスを計測する環境センサ”BME680”を有効(ON)にするコマンドです。
BME680が「有効」に設定されると、JSONフォーマットでデータが送られてきます。
同様に、「BME680_interval=6000」と入力し、送信ボタンを押すとBME680環境センサの動作周期(インターバル)が6秒に設定されます。
(*interval設定の単位はmSです)
このように、
「”センサデバイス名”_enable=true」で、当該のセンサデバイスをONに、
「”センサデバイス名”_enable=false」で、当該のセンサデバイスをOFFに、
「”センサデバイス名”_interval=(動作周期ms)」で、当該のセンサデバイスの動作周期を設定することができます。
このコマンドでコントロールできるセンサデバイスの名称は、以下の通りです。
Model: PMSM-EV001
BMX160 : 9軸モーションセンサ
BME680 : 環境センサ(気温・湿度・気圧・ガス)
ADS1015 : 4ch A/Dコンバータ
MCP4725 : 1ch D/Aコンバータ
RPR0521 : 照度センサー
MCP23008 : 拡張I/Oポート
S11059 : カラーセンサ
MCP9600 : 温度センサ(熱電対)—外付けセンサ
BMX050 : 9軸モーションセンサ —外付けセンサ
MPR121 : 12ch タッチセンサ —外付けセンサ
*外付けセンサのデータは、センサが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)ゲートウエイのNode-REDから、センサモジュールの設定を変更する方法を説明します。
この方法は、先に説明したコマンドをNode-REDを使用して送信しているものです。
センサモジュールにあらかじめ設定されているセンサの運転条件をNode-REDから変更することができます。
- センサモジュールとゲートウエイが通信状態であることを確認します。
クイックリファレンスの手順でセンサーモジュールを1台接続しておいてください。 - ゲートウエイのNode-REDのフローエディタにアクセスします。
Webブラウザを使用して、[ゲートウェイのIPアドレス]:1880で開きます。 - Node-REDフローエディタの左端にあるパレットから、injectノードとserial-outノードを使用します。
- serial outノードのプロパティを設定します。
シリアルポートの名称は、クイックリファレンスの内容に沿って一台だけ接続した状態では通常「/dev/rfcomm0」になっています。センサモジュールを複数接続している場合などはポート名称を調べて設定してください。
「設定」の「ボーレート」は、プルダウンメニューから「カスタム」を選んで、「1000000bps」をセットします。
その他の項目は初期値のままで大丈夫です。「入力」では、「入力の分割方式」で「文字列で区切る」「\n」が設定されていることを確認しておいてください。
設定ができたら「更新」ボタンを押します。
- injectノードのプロパティを設定します。
msg.payload の右側のフィールドで、プルダウンメニューから「文字列」を選択し、「BME680_enable=true」の文字列を設定します。
これは環境センサBME680をONにするコマンドです。設定できたら「完了」を押します。
- injectノードをもう2つ追加して、プロパティの設定で文字列を次のように設定します。
・「BME680_enable=false」 :環境センサBME680をOFFにするコマンドです。
・「BME680_interval=6000」: 環境センサBME680の動作周期を6000ms(6秒間隔)にするコマンドです。
- ノードの準備ができたら、3つのinjectノードの出力をserial outノードに接続してデプロイボタンを押します。
センサモジュールとの接続ができれば、接続済みの表示が出ます。
この状態でinjectノードの左についているボタンをクリックすると、プロパティで設定した文字列がセンサモジュールに送信され、動作設定を変更することができます。 - このように、Node-REDでもserial outノードを使用してコマンド文字列を送信することで、センサモジュールの動作を変更することができます。更に、Node-REDのダッシュボードを使用してWebページから操作するユーザーインターフェースを作成する事も可能です。
実証実験キットに含まれているNode-REDフローでも左上の三本線(ハンバーガーメニュー)から「SensorDeviceControl」の画面を開くと接続されているセンサモジュールの動作設定を変更するためのインターフェースが利用できます。
図8
.1 センサモジュールの設定方法