【RaspBerryPi】DTH-11 温湿度を測定 (PYTHON版)
Raspberry Piでセンサーを接続し、部屋の温度・湿度を測ります。
今回は「DHT11」という温湿度センサーを使用します。
DTH-11について
DHT11は、価格も安価で入手し易い温湿度センサーです。
開発環境
ラズパイ Raspberrypi 3B
温度湿度センサー DTH-11
開発言語 Python
回路を組む
使用するのはDHT11のセンサー単体のものです。
DHT11のピン構成は、 1番:5V、2番:GPIO、
3番:GND という構成になっています。
1番ピン、4番ピンにRaspberry Piの5V、GNDを接続し、
2番ピンにGPIOの14ピン端子を割り当てて情報を取得する、ということになります。
温度・湿度を取得するプログラムでピンの番号が重要になりますので、
ピンの位置は間違えないように注意してください。
準備
dth11.py というファイルをcyberduckでラズパイのHomeに転送するか、
下記のようにGitからインストールします。
Gitのライブラリー
$ git clone https://github.com/szazo/DHT11_Python
$ cd DHT11_Python
$ python3 -m pip install .
サンプルプログラム
import RPi.GPIO as GPIO
import dht11 # ・・・ ①
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False) # ・・・ ②
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 14
instance = dht11.DHT11(pin=14) # ・・・ ③
while True:
result = instance.read() # ・・・ ④
if result.is_valid(): # ・・・ ⑤
print("Last valid input: " + str(datetime.datetime.now()))
print("Temperature: %d C" % result.temperature) # ・・・ ⑥
print("Humidity: %d %%" % result.humidity)
time.sleep(6) # ・・・ ⑦
① import文でライブラリ「dht11.py」を読み込みます。
② GPIOの初期化をしています。各コマンドには次のような意味になります。
GPIO.setwarnings(False) : ワーニングを非表示にします。
※1 GPIO.setmode(GPIO.BCM) : GPIOの数字で指定します。
GPIO.cleanup() : GPIOの設定を初期化します。
※1.ピンが既に使用中の場合等にワーニングが表示されます。
今回のサンプルではワーニングは表示されないため、設定は必須ではありません。
③ データ読み込みのピン番号を設定します。②の初期化でGPIOの番号で
設定するようにしているため、引数のpinには今回接続している14を設定します。
④ センサーから温度・湿度情報を取得します。
⑤ センサーから温度・湿度情報が取得できたか判定します。
取得できた場合に結果をコンソールに出力します。
⑥ 温度・湿度情報をコンソールに出力します。 temperature : 温度(摂氏)の値です。
humidity : 湿度の値です。 ⑦ 1秒処理を停止します。
サンプルファイルの実行
コマンドプロンプトより
dht11_example.pyを実行します。コマンドは次の通りです。
pi@raspberrypi:DHT11_Python python example.py
成功すると下記のような結果を得られます。
Last valid input: 2018-03-10 05:08:35.590508
Temperature: 24 C <= 温度
Humidity: 47 % <= 湿度`
上記は1回の結果ですが、サンプルスクリプトは停止させるまで6秒毎に
温度・湿度を取得して出力しています。
安価な機材、簡単なスクリプトで温度・湿度を測定することができます。