[ARM][SBC][電子工作はなし] USBタイプの温湿度気圧計を購入してみた。

ARMPC、Gadgetzabbix
25372712958_12d5844418_m.jpg

はじめに

メリー・クリスマス!

IoTしてますか?
Raspberry PiとかARM板とかは購入していますが、GPIOピンなどは全く活用していない筆者です。

以前はOrange PiにStrawberry LinuxのUSB温度・湿度計モジュールを活用していたのですが、最近のLinuxではソースがコンパイルできなくなっていたこと、また、ソースを配布されていたWebサイトが閉鎖してしまったため、ちょっと困っていました。
代用品を探していたのですが、ちょっとebayで気になっていたのを見つけたので購入してみました。

以前にも同じようなことしてた

ちなみに以前のもの。

USB温度・湿度計モジュール・キット – USBRH – ネット販売

今回は

で、今回購入したものは以下のものです。

DogRatIan’s Products – USB-PA TypeA (BME280)

本当かどうか分かりませんが、結構細かくデータを計測できるようです。

Operating Temperature (CPU):-20°C ~ +70°C
Connection to PC: USB (CDC Virtual COM port)
Power: USB Powered
Pressure Accuracy:
(0-65°C, 300 to 1100 hPa) 
+/-1 hPa (+/-100 Pa)
Pressure Range: 300 – 1100 hPa (30000 – 110000 Pa)
Temperture Accuracy:+/-1°C
Humidity Accuracy:+/-3 %RH

対応OSはWindows、MacOS X、Linuxに対応しており、それぞれプログラムおよびソースファイルが配布されています。

私が使用したのはGithubに公開されているLinux向けのソースファイルになります。

DogRatIan/USB-Sensor-OpenSource: Example programs for my USB sensors.

実際にやってみた

ちなみに使用してみるとこんな感じで取得できると思います。
今回試してみた環境は以下の通りです。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0 -a
22.3
43.3
102331.7
SENSOR
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0
102327.0
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0 -t
22.1
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0 -h
44.1
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0 -p
102339.7
kometch@ntp01:$ ./get_pa_linux -d /dev/ttyACM0 -a -j
{ "temperature": 21.9, "humidity": 44.3, "pressure": 102334.9, "name": "SENSOR" }

一部Helpと違う応答を返すので、後ほどソースを確認してみようと思います。

ちなみに、Zabbix-agentから、このプログラムを呼び出すときは、そのままだとNaNを返すだけなので、「SUID」を設定するようにしましょう。

  • 気圧についてはこのままでは“Pa”の単位で出力されてしまうので、ソースを一部修正して“hPa”で出力するようにしました。
  • 湿度についても10%ほど低く測定されてしまうので、測定した値に10%ほど加算するように修正。

本当はハードウェア側で校正する方が良いです。

こちらが修正したソースファイルになります。

kometchtech/USB-Sensor-OpenSource: Example programs for my USB sensors.

fix main.cpp · kometchtech/USB-Sensor-OpenSource@4a77d54
* Added a process to divide the acquired value by 100 to make the acquired barometric pressure value in hPa units. * Sin...

あと、このままではhPaの単位で取得しても、自動的に単位がまるめられてしまうので、以下のファイルも修正します。

Zabbix 4.0.0から単位計算を除外することが可能になったので、この編集は不要になりました。

テンプレートやアイテム設定などを適切に設定すると、以下のように正常に値が取得できるようになると思います。

Screenshot-2017-12-24 zabbix

ちなみにですが、BME280というSensor自体は結構安く売っており、秋月電子などでも購入することが出来ます。また、ブレッドボードも合わせて購入してくれば、1,000円ぐらいで同じような構成が出来るはずです。安く済ませたい場合はそちらを検討することをおすすめします。使用できるソースプログラムなどについては、Webを検索することでたくさん見つけることが出来ると思います。

2019/07/09:追記

Zabbixへの投入が前提なら、ソースファイル側で気圧をhPaにするようにしなくても、Zabbixでの「保存前処理」で乗算を行っても良いかもしれません。

また、Zabbixの単位計算についても、4.0.0から予め除外できるようになっているので、こちらもphpファイルへの編集は不要になりました。

2020年2月20日:追記

zabbixで値を取得する設定方法

今更ですがZabbix側の設定方法を書いていなかったので書いておきます。

Zabbix agent側はUserParameterでUSB温湿度計の値を直接取得するようにしています。

item.keyで設定する引数をそのままコマンドに渡す形です。

UserParameter=get_pa_linux[*],/usr/local/bin/get_pa_linux -d /dev/ttyACM0 --$1

Zabbix Server側の設定は以下のような感じで行っています。

2021年5月30日:追記

今更ですが使用しているソースにて直接hPa単位で出力できるようになっているので、上記にある取得した値の変換は不要になっているかと思います。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました