Contents
USBRH は ストロベリーリナックス から発売されている温度・湿度測定 ユニットです.USB 経由でセンサーの値を取得できます.
USBRH の詳しい仕様については こちら を参照してください.
このページでは,USBRH の Linux 用ドライバを配布しています.
GNU General Public License ( GNU General Public License の翻訳 )に従います.
https://github.com/kimata/usbrh
Linux Kerel 2.6 以降で動作します.udev を使用していることを想定していま す.
開発は, Ubuntu Linux Kernel 3.11.0 で行っています.
$ make $ su - % sudo make install
ドライバをインストールした後,USBRH をパソコンに接続すると /proc/usbrh/[番号] というディレクトリが生成されます.[番号]は 0 から 始まり,接続される USBRH の個数が増える度に 1 ずつ増えます.
USBRH のセンサーの値はこの中にある以下のファイルを読み出すことで取得で きます.
- temperature
- 温度(C) を出力します.
- humidity
- 相対湿度(%RH) を出力します.
- status
- 「t:温度 h:相対湿度」の形式で,温度と相対湿度の両方の値を出力します.
$ ls -la /proc/usbrh/0 合計 0 dr-xr-xr-x 2 root root 0 2008-04-05 02:46 ./ dr-xr-xr-x 3 root root 0 2008-04-05 02:46 ../ -rw-r--r-- 1 root root 0 2008-04-05 02:46 heater -r--r--r-- 1 root root 0 2008-04-05 02:46 humidity -rw-r--r-- 1 root root 0 2008-04-05 02:46 led -r--r--r-- 1 root root 0 2008-04-05 02:46 status -r--r--r-- 1 root root 0 2008-04-05 02:46 temperature $ cat /proc/usbrh/0/temperature 30.05 $ cat /proc/usbrh/0/humidity 35.02 $ cat /proc/usbrh/0/status t:30.07 h:34.95
USBRH を接続しても /proc/usbrh が現れない場合は以下の点を確認してください.
下記のように lsusb を実行して,ID 1774:1001 のデバイスが表示される ことを確認してください.
$ su - # lsusb -d 0x1774:0x1001 Bus 004 Device 002: ID 1774:1001
下記のように lsmod を実行して,usbrh が表示されることを確認してくだ さい.
$ lsmod Module Size Used by usbrh 5636 0
- ドライバがデバイスを認識しているかどうか
dmesg を実行して,下記のように「USBRH device now attached to /dev/usbrh[番号]」という出力がある事を確認してください.
$ dmesg [ 6.377870] usb 1-1.4: USBRH device now attached to /dev/usbrh1
無い場合は,USBRH を一旦 PC から外し,再び接続してみてください.
make install によってドライバをロードしてから,デバイスを接続してくだ さい.デバイスを接続してからドライバをロードした場合,うまくデバイスを 認識できません.その場合,一旦デバイスを抜き差ししてください.
RRDtool などと組み合わせれば,温度と湿度の変化を簡単にグラフ化できま す.以下は,部屋の温度と湿度,そしてコンピュータ内の温度をプロットした ものです.
このドライバでは,USBRH についている 2 つの LED とセンサーに内蔵されて いるヒータを制御する事も可能です.
/proc/usbrh/[番号]/led に値を書き込むことで LED の制御が行えます.
$ sudo su [緑色の LED を点灯] # echo 1 > /proc/usbrh/0/led [赤色の LED を点灯] # echo 2 > /proc/usbrh/0/led [緑色と赤色の LED を点灯] # echo 3 > /proc/usbrh/0/led
/proc/usbrh/[番号]/heater に値を書き込むことで LED の制御が行えます.
$ sudo su [ヒータをオン] # echo 1 > /proc/usbrh/0/heater # cat /proc/usbrh/0/temperature 30.78 # cat /proc/usbrh/0/temperature 31.69 # cat /proc/usbrh/0/temperature 32.19 [ヒータをオフ] # echo 0 > /proc/usbrh/0/heater # cat /proc/usbrh/0/temperature 29.42 # cat /proc/usbrh/0/temperature 28.74
このドライバは,以下の情報に基づいて作成しました.
- USBRH に付いてくる,サンプルアプリケーション usbrhdemo/Project1.exe の表示
- SnoopyPro で取得した USB の通信ログ
- USBRH のセンサーチップ SHT11 の データシート
センサーの値を取得する際の通信ログを下記に示します.