こんにちは,ちゆりです。
以前流行りに乗っかって,Raspberry Piを購入したのですが,特に何をするでもなく放置していたので,そろそろ動かしてみようと思い立った。
「そうだ,温度でも測定してみよう。」
そこで,手頃な価格(1000円程度)でGPIOpinを使わない(ハード系は苦手なため)温度モジュールを探してみた。あるじゃん。いいやつが。しかも,USBで動くんだってよ。
USB温度計! USB thermometer-528018
価格帯は約1000円!!
GPIOを使わずにUSBで温度を測定できるので非常に扱いやすいです。ラズパイに直挿しだとラズパイの熱が周り,温度が高くなってしまうので,USBハブをかませることをおすすめしますよ。

律儀にCDROMまで付いている(Windowsで使う場合)のだが,今回は使わないのでディスクブーメランとしてぶっ飛ばすか,カラスよけのために畑に吊るしといてください。
ラズパイでTEMPerを使う
さて,温度を測るためにもいくつかのコマンドを打って行きますよ。
難しくないから逃げないでね。
まずは,必要なライブラリをインストールしておきます。
もうすでに入っている方はこちらは,省略で構いません。
sudo apt-get install gcc libusb-dev
sudo apt-get install build-essential libusb-0.1.4 libusb-0.1.4-dev
次にgitからソースをクローンしていきます。
(どこかの誰かさんの開発のおかげで簡単に利用させていただきます。)
sudo git clone git://github.com/bitplane/temper.git
ローカルタイムへ修正
みなさんが苦手なviエディタの出番ですよ。このままでは,日付がグリニッジ標準なのでローカルタイムへと変更していきます。
cd temper
vi temper.c
:
44行目 utc = gmtime(&t);
→ utc = localtime(&t);
ついでに出力日付も変えておく
47行目 strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
→ strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);
いよいよビルド
あとはこのコマンドを打ってエンターキーを思いっきり叩きましょう。
sudo make
makeコマンドのあとになんかエラーが出てきた。
pcsensor.c:50:18: warning: ‘reqBulkLen’ defined but not used
[-Wunused-const-variable=]
const static int reqBulkLen=8;
ですが,これはざっと無視で構わない。
「temper」ってやつが作成されていたら問題ないです。
さて,実行してみようではないか。
./temper
・・・
。。。ん?応答が帰ってこないのだが。。
本当はこんな感じで応答が帰ってくるのだが..
2019-09-20 11:39:23,32.453729
TEMPerが動作しないとき
うーん。特に悪いことはしてないはずだが,温度が表示されないぞ。
READMEを読んでみる
困ったときは,READMEを読んでみよう。temperディレクトリ内にあるREADMEを開いてみる。
To allow non-root users access
==============================
1. Add the udev rule set in /etc/udev/rules.d/ using the 60-temper.rules
( 60-temper.rulesというudevルールを/etc/udev/rules.d/に配置)
2. Add a 'temper' group (using groupadd or edit the /etc/group file)
(groupadd or /etc/group fileを編集して'temper'グループを追加)
3. Add users to the 'temper' group
(ユーザーを'temper'グループに追加)
4. Reload the udev rules
udevcontrol reload_rules
(udevルールのリロードコマンド udevcontrol reload_rules)
5. Unplug and replug the TEMPer device
(TEMPerデバイスの抜去挿入)
しかし,これは,ルートユーザーでなくても実行できるために行う手順のようだ。試してみたが,特に動く様子はなかった。
で,結局
奇跡的に2機のTEMPerを購入していた僕は,もう1機のTEMPerに交換してみた。すると,どうだろう。温度が表示されたではないか。
てことで,個体不良か?と思ってのだが,実際そうではないらしい。
(venderID:productID = 413d:2107)のTEMPerは単純にgitのクローンだけでは動かないのだとか...。
じゃあそのvenderIDはどうやって確認するの?このコマンドで良い
lsusb
:
Bus 001 Device 007: ID 413d:2107
あぁ。見事にいわく付きのTEMPerを引いちまった。しかし,1機はこの難を逃れた。
では,413d:2107は使えないのか?そんなことはない。
いろいろ調べて動かせるようになったので,次の記事で紹介しようと思う。
追記2019/09/28
413d:2107
(venderID:productID)のセットアップはこちらの記事からどうぞ。

参考記事
- https://qiita.com/nekyo/items/bf5d22f3741e23d3679d
- https://tech-mmmm.blogspot.com/2017/10/amazonusbtemperraspberry-pi.html
もっといろんなモジュールを知りたい方におすすめ記事

コメント
コメント一覧 (2件)
[…] […]
[…] USB温度計『TEMPer』を使ってRaspberryPiで温度を測定する。 […]