Contents
センサモジュールソフトウェアの機能
センサモジュールは電源を接続するとあらかじめ有効化されているセンサのデータを出力しますが、センサモジュールの制御コマンドを使用すると各センサの駆動条件や、外部機器の制御ポートなどをコントロールすることができます。
センサモジュールをPDHに接続した際にNode-REDを使用してデバイスコントロールを行うダッシュボードを用意していますが、内部ではセンサモジュールとPDHの通信でこの制御コマンドを使用しています。
制御コマンドの送受信にはUSBシリアルまたはBluetoothが使用できます。
・ここでは事例としてUSBで接続したコンピュータ上のArduino IDEの「シリアルモニタ」を使用します。
・シリアルモニタでセンサモジュールと通信を行うだけですのでソースファイルやライブラリは必要ありません。
(他のシリアル通信ソフトウェアでも可能ですが、送信データの入力フィールドが別になっている物が便利です。)
1)Arduino IDEのシリアルモニタに表示する
センサモジュールをUSBケーブルでコンピュータに接続し、Arduino IDEを開きます。
「ツール」から「シリアルポート」にマウスを重ねて、センサモジュールのポートを選択します。
「ツール」から「シリアルモニタ」を選択すると、シリアルモニタのウインドウが開きます。
右下の通信速度の選択で「1000000 bps」を選択します。
これでセンサデータが表示されます。
2)センサモジュールの起動メッセージを確認する
センサモジュールのリセットボタンを押します。起動メッセージが表示されます。
起動メッセージの内容
R-MSM sensor module Firmware: v1.3.4 <センサモジュールファームウェアのバージョンを表示します
MAC: 441793604C92 <センサモジュールのBluetooth MACアドレスを表示します
MAC4: 4c92 <Bluetooth MACアドレスの下4桁を表示します。idとして使用します
BT name: R-MSM_4c92 <Bluetoothのデバイス名を表示します
i2c device list : 0x20,0x29,0x2a,0x48,0x60,0x66,0x68,0x76,devices:8 <検出したI2Cデバイスのアドレスと数を表示します
Bluetooth MACアドレスとデバイス名はセンサモジュールとPDHを接続する際にも使用するので、モジュール側面のラベルにも印字して貼り付けています。
i2c device listはセンサモジュール起動時にI2Cバスをスキャンしてリストアップしています。外部接続のI2Cデバイスを使用するときに正しく認識しているかどうかを、ここで確認することもできます。
3)センサモジュールに制御コマンドを送る
Arduino IDEのシリアルモニタ上部にあるフィールドにコマンドを入力して送信することで、センサモジュールに制御コマンドを送る事ができます。
まず、確認のため「reset=true」を送信してみましょう。
センサモジュールにリセットがかかり、リセットボタンを押した時と同じように起動メッセージが表示されればOKです。
*古いファームウェアではresetコマンドに対応していないものがあります。
その場合はファームウェアを最新版に更新してお試しください。
4)センサモジュールで利用できるコマンド
センサモジュールに対して次に示すコマンドを使用することができます。
これらのコマンドはPDHのNode-REDでInjectノードとSerial outノードを使用して送信する事もできます。
4-1) センサ駆動条件の設定コマンド
オンボードセンサ、対応している外部接続センサのON/OFFおよび駆動インターバルを設定できます。
PDHの「デバイスコントロール」から設定を変更する際にも、内部ではこれらのコマンドを使用しています。
PDHと接続している場合は、この「デバイスコントロール」を使用した方が簡単に設定できます。
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | BMX160_enable | true false |
{“BMX160_enable”:true} {“BMX160_enable”:false} |
BMX160_enable=true BMX160_enable=false |
モーションセンサBMX160のON/OFF |
2 | BMX160_interval | インターバルmS | {“BMX160_interval”:(mS)} | BMX160_interval=1000 | モーションセンサBMX160の駆動インターバル(mS) |
3 | BME688_enable | true false |
{“BME688_enable”:true} {“BME688_enable”:false} |
BME688_enable=true BME688_enable=false |
環境センサBME688のON/OFF |
4 | BME688_interval | インターバルmS | {“BME688_interval”:(mS)} | BME688_interval=1000 | モーションセンサBME688の駆動インターバル(mS) |
5 | ADS1015_enable | true false |
{“ADS1015_enable”:true} {“ADS1015_enable”:false} |
ADS1015_enable=true ADS1015_enable=false |
ADコンバータ ADS1015のON/OFF |
6 | ADS1015_interval | インターバルmS | {“ADS1015_interval”:(mS)} | ADS1015_interval=1000 | ADコンバータ ADS1015の駆動インターバル(mS) |
7 | MCP4725_enable | true false |
{“MCP4725_enable”:true} {“MCP4725_enable”:false} |
MCP4725_enable=true MCP4725_enable=false |
DAコンバータ MCP4725のON/OFF |
8 | MCP4725_interval | インターバルmS | {“MCP4725_interval”:(mS)} | BME688_interval=1000 | DAコンバータ MCP4725の駆動インターバル(mS) |
9 | MCP23008_enable | true false |
{“MCP23008_enable”:true} {“MCP23008_enable”:false} |
MCP23008_enable=true MCP23008_enable=false |
GPIO MCP23008のON/OFF |
10 | MCP23008_interval | インターバルmS | {“MCP23008_interval”:(mS)} | MCP23008_interval=1000 | GPIO MCP23008の駆動インターバル(mS) |
11 | S11059_enable | true false |
{“S11059_enable”:true} {“S11059_enable”:false} |
S11059_enable=true S11059_enable=false |
カラーセンサS11059のON/OFF |
12 | S11059_interval | インターバルmS | {“S11059_interval”:(mS)} | S11059_interval=1000 | カラーセンサS11059の駆動インターバル(mS) |
13 | VL53L1X_enable | true false |
{“VL53L1X_enable”:true} {“VL53L1X_enable”:false} |
VL53L1X_enable=true VL53L1X_enable=false |
レーザ距離センサVL53L1XのON/OFF |
14 | VL53L1X_interval | インターバルmS | {“VL53L1X_interval”:(mS)} | VL53L1X_interval=1000 | レーザ距離センサVL53L1Xの駆動インターバル(mS) |
15 | AK9750_enable | true false |
{“AK9750_enable”:true} {“AK9750_enable”:false} |
AK9750_enable=true AK9750_enable=false |
人感センサAK9750のON/OFF |
16 | AK9750_interval | インターバルmS | {“AK9750_interval”:(mS)} | AK9750_interval=1000 | 人感センサAK9750の駆動インターバル(mS) |
17 | RPR0521_enable | true false |
{“RPR0521_enable”:true} {“RPR0521_enable”:false} |
RPR0521_enable=true RPR0521_enable=false |
照度センサRPR0521のON/OFF |
18 | RPR0521_interval | インターバルmS | {“RPR0521_interval”:(mS)} | RPR0521_interval=1000 | 照度センサRPR0521の駆動インターバル(mS) |
19 | MPR121_enable | true false |
{“MPR121_enable”:true} {“MPR121_enable”:false} |
MPR121_enable=true MPR121_enable=false |
タッチセンサMPR121のON/OFF |
20 | MPR121_interval | インターバルmS | {“MPR121_interval”:(mS)} | MPR121_interval=1000 | タッチセンサMPR121の駆動インターバル(mS) |
21 | MCP9601_enable | true false |
{“MCP9601_enable”:true} {“MCP9601_enable”:false} |
MCP9601_enable=true MCP9601_enable=false |
熱電対温度センサMCP9601のON/OFF |
22 | MCP9601_interval | インターバルmS | {“MCP9601_interval”:(mS)} | MCP9601_interval=1000 | 熱電対温度センサMCP9601の駆動インターバル(mS) |
23 | MPR121_enable | true false |
{“MPR121_enable”:true} {“MPR121_enable”:false} |
MPR121_enable=true MPR121_enable=false |
タッチセンサMPR121のON/OFF |
24 | MPR121_interval | インターバルmS | {“MPR121_interval”:(mS)} | MPR121_interval=1000 | タッチセンサMPR121の駆動インターバル(mS) |
25 | BME680_enable | true false |
{“BME680_enable”:true} {“BME680_enable”:false} |
BME680_enable=true BME680_enable=false |
環境センサBME680のON/OFF |
26 | BME680_interval | インターバルmS | {“BME680_interval”:(mS)} | BME680_interval=1000 | 境センサBME680の駆動インターバル(mS) |
27 | BMX055_enable | true false |
{“BMX055_enable”:true} {“BMX055_enable”:false} |
BMX055_enable=true BMX055_enable=false |
9軸モーションセンサBMX055のON/OFF |
28 | BMX055_interval | インターバルmS | {“BMX055_interval”:(mS)} | BMX055_interval=1000 | 9軸モーションセンサBMX055の駆動インターバル(mS) |
29 | DS18B20_enable | true false |
{“DS18B20_enable”:true} {“DS18B20_enable”:false} |
DS18B20_enable=true DS18B20_enable=false |
温度センサDS18B20のON/OFF |
30 | DS18B20_interval | インターバルmS | {“DS18B20_interval”:(mS)} | DS18B20_interval=1000 | 温度センサDS18B20の駆動インターバル(mS) |
31 | MH-Z14B_enable | true false |
{“MH-Z14B_enable”:true} {“MH-Z14B_enable”:false} |
MH-Z14B_enable=true MH-Z14B_enable=false |
CO2センサMH-Z14BのON/OFF |
32 | MH-Z14B_interval | インターバルmS | {“MH-Z14B_interval”:(mS)} | MH-Z14B_interval=1000 | CO2センサMH-Z14Bの駆動インターバル(mS) |
33 | task_settings | – | {“device”:”R-MSM”,”id”:”179E”, “sensor”:”task_settings”,”timestamp”:208532.13, “BMX055_enable”:false,”BMX055_interval”:1100, “BME680_enable”:false,”BME680_interval”:3500, “ADS1015_enable”:false,”ADS1015_interval”:900, “MCP4725_enable”:true,”MCP4725_interval”:5000, “RPR0521_enable”:false,”RPR0521_interval”:1600, “MPR121_enable”:false,”MPR121_interval”:800, “MCP9601_enable”:false,”MCP9601_interval”:2000, “MCP23008_enable”:false,”MCP23008_interval”:1200, “BMX160_enable”:true,”BMX160_interval”:1000, “S11059_enable”:false,”S11059_interval”:1500, “VL53L1X_enable”:false,”VL53L1X_interval”:1300, “AK9750_enable”:false,”AK9750_interval”:1400, “BME688_enable”:false,”BME688_interval”:3000, “DS18B20_enable”:false,”DS18B20_interval”:4000,”MH-Z14B_enable”:false,”MH-Z14B_interval”:4500,”LPWA_enable”:true} |
task_settings | 各センサタスクのenable状態とインターバルを返す |
4-2) 外部ポートの設定コマンド
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | MCP23008_GP5 | true false |
{“device”:”R-MSM”,”id”:”179E”, |
MCP23008_GP5=true MCP23008_GP5=false |
I2C接続のGPIOチップMCP23008のGP5,GP6,GP7を出力ポートに設定しており、この中でGP5の出力状態をHigh(true)かLow(false)に設定します。 |
2 | MCP23008_GP6 | true false |
{“device”:”R-MSM”,”id”:”179E”, “sensor”:”MCP23008″,”timestamp”:3982955.31, “port5”:{“val”:0},”port6″:{“val”:1},”port7″:{“val”:0}} {“device”:”R-MSM”,”id”:”179E”, “sensor”:”MCP23008″,”timestamp”:3982955.31, “port5”:{“val”:0},”port6″:{“val”:0},”port7″:{“val”:0}} |
MCP23008_GP6=true MCP23008_GP6=false |
I2C接続のGPIOチップMCP23008のGP5,GP6,GP7を出力ポートに設定しており、この中でGP6の出力状態をHigh(true)かLow(false)に設定します。 |
3 | MCP23008_GP7 | true false |
{“device”:”R-MSM”,”id”:”179E”, “sensor”:”MCP23008″,”timestamp”:3982955.31, “port5”:{“val”:0},”port6″:{“val”:0},”port7″:{“val”:1}} {“device”:”R-MSM”,”id”:”179E”, “sensor”:”MCP23008″,”timestamp”:3982955.31, “port5”:{“val”:0},”port6″:{“val”:0},”port7″:{“val”:0}} |
MCP23008_GP7=true MCP23008_GP7=false |
I2C接続のGPIOチップMCP23008のGP5,GP6,GP7を出力ポートに設定しており、この中でGP7の出力状態をHigh(true)かLow(false)に設定します。 |
4 | MCP4725_value | 0~4096 | {“MCP4725_value”:4096} | MCP4725_value=4096 | DAコンバータの出力電圧を変更します。 値を0~4096に設定すると、それに応じて出力電圧が0~3.3Vに変化します。 後段に接続する機器に応じてインターフェース回路を作成してください。 |
5 | LPWA_enable | true false |
{“LPWA_enable”:true} {“LPWA_enable”:false} |
LPWA_enable=true LPWA_enable=false |
LPWAモジュール(920MHz特定小電力長距離通信モジュール)を接続する時に有効化します。LPWAモジュールにはCSV形式のデータが送信されます。 |
4-3) OLED表示器の設定コマンド
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | display_line1 | 表示文字列 (半角英数16文字) |
– | display_line1=abcdefg | OLED表示モジュールの1行目に半角英数で16文字まで表示します。 |
2 | display_line2 | 表示文字列 (半角英数16文字) |
– | display_line2=abcdefg | OLED表示モジュールの2行目に半角英数で16文字まで表示します。 |
3 | display_line3 | 表示文字列 (半角英数16文字) |
– | display_line3=abcdefg | OLED表示モジュールの3行目に半角英数で16文字まで表示します。 |
4 | display_clear | – | – | display_clear | OLED表示モジュールの表示内容を消去します。 |
4-4) PWM出力の設定コマンド
センサモジュールのJ11コネクタからPWM信号を出力します。端子はサーボモータ制御と共通です。
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | pwm0_val | PWM値 (0~1023) |
{“pwm0_val”:512} | pwm0_val=512 | pwm 0 端子(J11 – 1 pin)からPWM信号を出力します。 |
2 | pwm1_val | PWM値 (0~1023) |
{“pwm1_val”:1023} | pwm1_val=1023 | pwm 1 端子(J11 – 2 pin)からPWM信号を出力します。 |
3 | pwm2_val | PWM値 (0~1023) |
{“pwm2_val”:0} | pwm2_val=0 | pwm 2 端子(J11 – 3 pin)からPWM信号を出力します。 |
4-5) サーボモータ制御コマンド
センサモジュールのJ11コネクタからサーボモータ制御信号を出力します。端子はPWM出力と共通です。
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | servo0_val | PWM値 (30~120) |
{“servo0_val”:75} | servo0_val=75 | pwm 0 端子(J11 – 1 pin)からPWM値によるサーボモータ制御信号を出力します。 |
2 | servo1_val | PWM値 (30~120) |
{“servo0_val”:120} | servo1_val=120 | pwm 1 端子(J11 – 2 pin)からPWM値によるサーボモータ制御信号を出力します。 |
3 | servo2_val | PWM値 (30~120) |
{“servo0_val”:30} | servo2_val=30 | pwm 2 端子(J11 – 3 pin)からPWM値によるサーボモータ制御信号を出力します。 |
4 | servo0_deg | 角度 (0~180) |
{“servo0_deg”:90} | servo0_deg=90 | pwm 0 端子(J11 – 1 pin)から角度値によるサーボモータ制御信号を出力します。 |
5 | servo1_deg | 角度 (0~180) |
{“servo0_deg”:180} | servo1_deg=180 | pwm 1 端子(J11 – 2 pin)から角度値によるサーボモータ制御信号を出力します。 |
6 | servo2_deg | 角度 (0~180) |
{“servo0_deg”:0} | servo2_deg=0 | pwm 2 端子(J11 – 3 pin)から角度値によるサーボモータ制御信号を出力します。 |
4-6) デバッグ用のコマンド
番号 | コマンド | 引数 | レスポンス (JSON) | コマンド例 | 説明 |
1 | reset | true | {“reset”:true} | reset=true | センサモジュールをリセットします。 R-MSMセンサモジュール基板のハードウェアWDTを使用してリセットします。 |
2 | debug_mode | true | {“debug_mode”:true} | debug_mode=true | センサモジュールのUSBシリアル出力にセンサタスクの実インターバルとタスクの処理時間などの各種デバッグ情報を出力します。システム構築時のデバッグのみに使用してください。 *センサモジュールをリセットすると、このモードをセットしていてもクリアされます。 |
3 | debug_mode | false | {“debug_mode”:false} | debug_mode=false | 各種デバッグ情報の出力を停止します。 |
5)Node-REDからコマンドを送信する
R-MSMのコマンドは接続されたPDHやコンピュータ上のNode-REDからも送信することができます。
injectノードにコマンドを設定し、serial outノードで送信するなどの方法が使えます。
6)今後の開発
上記で説明したセンサデバイスの運転条件の変更の他にも、今後の開発で機能を追加していく予定です。
・各種コマンドの追加
シリアルコマンドはこれまでにも活用を進める中で便利に使えるように追加・変更を進めてきました。
今後も用途によって必要となるコマンドがあれば追加していく予定です。
・エデュケーションモード
起動時の選択でセンサモジュールの動作モードを変更し、センサモジュール自身からセンサの信号を模した信号を出力する事を検討しています。センサモジュールやPDHの活用を検討する中で、このモードを使用してR-CPSについての理解を深めて頂ける事を期待しています。