水槽の水温を監視したい
今年の夏(2020年)は暑かったですね・・・
水槽のある部屋はエアコンが無かったので常に水槽が心配でしたw
水槽に温度計はあるものの、常に監視していないので知らぬ間に高温になっていても気づかないケースも多いはず・・・
水温を常にチェックして閾値を超えた場合、自動的に通知してくれるシステムがあったら便利ですよね?
ということでラズパイを使って水温監視システムを作成してみようと思います。
用意するもの
Raspberry Pi 4
以前購入したラズパイ4を使います。
初期設定などは以下の記事を参考にしてみてください。
DS18B20
防水タイプのデジタル温度センサーです。
1wireというラズパイでも利用できるインターフェース対応で電源電圧は3.0~5.5V、測定温度範囲は-55℃~+125℃、精度は ±0.5℃(-10℃~+85℃) と優秀です。
4.7KΩの抵抗
温度センサーとラズパイを接続する際に必要です。
その他
ブレッドボード、ジャンパーピン、半田ごてなど必要です。
また、配線を接続するにあたりラズパイのGPIOに配線を接続するのですが以下のパーツが必要です。あまり見かけない部品なので用意するのに手間取りました・・・
amazonから購入すると中国から郵送されますが、概ね2~3週間で届きます。
お急ぎなら秋月電子がおすすめです。
温度センサーの設定方法
まずラズパイ~温度センサー間の配線を作成しましょう。
温度センサーの配線
左側の赤色LEDは前回装着したCPUファンです(作成ソフトにファンが無かった・・・)
DS18B20には「GND」「DQ」「VDD」の3本の配線があります。
配線のポイントは以下の通りです。
- GND(黒)はラズパイのGNDへ接続
- DQ(黄)はラズパイのGPIO4pinへ接続
- VDD(赤)はラズパイの3.3Vへ接続
- DQとVDDの間に4.7KΩの抵抗をブリッジする
図は完全にラズパイ3だけど気にしない!
▼実際の配線。ラズパイ側のGPIOピンは2.54mmのコネクタが必要です。
配線が完了したら次はラズパイ側の設定を行いましょう。
1-Wireを有効にする
▼下記のコマンドでコンフィグレーションツールを呼び出します
$ sudo raspi-config
▼「5 Interfacing Options」を選択
▼「P7 1-Wire」を選択
▼「はい」を選択して1-Wireを有効化しましょう
▼有効化されたとメッセージが表示されます
▼最初の画面に戻ったあと「FINISH」を選択すると再起動するよう求められます
ラズパイが再起動したあと、再びSSHにてアクセスしましょう。
温度測定してみる
▼下記Dirへアクセスします
$ cd /sys/bus/w1/devices/
▼28-************というディレクトリが作成されています
$ ls
28-3c01d60799f5 w1_bus_master1
該当Dirが存在しない場合は配線をミスしている可能性が高いです。見直しましょう。
▼移動しましょう
$ cd 28-3c01d60799f5
▼ファイルを一覧表示させると「w1_slave」というファイルがあります
$ ls
alarms driver eeprom ext_power hwmon id name power resolution subsystem temperature uevent w1_slave
▼ファイルの中身を参照するとt=*****という記載があります。これが温度です。
$ cat w1_slave
9f 01 55 05 7f a5 81 66 b4 : crc=b4 YES
9f 01 55 05 7f a5 81 66 b4 t=25937
記載は1000倍になっているので実際は「25.9℃」ということです。
大体部屋の温度と同一なので精度は高そうですね。
今回はひとまず温度をラズパイで測定できるところまで確認しました。
次回は測定結果をpythonで整形、出力したいと思います。
まとめ
- ラズパイと温度センサーがあれば比較的簡単に温度を測定できる
- 半田ごてを使ったり配線技術がちょっと必要
- プログラムを少し欠ければ、できることの幅が広がりそう
コメント