DHT22 (AM2302) は温度と湿度が測定できる、1線式の温湿度センサーです。
温度センサーDS18B20も1本のデータ信号線だけで通信ができますが、DHT22は1-Wire方式ではないため、センサーからデータを取得するためのプログラムを作る必要があります。インターネット上で公開されているライブラリを使用すると簡単です。今回は例としてAdafruitのライブラリを使用することにします。(参考ページ)
用意するもの
・DHT22
・抵抗 4.7KΩ
・ブレッドボード、ジャンパーワイヤー等
以下のように配線します。DHT22の1ピン(向かって一番左側)を3.3V、2ピンをGPIO 22、3ピンは未接続、4ピンをGNDに接続します。DHT22の1ピンと2ピンの間に4.7KΩの抵抗を接続します。
GPIO 22は例ですので、別のGPIOポートでもかまいません。変更した場合はサンプルプログラムのDHT_GPIOの値を変更してください。
必要なPythonのパッケージをインストールします。
準備ができたら、測定用のプログラムを用意します。テキストエディタなどで作成します。
ファイル名:dht22.py
プログラムを保存したらパーミッションを設定し、プログラムを実行します。
これでセンサーから取得した値が表示されました。
温度センサーDS18B20も1本のデータ信号線だけで通信ができますが、DHT22は1-Wire方式ではないため、センサーからデータを取得するためのプログラムを作る必要があります。インターネット上で公開されているライブラリを使用すると簡単です。今回は例としてAdafruitのライブラリを使用することにします。(参考ページ)
用意するもの
・DHT22
・抵抗 4.7KΩ
・ブレッドボード、ジャンパーワイヤー等
以下のように配線します。DHT22の1ピン(向かって一番左側)を3.3V、2ピンをGPIO 22、3ピンは未接続、4ピンをGNDに接続します。DHT22の1ピンと2ピンの間に4.7KΩの抵抗を接続します。
GPIO 22は例ですので、別のGPIOポートでもかまいません。変更した場合はサンプルプログラムのDHT_GPIOの値を変更してください。
必要なPythonのパッケージをインストールします。
$ sudo apt-get updateAdafruitのDHTライブラリをインストールします。
$ sudo apt-get install build-essential python-dev
$ sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
$ sudo python setup.py install
準備ができたら、測定用のプログラムを用意します。テキストエディタなどで作成します。
ファイル名:dht22.py
#!/usr/bin/pythonDHT22のかわりにDHT11を使用する場合は、上記SENSOR_TYPEの「DHT.DHT22」を「DHT.DHT11」にすることで対応できます。
# coding: utf-8
import Adafruit_DHT as DHT
## センサーの種類
SENSOR_TYPE = DHT.DHT22
## 接続したGPIOポート
DHT_GPIO = 22
## 測定開始
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)
プログラムを保存したらパーミッションを設定し、プログラムを実行します。
$ chmod 755 dht22.py
$ ./dht22.py
Temp= 26.0 deg C
Humidity= 44.0 %
これでセンサーから取得した値が表示されました。
以下のようなエラーが起きてしまいました。
pi@raspberrypi:~ $ ./dht22.py
Traceback (most recent call last):
File "./dht22.py", line 15, in <module>
print "Temp= {0:0.1f} deg C" . format(t)
ValueError: Unknown format code 'f' for object of type 'str'
何がダメだったのでしょうか...。