冬場はPC暖房で過ごすgoldear@goldear820です。
前回ススメ①で水槽の水温を測定できるようにしましたが、今回は水槽を配置している部屋の温度・湿度を測定できるようにします。
私の水槽は25x17x21cmの小型水槽なので、特に室温の影響を受けやすいです。そのため水温と合わせて、一緒に室温をチェックしていきます。
湿度は今回用いるセンサに付随する機能で、スマートアクアリウムとしてはオマケ機能です。
目次
全体図
簡易的な全体図になります。
スマートアクアリウムはRaspberry Piをベースに実装していきます。
Raspberry Piの持つGPIO経由で各種センサと接続してセンサ情報を収集、Raspberry Pi自身にセンサ情報を処理させます。
今回は温度&湿度センサDHT22を使って、機能を追加していきます。
今後、機能拡張を行うごとに全体図は更新していきます。現時点で実装予定の機能は以下のとおりです。
【実装済み】
・水温測定
【未実装】
・室温/湿度測定 ← 今回実装
・CO2測定
・TDS(Total Dissolved Solids)測定
・センサ情報のOLED表示
・映像ストリーミング
・Webサーバにセンサ情報公開
準備物
室温&湿度センサ DHT22
購入したのはおそらく中華製のOSOYOO DHT22です。Amazonで探せば、似たような製品がたくさん出てくるので、その時の最安で選んでもらって構いません。
注意点としては、DHT22センサ単体のもの、DHT22センサ+プルアップ抵抗基板のものがあります。センサ単体のものは別途抵抗を用意する必要があります。
私は面倒だったので、基板付きのものを購入しました。
以下、DHT22のデータシートです。
DHT22 Specification datasheet
Raspberry Pi
手持ちで余っていたRaspberry Pi ZERO WHを使用します。Picoは特殊ですが、ラズパイシリーズであればどれでも動かせます。
Raspberry Pi ZERO WHを使っていますが、正直なところ非力なので Raspberry Pi 5に乗り換えたいところ。
ブレッドボード & ジャンパワイヤ
DHT22とラズパイのGPIOをジャンパワイヤで接続しても良いですが、今後機能拡張予定なのでブレッドボードも用意しておいたほうが良いです。
設定
ラズパイの初期セットアップは上記記事を参考にしてください。
室温&湿度センサDHT22の通信方式が1-Wireとは異なる「非同期シリアル通信」のためラズパイの設定は不要です。
実装
Adafruit社が提供する「CuicuitPython_DHT」ライブラリを利用して室温&湿度を取得します。
上記コマンドで、ライブラリをインストールしておきます。
#!/usr/bin/env python3 import time import board import adafruit_dht def main(): # Create Instance DHT22 d_dht22 = adafruit_dht.DHT22(board.D17) while True: try: # Get temperature & humidity temp = d_dht22.temperature humi = d_dht22.humidity # Disp print("室温:" + str(temp) + "℃, 湿度:" + str(humi) + "%") except RuntimeError as e: print("Reading from DHT failure: ", e.args) time.sleep(5) if __name__ == "__main__": main()
全体図に沿って、DHT22のデータ線はGPIO17と接続しています。
ピンアサインを変更する場合9行目を修正してください。
※ラズパイ側のピンアサインは以下を参照
5秒毎にDHT22のセンサ値を取得して、コンソールに出力するソースコードになります。
動作確認
室温:26.8℃, 湿度:35.1%
実行して、室温&湿度が出力されれば、正常に動作しています。
まとめ
スマートアクアリウムと直接関係が無いような有るような室温&湿度を確認できるようにしました。
ラズパイと各種センサの接続、使い方を学べるといった点で、無関係でも初めは色々チャレンジして良いかもしれないです。
・水温測定の実装
・TDS測定の実装
コメント