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Ωの抵抗を接続します。

dht22

GPIO 22は例ですので、別のGPIOポートでもかまいません。変更した場合はサンプルプログラムのDHT_GPIOの値を変更してください。


必要なPythonのパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install build-essential python-dev
AdafruitのDHTライブラリをインストールします。
$ sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
$ sudo python setup.py install

準備ができたら、測定用のプログラムを用意します。テキストエディタなどで作成します。

ファイル名:dht22.py
#!/usr/bin/python
# 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)
DHT22のかわりにDHT11を使用する場合は、上記SENSOR_TYPEの「DHT.DHT22」を「DHT.DHT11」にすることで対応できます。

プログラムを保存したらパーミッションを設定し、プログラムを実行します。
$ chmod 755 dht22.py
$ ./dht22.py
Temp= 26.0 deg C
Humidity= 44.0 %

これでセンサーから取得した値が表示されました。