DS18B20 水温計

暑いです.
自分が暑いのはエアコンでなんとかなりますが,5匹しかいないとはいえ家の水槽の熱帯魚は温度が上がりすぎると死んでしまうので,水温を管理しないといけない季節になってきました.
今の熱帯魚たちは去年の秋頃からいるので,夏を越せるかどうか心配です.

水槽にはRaspberry Pi Zero を使った定期撮影カメラをそばに置いてあるので,せっかくなのでこれを使って水温の監視をはじめてみました.

防水の温度センサとしては,DS18B20 をステンレスの容器に入れて簡単に防水にしたものがよく売られているようなので,これを1つ買って,Raspberry Pi ZeroのpHAT にしてみました.
1-Wire接続なので,調整も必要なくすぐに使えます.

基板としては,aitendoのRaspberry Pi向けユニバーサル基板 を,Pi Zeroのサイズに切って使いました.カッターで両面に溝を何度も切って折ると,わりと綺麗に折れました.
GPIOを1つしか使わないので,上にさらにpHATを載せられるよう,スタック可能な2x20のピンソケットをつけています.

センサーから出ている銅線は,赤色がVCC, 緑色がGND, 黄色が信号線のようなので,赤色を3V3, 黄色をGPIO4, 緑色をGNDにつなぎ,GPIO4は3V3に4.7kΩでプルアップをするだけの配線です.

あとは,raspi-configで,1Wire interfaceを有効にしてあげると,

$ cat /sys/bus/w1/devices/28-000008a19563/w1_slave
ab 01 4b 46 7f ff 05 10 92 : crc=92 YES
ab 01 4b 46 7f ff 05 10 92 t=26687

と,t=26687ということで26.687℃であることがわかります.
これをmosquitto_pubでMQTTサーバに投げてあげるシェルスクリプトをcronで回せば監視の仕掛けの出来上がりです.

プローブを水中に入れて,しばらく様子見です.あまり温度が上がるようなら,Nature Remoを使ってエアコンで室温を下げるような仕組みにしようかなと思います.