みなさんは温度管理をどうやっていますか?
できることなら自作してIoTを自宅で自由にやりたいですよね。

今回はIoTが簡単にできるラズパイで温度のデータを取得して見たいと思います(◍•ᴗ•◍)♡ ✧*。

前回の記事では温度センサーを使いましたが、今回はラズパイでサーミスタからのアナログ値を読み取ってみたいと思います。
ラズパイにはADコンバーターがないのでADコンバーターの導入方法とサーミスタの活用をプログラムつきで詳しくご紹介します(ง°̀ロ°́)ง

温度管理はなんで重要?

このサイトでは自宅での水耕栽培方法をご紹介していますが、水の温度って植物の生育にかなり影響するのでちゃんと管理する必要があるんです( ಠωಠ)

季節によって温度が大きく変わります。

当たり前ですが、温度は季節によって変わります。真夏と真冬は野菜によってはもとも厳しいシーズンになります。。

夏の場合:酸素が不足しちゃいます。


夏は気温が嫌になるくらい上がりますが、温度が上がると水に溶け込んでいる酸素の量”溶存酸素濃度”がどんどん低下していきます(×_×;)

溶存酸素濃度と温度との関係を表したグラフ

こちらからデータを引用してグラフを作製しました。

冬の場合:寒すぎて野菜には厳しいかも。

野菜には適温があります。種の袋にかいてありますね。
真冬は気温が低すぎて野菜によってはうまく育ちません。

ラズパイのIoTで解決しよう。

ラズパイが温度を感知できれば、対応策は色々できます。
気温が高かったらエアーポンプを稼働して酸素を供給しましょう。
水耕栽培でエアーポンプを使うことにより適切に根に酸素を供給している様子。

気温が低かったらヒーターをつけましょう。

楽天へのリンク : GEX メタルオートヒーター SH160 【熱帯魚・アクアリウム/保温器具/ヒーター・サーモスタット一体型】

ラズパイにはGPIOがたくさんあるので、ACコンセントを自分で作れば制御できちゃいます。

ということで後は温度を測れればIoTを実現できます(๑•̀ㅂ•́)و✧
方法をご紹介しますね(〃’ω’)

ラズパイの温度測定のために準備するもの。

I2Cで通信できる便利な温度センサーもありますが、さすがに水温を測るために水没させることもできないのでサーミスタを使おうと思います(〃’ω’)

ということで使うのはADコンバーターとサーミスタです。
高機能なラズパイにADコンバーターがないのは残念ですね(×_×;)

お買い物リスト

今回使うADコンバーターとサーミスタについて簡単にご紹介します(◍•ᴗ•◍)♡ ✧*。

ADコンバーターMCP3002はどんなもの?

MCP3002の画像

MCP3002の特徴
  • 10bitの分解能を持つADコンバーターです。
  • 2CHついています。
  • データのやり取りはSPI通信で行います。
  • 価格はひとつ180円と安いです。

ちなみにこちらにスペックシートがあります。

サーミスターってどんなもの?

サーミスタは温度が上がると抵抗値が指数関数的に変わる素子です。

秋月電子のサイトに変換式が記載されていて、下記のような式になるようです。

サーミスタの抵抗と温度の変換式

今回使うサーミスタ
25度での抵抗値 : 10kOhm +/1 %
B定数(25~85度) : 3435K +/-1 %
とのことです。

グラフにしてみました。
サーミスタの特性 温度が変わると抵抗値が変わる様子を表している

サーミスタの抵抗値から温度を求めるには?

サーミスタの抵抗と温度の変換式を変換して温度を求められる式にします。
まずは温度の部分からeを外して、
サーミスタの抵抗と温度の変換式。温度の式に変換

最後に左辺に温度をおけば完成ですかね。
サーミスタの抵抗と温度の変換式

今回使うサーミスタは?

今回のサーミスタは水による腐食が防げそうなので選びました。
水温を測るので重要です(๑•̀ㅂ•́)و✧
みなさんも用途に応じて選んでくださいね。

回路の準備

それでは回路を組んで見ます。

回路構成はこんな感じです。
ラズパイでMCP3002とサーミスタを使った温度測定回路の回路図。

ブレッドボードにこんな風に差し込みました。

ラズパイにSPI通信でMCP3002をつないだ様子

CQ出版のサイトを見ているとローパスフィルターを入れているようなので真似して見ました。
4.7kOhmと100uFのキャパシタで作ったのでカットオフ周波数は0.3Hzくらいになっています。
DC値を見るのでこれくらいあれば十分そうですね。

プログラムの準備

まずはラズパイでSPI通信をできるようにします。そのあとプログラムを好きなところに置いてmakeしましょう。

まずはSPIの設定をしましょう。

このICを使うためにはラズパイでSPI通信ができるように設定する必要があります。
私の持っているRaspberry pi zero Wでの設定はラズパイでSPI通信を有効にするにはどうすればいい?でまとめていますので参考にしてください。

ADコンバーターMCP3002のクラスを準備

まずはADコンバーターのクラスを作ります。ADコンバーターを今後も汎用的に使いたいのでこのようにしました。

サーミスタのクラスを準備

あとは今回使うサーミスタをMCP3002のクラスを使って作ります。

メイン関数の準備

クラスの準備ができたのでMain関数を定義します。

最後にmakefile

最後にmakefileですね。SQLのライブラリは不要ですけどどうせあとで使うのでこのままにしておきます。。

作った回路とプログラムを検証してみました。

サーミスタを電気ポットで沸かしたお湯に浸してみました。
ラズパイでサーミスタを使って温度を測定している様子

実行画面で80度くらい出たのでうまくいっているようです。

まとめ

ラズパイでサーミスタを使った温度測定の方法を細かくご紹介しました。みなさんも自分でカスタマイズできる温度計作製にチャレンジしてください(◍•ᴗ•◍)♡ ✧*。

記事を読んでいただいてありがとうございます。この記事がいいなと思ったら下記のSNSボタンのクリックをお願いします。励みになります😁