温湿度センサー(DHT22)を試してみる

センサーが到着!

アマゾンからセンサー一式が到着しました。

テンション上がってきた。ヒャッハー。

ということでまずは、温度センサーを試してみたいと思います。これが温湿度センサーのDHT22です。赤いです。

温湿度センサーをラズパイに接続

DHT22にはピンが3本生えてます。上から DAT、VCC、GNDとなっています。

ここで注意しなければいけないのは、センサー単体だとピンが4本のです。その場合は、4.7KΩの抵抗を接続する必要がありますが、この写真のように3本ピンの場合には、その抵抗が内蔵されているので、接続する必要がありません。

ここで、基本ですが、VCCは電源のプラス、GNDは電源のマイナスに接続します。この辺りの詳細は、ココを参照してみてください。とてもわかりやすく説明してくださっています。

DHT22のデータシートをみてみましょう。

引用元:https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf

電源は3.3Vから5.5Vだそうです。ただし推奨は5Vのようなので、GPIOは2番ピンか4番ピンに接続します。

あとは、GNDを6番ピンに接続し、DATは7番ピンに接続して、GPIO4からデータを取得するようにします。

GPIOへの接続に関してはココを参考にさせていただきました。

まずはブレッドボードを使わずに直結してみます。間違えるとラズパイやセンサーが壊れる時があるらしいので、慎重に接続しました。あと、電源もなるべくなら切っておいたほうがいいということだったので、電源OFF状態でやりました。

GPIO部分はこんな感じです。2番、6番、7番ピンにそれぞれVCC、GND、DATを接続しました。そして電源を入れました。

Pythonで動作確認

接続が終わったので、センサーの動作を確認しましょう。

環境

  • Raspbian GNU/Linux 10.3
  • Python 3.7.3

必要に応じてPythonの仮想環境が作成されていることを前提とします。私はvenvで環境を作りました。

jupyter notebookをインストール

動作確認はjupyter notebookで実施しようと思っているので、jupyter notebookをインストールします。

$ pip install jupyter

venv等で仮想環境を作成している場合は、jupyter notebookにkernelをインストールします。下記は、仮想環境名がagriの場合の例です。仮想環境を作ってない場合は、この手順は不要です。

$ ipython kernel install --user --name=agri --display-name=agri

Adafruit_DHTをインストール

DHT系のライブラリをインストールします。詳細な手順はココを参照しながらやりました。

$ pip install Adafruit_DHT

これで、DHT22の制御が簡単にできるようになります。

温度と湿度を取得

jupyter notebookを起動します。

$ jupyter notebook --ip=XXX.XXX.XXX.XXX --no-browser

ラズパイ上でやっている場合は、ipとno-browserの指定は不要です。指定するときは、ipのところは適宜変えてください。

ブラウザで、jupyter notebookにアクセスします。アクセスするURLは起動時にコマンドラインに出力されます。

適宜kernelを選んでノートを起動し、下記スクリプトを実行します。

まずは、必要なライブラリをインポートします。

import Adafruit_DHT as DHT
from time import sleep

次に、センサーのタイプを指定します。今回はDHT22を指定します。

SENSOR_TYPE = DHT.DHT22

DATを繋いだGPIOの番号と、温度を取得したい時間間隔を指定します。

DHT_GPIO = 4
INTERVAL = 5

指定した時間間隔ごとに、温度と湿度を、DHT.read_retryで取得します。取得した結果を表示します。

try:
    while True:
         h,t = DHT.read_retry(SENSOR_TYPE, DHT_GPIO)
         print("Temp= {0:0.1f} deg C". format(t))
         print("Humidity= {0:0.1f} %". format(h))
    except KeyboardInterrupt:
         print("interrupt")
         pass

実行した結果は、以下のようになります。

Temp= 27.4 deg C
Humidity= 42.5 %
Temp= 27.4 deg C
Humidity= 42.5 %
Temp= 27.5 deg C
Humidity= 64.4 %
Temp= 27.6 deg C
Humidity= 68.1 %
Temp= 27.8 deg C
Humidity= 68.9 %
Temp= 27.9 deg C
Humidity= 56.6 %
Temp= 27.9 deg C
Humidity= 44.6 %

センサーの上に指を置くと、湿度と温度が上がりました。指を離すと元に戻ります。うまく動いているようです。

ミニブレッドボードで接続

他のセンサーも接続したいので、ミニブレッドボード上でシステムを構築していきたいと思っています。なので、直結ではなくミニブレッドボード経由での接続で、センサーが正常に動作するかを試しました。

ジャンパーワイヤー をオスメスに変えて、ミニブレッドボードに接続しました。

このミニブレッドボードの内部接続はこんな感じになっているので、それに合わせてジャンパーワイヤー を接続しました。

接続の際は、ラズパイの電源をシャットダウンして行いました。動作確認したところ、問題なく動作しました。

すごく簡単に動きました。楽しいですね。

農場の温度を通知してくれるラズパイを想像してワクワクしています。スマート農業の第一歩ですね。

コメント

  1. […] それぞれのテストの際のコードの詳細は、DHT22、LM393、GY-30のそれぞれを参照してください。 […]

タイトルとURLをコピーしました