ラズパイ+ds18b20センサーで6つの栽培容器の水温計測・グラフ化

水耕栽培なので夏になると栽培容器の水温が心配、水温が上昇して30度を超えてしまうと、野菜が枯れてしまいそうなので各栽培容器の水温を測ることにしました。

栽培容器は現在15個くらいありますが、とりあえずセンサーを6個つけてそのうち1個は一番下の水槽の水温を測りました。栽培容器の水温は15個中5個ほど計測します。

センサーで水温を計測して、ラズパイのInfluxDBに保存・Grafanaでグラフ表示してみます。

ラズパイ構築やInfluxDB・Grafanaの使い方インストールは以下の別サイトを参考にしてください。

自宅のIot化でLED照明オンオフ(Xiaomi LED)や玄関鍵の開閉(セサミ スマートロック)、壁スイッチのオンオフ、部屋の空気の状態を表示させたりしていますが、不満点は専用のアプリでないと操作できないこと。それと同じメーカーでないと他
自宅環境センシングの2回目の記事として今回はラズパイ(Raspberry Pi)にデータベースのInfluxDBを入れて将来的にセンシングしたデータをInfluxDB保存していきます。そして次回は、GrafanaというデータをWebで美しく
センシングしたデータを保存するInfluxDBは前回ラズパイに構築したので今回はGrafana+telegrafを入れて設定していきます。おまけとしてChromografとvcgencmdを使ってCPU温度やCPU使用率・ARMのデータを取

Raspi・InfluxDB・Grafanaのシステムを構築するまではちょっと面倒ですが後々楽しいのでぜひ挑戦してみてくださいね。

防水ds18b20センサーを使って水温計測

水温センサーに防水仕様のds18b20プローブがあるというので、買ってみました。

アマゾンにも売ってるけどebayのほうが安い

10本入で13ドル弱でした。↓ここで10本買ってみました。

もしくは、今考えるとモジュール付きのやつのほうが安定した計測ができるのかもしれません。↓

アマゾンにも売ってますが、5個セットで1000円~なのでちょっと割高で同じ中国から送られて来るのならばebayで買ったほうが良い気がしたのでebayにしました。

そして、あとで気がついたのですが、抵抗も必要とのことでこれもebayで買いました。0.99ドルでした。

ds18b20水温センサー配線

ラズパイでの配線方法などは以下のサイトを参考にさせていただきました。

ds18b20の配線は以下のようになっています。

線の色 役割
VCC
データ
GND

防水のds18b20センサー6個を以下のように配線しました。わかりやすくFritzingでかけなかったので3つだけ表示させています。↓

ds18b20センサーの赤と黒ケーブルをGNDに配線して、黄色を4.7KΩの抵抗を通して3.3Vにつなげました。黄色ケーブルはさらにGPIO4に接続しました。

ds18b20

実際にはこんな感じにした。↓ 3Dプリンタで簡易ケースを作って磁石で棚板の裏にくっつけました。

ds18b20

先は栽培容器の水の中に入れます。↓

ds18b20

ラズパイ全体は・・・かなりたくさんのパーツを付けてしまったので見にくくてすみません、赤枠の左側が上画像の回路、ラズパイには赤枠真ん中のように接続しました。

ds18b20

ちなみにラズパイ本体はほぼ隠れてしまっていますが水色枠のです。GPIOがたくさんさせるようにPHAT STACKを経由して接続しています。

PHAT STACK

PHAT STACKは上画像赤枠のGPIOをたくさんさせるハットです。ちなみに右側の緑色の基盤はUPS(無停電電源装置)というよりラズパイに電力が行かなくなったら安全にシャットダウンしてくれるmopi2です。後ほど紹介していきます。

ラズパイ設定

ラズパイで1-Wireをオンにする設定が必要です。

raspi-configで1-wireを有効にする

以下のような画面になる。

水耕栽培 水温 ラズパイ 設定

5 Interfacing Options

水耕栽培 水温 ラズパイ 設定

