Rasperry Pi に DHT22 を接続して温度・湿度を計測する
Raspberry Pi に DHT22 (AM2302) を接続して温度・湿度を計測してみようと思います。
DHT22 (AM2302) について
DHT22 (AM2302) は Arduino や Raspberry Pi で電子工作するときには非常にポピュラーな温湿度計のようです。
秋月電子や Amazon で様々なものが購入できますが、今回は Amazon でこちらを購入しました。
データシートはこちらになります。
Raspberry Pi との接続
Raspberry Pi と DHT22 を以下のように接続しました。
RPi | DHT22 |
---|---|
5V | VCC |
GND | GND |
GPIO 18 | DATA |
ライブラリのインストール
DHT22 を使用するためのライブラリはいくつかあるようですが、今回は adafruit-circuitpython-dht を使用しました。
必要となるパッケージインストールします。
sudo apt-get install libgpiod2
Python の仮想環境を作ります。
python -m venv .venv
. .venv/bin/activate
adafruit-circuitpython-dht
をインストールします。
pip install adafruit-circuitpython-dht
温度・湿度の計測
とりあえず、サンプルコードを実行してみます。
$ python dht_simpletest.py
Temp: 79.5 F / 26.4 C Humidity: 56.8%
Checksum did not validate. Try again.
A full buffer was not returned. Try again.
Temp: 79.5 F / 26.4 C Humidity: 56.8%
Checksum did not validate. Try again.
Checksum did not validate. Try again.
Temp: 79.5 F / 26.4 C Humidity: 56.9%
Temp: 79.3 F / 26.3 C Humidity: 56.9%
Temp: 79.5 F / 26.4 C Humidity: 57.1%
Temp: 79.5 F / 26.4 C Humidity: 57.1%
Temp: 79.5 F / 26.4 C Humidity: 57.1%
A full buffer was not returned. Try again.
Checksum did not validate. Try again.
Temp: 79.3 F / 26.3 C Humidity: 56.9%
Temp: 79.3 F / 26.3 C Humidity: 57.0%
Temp: 79.3 F / 26.3 C Humidity: 57.0%
Temp: 79.3 F / 26.3 C Humidity: 57.0%
Temp: 79.3 F / 26.3 C Humidity: 57.2%
... (snip) ...
難なく、それらしき温度・湿度を取得することができました。
最初、3.3V に接続していたのですが、それらしき値は取得できるもののエラーが頻発していました。
以下のような記載を見つけたので 5V に接続したところ、エラーの発生率は明らかに減少しました。
Likewise, it is fairly easy to connect up to the DHT sensors. They have four pins
- VCC - red wire Connect to 3.3 - 5V power. Sometime 3.3V power isn't enough in which case try 5V power.
- Data out - white or yellow wire
- Not connected
- Ground - black wire
引用: https://learn.adafruit.com/dht?view=all
サンプルコードにはちょっと気になるコメントが記載されていましたが、私の環境では use_pulseio=False
なしで動作しました。
you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
This may be necessary on a Linux single board computer like the Raspberry Pi,
but it will not work in CircuitPython.
まとめ
安価で入手しやすい DHT22 を Raspberry Pi を接続して温度・湿度を計測することができました。サンプルコードも非常にシンプルなので、システムへの組み込みも容易にできると思います。
Discussion