データフォーマットの説明

センサモジュールからのデータは、測定毎に文字列で送られてきます。
出力はディップスイッチの設定(Mode A/D)とセンサデバイスに従い、それぞれ異なったフォーマットで出力されます。

■ Mode A (アナログモード、マイコンのアナログポートを使用した高速AD変換モード)

データは1msごとに、CSV形式でタイムスタンプとアナログポートのAD変換の値が6ch分送られてきます。
書式:timestamp, adc0, adc1, adc2, adc3, adc4, adc5
例 :”34188.26,124,64,46,25,12,53″

データの最初の項(timestamp)は、センサモジュールの電源を入れたときからの経過時間(ms)を表しています。その後はchごとにアナログポートの入力値0V~3.3Vに比例した諧調値(12bit, 0 ~4095)が6ch分出力されます。
このADCを使用して出力5V系のセンサデータを取り込む場合は、最大5Vの信号が最大3.3Vになるよう電圧変換してアナログポートに接続してください。

データのサンプリング周期は固定で、chごとに0.1ms で3回計測を行い、メディアンフィルターで3個のデータの中から中央値を抽出した結果を、1ms毎に出力します。

■ Mode D(デジタルモード、I2Cオンボードセンサや外付けセンサを使用)

デジタルモードでのセンサデータは、センサモジュールのI2Cバスに接続されたセンサデバイスを駆動し、デジタル出力のセンサ値を読み出してJSON形式で出力します。
・気温や湿度、加速度やジャイロなど、測定する対象のセンサデバイスごとにデータ部分のフォーマットが異なります。
・別途、センサモジュールに制御コマンドを送信することで、センサデバイスごとに使用/不使用やデータの更新周期を変更することができます。

0)基本フォーマット
書式:{“device”:”モジュール名称”,”id”:”モジュールID”,”sensor”:”センサデバイス”,”timestamp”:タイムスタンプ,(センサデータ)}
例 :{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”BME680″,”timestamp”:5636.84, (センサデータ)}

モジュール名称、モジュールID,センサデバイスの値は、データを受信するゲートウェイ側で、モジュールやセンサデバイスごとに処理を切り分けるための識別子として使用することができます。

・モジュール名称 ”device”:”preMSM” :センサモジュールの名称です。ハードウェア更新が発生した場合、異なる値になります。
・モジュールID ”id”:”2D7E”     :個々のセンサモジュールを識別するためのIDです。この事例の”2D7E”は、MACアドレスの下4桁です。
・センサデバイス ”sensor”:”BME680″ :どのセンサデバイスのデータであるかを示します。事例のBME680はBosch社の環境センサの型番です。
・タイムスタンプ ”timestamp”:5636.84:センサモジュールの電源を入れたときからの経過時間(ms)を表しています。

この基本フォーマットに続けて、各センサデバイスで取得したデータが格納されています。
以下に、各センサデバイスごとの簡単な説明とデータフォーマットを示します。

1)BME680 環境センサ (オンボード)
センサモジュールを設置した場所の、気温・湿度・気圧・ガス(空気清浄度)を計測します。
オンボードセンサではセンサモジュール自体の発熱の影響を受ける場合があるため、正確な気温を測定する必要がある場合はI2C拡張ポートにもうひとつ別のBME680環境センサを接続します。オンボード側のBME680のI2Cアドレスを変更して外部に取り付けたセンサとコンフリクトが起きないようにすれば、ソフトウェアの変更なしで利用できます。
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”BME680″,”timestamp”:5636.84,”temp”:{“val”:31.13},”humid”:{“val”:63.44},”press”:{“val”:1017.54},”gas”:{“val”:123.98}}

2)ADS1015 ADC(アナログ・デジタル コンバーター、オンボード)
アナログ信号の変化するデータを取得するために使用します。ADC入力コネクタに測定対象の信号を接続して計測します。
アナログ出力の外部センサ、例えば心拍センサや圧力センサ、流量センサなどを使用することができます。
接続ポートはADC0~ADC3の4chありますが、ADC3にはオンボードマイクが接続されています。
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”ADS1015″,”timestamp”:5641.85,”ADC0″:{“val”:181},”ADC1″:{“val”:182},”ADC2″:{“val”:185},”ADC3″:{“val”:177}}
計測値(val)はchごとにアナログポートの入力値0V~3.3Vに比例した値(0 ~1100)が出力されます。
これは、1 = 3mVの電圧値に相当します。
このADCを使用して出力5V系のセンサデータを取り込む場合は、最大5Vの信号が最大3.3Vになるよう電圧変換してアナログポートに接続してください。

3)MCP4725  DAC(デジタル・アナログ コンバーター、オンボード)
センサモジュールから設定したアナログ電圧を出力するために使用します。出力値はセンサモジュール内部の不揮発性メモリに記憶されていますので、電源の再投入やリセットがかかった後でも値を復帰することができます。
例えば、空圧機器制御で電空レギュレーターを使用して圧力を設定する時などに利用できます。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”MCP4725″,”timestamp”:5649.84,”DAC0″:{“val”:1.65}}