P7 1-Wire

水耕栽培 水温 ラズパイ 設定

「はい」を選ぶ

config.txtを編集

黄色のケーブルをGPIO4にしました。

動くかどうかテストしてみる

設定完了したのでテストします。以下、デバイスが無い場合。

センサーがある場合は以下のように「28-011437dd46aa」などとディレクトリができる♪

うまく表示されない場合はlsmodで1-Wireが認識されているかチェックしてみる。↓

同じGPIOに6本つなげる

1-Wireは同じGPIOに何個もつなげて良いようなので6個一緒のところにつなげる。

6本つなげたらこうなった。「28-・・・」が6個あるのでコピーしておく。

いくつか反応しなくなるときがある。w1_slaveの中身をみてみる。85000とデフォルト値?反応してない。センサーを温めたりしたら反応する時もあるけど無反応のときがほとんど。

t=85000で反応してない↓

どうやらMax4本だと?安定して計測できるみたい。

pythonで水温計測値をInfluxDBに投げる

以下のようなPythonスクリプトを作ってInfluxDBに取得した水温データを投げてみました。

スクリプト実行するとうまくいった♪けど85.0がたくさんでてきてちゃんと計測しないセンサーが半分ほど・・・

なんで?まぁ、いいか・・・

crontabで3分おきに計測値を取得

とりあえず定期的に計測してグラフ表示するようにしてみます。以下のようにしました。

しばらく計測してみて、ちゃんと計測しない85.0のセンサーを指でこすって温度を上げたり、ケーブルを抜き差ししたりすると数が減ったりちゃんと計測したりする。

違うスクリプトでやる。

ds18b20がちゃんと計測しないときがあるので、他のスクリプトでやったらちゃんと取得するかと思ったが無理だった。

Yesterday at Liverpool Makefest, which incidentally was great, I spoke to a young man who wanted to use the Raspberry Pi to control his petrol powered radio con...

これはうまくできなかった。

水温をグラフで表示してみる

Cronで三分おきに水温データをInfluxDBに保存してGrafanaで表示させてみました。↓

水温センサーは6本とPHセンサーについていた水温センサーと合わせて7本。以下のグラフでは「中右」のセンサーがたまにしかデータを取得できてない。こういう現象がけっこう起きてds18b20センサーはあまり良いセンサーではない?もしくは接続方法が悪いのかもしれません。

水温

水温 Grafana JSONファイル

水温を6個計測する機会はあまりないとは思いますが、上記のグラフのGrafana用JSONファイルをダウンロードできるようにしておきました。

水温.json

必要な方は↑こちらを右クリックして「名前を付けてリンク先を保存」を選んでダウンロードしてください。

水耕栽培の水温 まとめ

ds18b20センサーは気まぐれ

ds18b20センサーは気まぐれで全く計測しなかったり突然計測するようになったりで、扱いにくい。

もう少しちゃんと信頼性のある水温センサーを見つけたら試してみたい。

後日PHをラズパイで計測するHomeLab-pHというものをebayで買ってみたら水温センサーもセットでついていて、アイソレーターもセットだったのでアイソレーターのところにds18b20をつなげたら、アイソレーター無しよりもちゃんと計測するようになった。HomeLab-pHをつなげた様子も後ほど記事にしてみます。

ペルチェ素子で水槽を冷やす

各水耕栽培のトレーの水温を計測してグラフにすることができましたが、夏に向けて水温が急上昇するのを避けるためにペルチェ素子とCPUクーラーなどを使って水槽の水温を下げる仕組みを作っていきます。

出来上がった装置は以下のようなもの、水槽からポンプで組み上げてサンドにしたペルチェ素子で冷やして水槽に返します。(上の棚に磁石でくっつけています)

ペルチェ素子

なかなかうまくいきましたが、冷えるのが遅い・・・冷やした結果は8Lの水に対して1時間冷やして5度前後しか冷えませんでした。

次回詳しくみていきましょう。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする