ラズパイ(Linux) からUSB温度計で温度を測る


部屋が寒い のでいろいろ調べた。
うちではラズパイ が常時動いているので、これで温度が測れれば良い。
1-wire で動くDS18B20 などの温度センサーを使って電子工作する方法もあるが(前にやった)、はんだ付けとか 1-wire 設定とか結構面倒くさい。

今回はもっとお手軽に USB温度計 thermometer-528018 を使ってみる。980円ぐらい。

USBで挿してlinuxから温度を取得できる。
Windowsでも専用アプリで温度は取れるけれど使い勝手は悪い。
Windowsは、ここからTEMPer用をダウンロード 現時点ではv26が最新

USBなので、Raspberry Pi の様に I/O ポートがないLinuxマシンでも温度が測れるので、サーバー室なんかに置いても良いかも。

gitからソースをクローンする。
libusb-dev がないとエラーになる。gcc は既に入っていればインストールの必要なし。
chmod u+s temper で権限を付与しないと root でしか使えなくなるので権限を追加しておく。
実行すると、日時と温度を表示する。

$ sudo git clone git://github.com/bitplane/temper.git
  Cloning into 'temper'...
   :
$ cd temper/
$ sudo apt-get install gcc libusb-dev
$ sudo make
   :
$ sudo chmod u+s temper
$ ./temper 
28-Feb-2018 10:46,14.387618 

TIPS.1 ローカルタイムにする

そのままだと日付がグリニッジ標準なので、タイムゾーンに合わせる

temper.c
- utc = gmtime(&t);
+ utc = localtime(&t);

TIPS.2 ラズパイの罠

ラズベリーパイのUSBポートに直挿しした場合、本体の温度が回り込んで5℃ぐらい温度が高くなる。
100均のUSB方向転換器なんかを間にかませると大丈夫。

後は cron から呼び出して温度を見て IFTTT に投げるなり、シェルスクリプトでなんやかやするなり応用は無限大 ∞ 。

その他参考になりそうなサイト

Ambient
IOTデータの可視化サービス。ライブラリを入れてちょっと修正の必要はあるけれど、グラフ化することができます。
Google Homeにセンサーの値を言ってもらう
言ってもらうと嬉しいよね。
Raspberry Pi Zero用 赤外線 + 環境センサ 拡張ボード「RPZ-IR-Sensor」(端子未実装)
USBでなくてもこんなのもあります。ボード直付けなので、ボードの温度に影響されそうなのでキャリブレーションは必須かな?

単純にラズパイだけでCPU温度を測るには

cat /sys/class/thermal/thermal_zone0/temp

の値を 1/1000 すればいい。結構熱いのでビックリするかも