スマートアクアリウムのススメ② Raspberry Pi で 室温&湿度測定【DHT22】

冬場はPC暖房で過ごすgoldear@goldear820です。

スマートアクアリウムのススメ① Raspberry Pi で 水温測定【DS18B20】
北海道で買ってきたまりもをこぢんまりと育てるつもりが、どんどんアクアリウムにハマって後戻りできない状態のgoldear@goldear820です。 アクアリウムで非常に重要になってくるのが「水温管理」ですが、我が家はNASが24時間稼働して...

前回ススメ①で水槽の水温を測定できるようにしましたが、今回は水槽を配置している部屋の温度・湿度を測定できるようにします。

私の水槽は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に乗り換えたいところ。

Raspberry Pi 5 発表のご案内 - Raspberry Pi Shop by KSY

ブレッドボード & ジャンパワイヤ


DHT22とラズパイのGPIOをジャンパワイヤで接続しても良いですが、今後機能拡張予定なのでブレッドボードも用意しておいたほうが良いです。

設定

Raspberry Pi Zero WH でGPSロガーを作ってみる - 第01回 スタートアップ編
このブログで旅行のお供にGPSロガーアプリをオススメしてきたgoldear@goldear820です。 以前から気にはなっていたものの手を出さずにいた自作GPSロガーだったのですが、仕事でLinuxソフトに触れる機会が多くなり、慣れるという...

ラズパイの初期セットアップは上記記事を参考にしてください。

室温&湿度センサDHT22の通信方式が1-Wireとは異なる「非同期シリアル通信」のためラズパイの設定は不要です。

実装

GitHub - adafruit/Adafruit_CircuitPython_DHT: CircuitPython support for DHT11 and DHT22 type temperature/humidity devices
CircuitPython support for DHT11 and DHT22 type temperature/humidity devices - GitHub - adafruit/Adafruit_CircuitPython_D...

Adafruit社が提供する「CuicuitPython_DHT」ライブラリを利用して室温&湿度を取得します。

pi@raspberrypi:~/work/smart_aquarium/script $ pip install adafruit-circuitpython-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行目を修正してください。

※ラズパイ側のピンアサインは以下を参照

Raspberry Pi Documentation - Raspberry Pi OS
The official documentation for Raspberry Pi computers and microcontrollers

5秒毎にDHT22のセンサ値を取得して、コンソールに出力するソースコードになります。

動作確認

pi@raspberrypi:~/work/smart_aquarium/script $ python dht22.py
室温:26.8℃, 湿度:35.1%

実行して、室温&湿度が出力されれば、正常に動作しています。

まとめ

スマートアクアリウムと直接関係が無いような有るような室温&湿度を確認できるようにしました。

ラズパイと各種センサの接続、使い方を学べるといった点で、無関係でも初めは色々チャレンジして良いかもしれないです。

・水温測定の実装

スマートアクアリウムのススメ① Raspberry Pi で 水温測定【DS18B20】
北海道で買ってきたまりもをこぢんまりと育てるつもりが、どんどんアクアリウムにハマって後戻りできない状態のgoldear@goldear820です。 アクアリウムで非常に重要になってくるのが「水温管理」ですが、我が家はNASが24時間稼働して...

・TDS測定の実装

スマートアクアリウムのススメ③ Raspberry Pi で TDS測定【KS0429】
Raspberry Pi のセンシングにハマっているgoldear@goldear820です。 今回はTDS(Total Dissolved Solids 総溶解固形物)をラズパイで測定するのですが、しっかり意味を理解していないと全く意味の...

コメント