4)RPR0521  照度・近接センサ (オンボード)
センサモジュールを設置した場所の明るさ(Als)、センサ前面から10cm程度の近接(Prox)を計測します。
例えば倉庫内の電灯のON/OFFを検出したり、設置方法によってはドアや窓の開閉を検出します。
 *preMSMハードウェアバージョン「p3w」では残念ながら近接センサのほうは動作していません。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”RPR0521″,”timestamp”:5650.37,”Prox”:{“val”:0},”Als”:{“val”:9.9}}

5)MCP23008  IOエクスパンダ― (オンボード)
デジタル信号の変化を検出したり、外部機器制御のためのデジタル信号を出力します。
MCP23008ではport 0~ port 7の8つのポートが利用できますが、このセンサボードではこれをport0 ~ port4の5つを入力ポート、port5 ~ port 7 の3つを出力ポートとして設定し、それぞれ別のコネクタに配線しています。
例えば、スイッチの状態をモニタして他のセンサの出力状態を合わせて条件設定し、外部機器の作動/停止をコントロールします。
入力ポートの状態は下記のフォーマットで取得しますが、出力ポートを制御するには別途コマンド送信を行います。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”MCP23008″,”timestamp”:5653.84,”port0″:{“val”:1},”port1″:{“val”:1},”port2″:{“val”:1},”port3″:{“val”:1},”port4″:{“val”:1}}

6)BMX160 9軸モーションセンサー  (オンボード)
加速度、ジャイロ、地磁気で、それぞれx軸、y軸、z軸のモーションデータを計測できます。(3 x 3軸で9軸となります。)
移動台車の走行時のモーションデータを取得したり、ロボットアーム先端の姿勢検出などに利用できます。
x、y、zの各軸データは、例えば加速度なら “acc”:{“val”:[ x軸 ,y軸 ,z軸 ]} というように、x,y,zの順に格納されています。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”BMX160″,”timestamp”:5662.84,”acc”:{“val”:[0.001,0.5,10.523]},”gyro”:{“val”:[-0.305,0.213,0.091]},”mag”:{“val”:[207,36,-19]}}

7)S11059 カラーセンサー  (オンボード)
センサー前面から入射する光の、R(赤),G(緑),B(青),IR(近赤外) の成分を検出します。
例えば、機器に設置された、赤または緑に発光する運転表示灯の光が入るように設置すれば、発光色を見ることで非接触で運転状態を検出することができます。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”S11059″,”timestamp”:5682.84,”red”:{“val”:8},”green”:{“val”:9},”blue”:{“val”:6},”IR”:{“val”:2}}

8)MCP9600 熱電対サーマルセンサー (外付け)
このセンサは外付け対応のセンサですので、I2C拡張コネクタにセンサを接続することでデータが出力されるようになります。
測定温度範囲の広い「熱電対」を使用した温度センサですので、冷蔵庫の庫内温度からてんぷら油の温度など幅広く温度を計測することができます。”HotJunction”の値が測定対象となる「測温接点を取り付けた場所」の温度、”ColdJunction”が基準接点の温度です。ADCは内部AD変換器の値が出力されます。通常、”HotJunction”の値を測定値として利用します。
  *測定対象物が低温の場合、”HotJunction”の温度は基準接点の”ColdJunction”の温度よりも低くなりますが、”HotJunction”として計測します。低温の測定でも”ColdJunction”を使用するわけではありませんので、ご注意ください。
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”MCP9600″,”timestamp”:5652.84,”HotJunction”:{“val”:16.06},”ColdJunction”:{“val”:29.25},”ADC”:{“val”:0}}

9)BMX055  9軸モーションセンサー(外付け)
このセンサは外付け対応のセンサですので、I2C拡張コネクタにセンサを接続することでデータが出力されるようになります。
前述の6)BMX160と同様に9軸のモーションデータを計測できますが、センサを外付けにすることで取付の自由度が高まります。狭い場所や、ロボットアーム先端のフランジ部などで他のデバイスの妨げにならないように取り付けが必要な場合は外付けセンサを活用してください。
データフォーマット:
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”BMX055″,”timestamp”:5632.84,”acc”:{“val”:[0.245,0.157,9.957]},”gyro”:{“val”:[-0.156,0.049,-0.103]},”mag”:{“val”:[535,55577,32532]}}

10)MPR121 タッチセンサー (外付け)
このセンサは外付け対応のセンサですので、I2C拡張コネクタにセンサを接続することでデータが出力されるようになります。
静電式のタッチセンサーで、0 ~ 11までの12本の端子が出ており、12本それぞれに「触れた時」「離した時」にデータが出力されます。下記の例では端子4番に「触れた時」に”touched”、「離した時」に”untouched”が出力されます。
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”MPR121″,”timestamp”:16190.52,”pin”:4,”state”:”touched”}
{“device”:”preMSM”,”id”:”2D7E”,”sensor”:”MPR121″,”timestamp”:16789.02,”pin”:4,”state”:”untouched”}

 

HPにPC側のサンプルプログラム(pythonで記述)を掲載しています。

(python, processing等での簡単なプログラム例をHPで。プロセッシングを使って加速度センサの表示デモソフトを作る)→事例集として