警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : 「オムロン 環境センサ(USB)」からUSB通信を用いたデータ収集

対象製品: Armadillo-IoT G3Armadillo-X1

このHowtoでは、Armadillo-IoT G3 で 「オムロン 環境センサ」の「形2JCIE-BU01」からUSB通信を用いてデータ収集を行う手順について紹介します。
Armadillo-X1でも同様に動作させることができます。

オムロン 環境センサ 2JCIE-BU01

オムロン 環境センサ 2JCIE-BU01 (以下環境センサと記載)は、以下のセンサを搭載しています。

  • 温度
  • 湿度
  • 照度
  • 気圧
  • 騒音
  • 3軸加速度
  • eTVOC(総揮発性有機化合物濃度)

PC等(※)から電源を供給すると自動で各情報の計測を開始します。
※ PCの他、USB電源アダプタなどで代用することができます

USB接続したPC等からUSB経由でセンサーデータを習得することもできますが、BLE経由(アドバタイズ、又はGATT)での取得も可能です。
今回は以下の接続構成で、ArmadilloとUSB接続した1台の環境センサと通信を行います。

BU01_USB通信接続図

詳細な仕様につきましては、ユーザーズマニュアルをご確認ください。

USB接続した環境センサからデータを取得する

ArmadilloとUSB接続した環境センサからデータを取得します。
本Howtoでは例として、取得したデータをcsvに出力する方法をご紹介します。

環境センサと通信を行うための準備

環境センサと通信を行うため、Armadilloに環境センサをttyUSBデバイスとして認識させます。
Armadilloに環境センサをUSB接続し、[lsusb]コマンドでデバイス情報を確認します。

[armadillo ~]# lsusb
Bus 002 Device 003: ID 1e2d:005a
Bus 002 Device 002: ID 0424:3503 Standard Microsystems Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0590:00d4 Omron Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

環境センサが正常に接続されているならば、「Omron Corp.」という情報のデバイスが表示されます。
これが環境センサのデバイス情報になります。
このデバイス情報から「USB ID」(上記例では[0590:00d4])を確認します。

確認したUSB IDを「/sys/bus/usb-serial/drivers/ftdi_sio/new_id」に記入します。

[armadillo ~]# echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
usb 1-1: Detected FT-X
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0*

今回の例では、環境センサがデバイス「ttyUSB0」に割り当てられました。
このデバイス名はご利用の環境によって変化する場合があります。

イベント検知を用いたttyUSB割り当ての自動化

「/sys/bus/usb-serial/drivers/ftdi_sio/new_id」はrebootを行う度に初期化されるため、環境センサの挿入イベントをトリガとした自動化を行います。
本Howtoではudevのrulesファイルを用いて実現します。

以下のようにrulesファイルを作成します。

[armadillo ~]# vi /etc/udev/rules.d/10-2jcie-bu01-usb.rules

ACTION=="add", \
SUBSYSTEMS=="usb", \
ATTRS{idVendor}=="0590", ATTRS{idProduct}=="00d4", \
RUN+="/bin/sh -c 'echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"

rulesファイルに記載された各キーの役割について、以下に記載します。

  • ACTION:イベントを発生させたアクションの名前を照合します。
  • SUBSYSTEMS:一致するデバイスサブシステム名を検索します。
  • ATTRS:一致する{}内のsysfs属性を検索します。
  • RUN:実行するコマンドを設定します。

追加したrulesファイルを適用させます。

[armadillo ~]# udevadm control --reload

これによりUSB挿入や再起動後に、自動で環境センサが認識されるようになります。

ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
usb 1-1: Detected FT-X
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0*

データ収集プログラムを用いて環境センサからデータ取得

このHowtoでは、以下の処理を実行するCプログラムを使用します。

  • 引数から以下のデータを受け取り、USB通信設定を行う。
    • 環境センサが認識されているデバイス名(必須)
    • モード(必須)
    • csvファイルのフルパス(任意)
  • 引数のモードによって以下のデータ取得コマンドを作成
    • モード0:最新データ取得
    • モード1:メモリに保存されている全データ取得
  • データ取得コマンドを環境センサに送信し、レスポンスを待つ。
    タイムアウト1秒で10回までリトライを行う。
  • 引数にcsvファイルのフルパスがある場合、csvファイルにデータ出力。
    指定されていない場合、標準出力にデータ出力。

以下にサンプルプログラムとファイル構成を記載します。
https://download.atmark-techno.com/misc/howto_armadillo_2JCIE-BU01_GATT/2jcie-bu01-usb.tar.gz

  • 2jcie-bu01-usb
    • Makefile
    • common.h
    • data_output.c
    • data_output.h
    • main.c
    • sensor_data.c
    • sensor_data.h

Armadillo上で上記のファイルをダウンロードし、以下の手順でコンパイルして下さい。

[armadillo ~]# tar xzvf 2jcie-bu01-usb.tar.gz
[armadillo ~]# cd 2jcie-bu01-usb
[armadillo ~]/2jcie-bu01-usb# ls
Makefile  common.h  data_output.c  data_output.h  main.c  sensor_data.c  sensor_data.h
[armadillo ~]/2jcie-bu01-usb# make

コンパイルした実行ファイル(2jcie-bu01)を、以下のように引数を指定して実行します。

[armadillo ~]/2jcie-bu01-usb# ./2jcie-bu01 /dev/ttyUSB0 1 /home/atmark/memory_data-20190219.csv
Mode : Get Memory Data
Program all success.

今回は環境センサのメモリに保存されている全データをcsvファイルに出力します。
出力したcsvファイルは以下の仕様でデータ保存しています。

  • 1秒毎のサンプリング
  • 昇順

出力したcsvファイル例を以下に記載します。

[armadillo ~]# vi /home/atmark/memory_data-20190218.csv
Temperature, Relative humidity, Ambient light, Barometric pressure, Sound noise, eTVOC, eCO2, Discomfort index, Heat stroke
22.58,32.83,185,1011.579,53.40,0,402,67.23,16.97
22.58,32.83,183,1011.578,52.62,0,402,67.23,16.97
22.56,32.89,185,1011.580,52.92,0,402,67.21,16.98
22.53,32.92,183,1011.575,53.28,0,402,67.18,16.95
22.52,32.97,178,1011.572,55.28,0,402,67.17,16.95
22.51,33.00,176,1011.565,53.96,0,403,67.16,17.04
22.50,33.01,176,1011.563,53.39,0,400,67.15,17.03
22.50,33.01,174,1011.559,65.65,0,405,67.15,17.03
22.50,32.99,176,1011.558,54.71,0,400,67.15,16.93
22.50,32.95,180,1011.558,58.02,0,400,67.15,16.93
22.51,32.93,180,1011.557,88.59,0,400,67.16,16.94
...
カテゴリ: