DHT11とラズパイで温度・湿度を測る

この記事では、Raspberry Pi(ラズパイ)とDHT11センサーで温度と湿度を測る方法解説していく。 なお、ラズパイとの通信はmacOSからSSHで行った。

SSHの設定はこちらを参考に

KKHMF DHT11 温度と湿度センサー デジタル出力
KKHMF DHT11 温度と湿度センサー デジタル出力
Amazon

開発環境

開発環境はこちら。

項目バージョン
ラズパイRaspberry Pi zero WH
温度湿度センサーDHT11
Python2.7.16/3.7.3
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Amazon

DHT11のピン端子役割

DHT11のピン端子役割
DHT11のピン端子役割

DHT11はデジタルセンサーとなっており、DATAピンでデータのやりとりをする。NCピンは使わないので、何も接続しない。

DHT11をもっと詳しく知りたい場合はこちらを参考に

DHT11とラズパイの配線

DHT11とラズパイの配線図
DHT11とラズパイの配線図

DHT11ラズパイ
VDD3.3V
DATAGPIO14⭐︎
NC--
GNDGND

⭐︎DHT11のDATAピンは4.7kΩの抵抗でプルアップすること。

ラズパイで温度と湿度を測定しよう

それでは、ラズパイで温度と湿度を測定してみよう。DHT11をPythonで簡単に使えるようにするため、ライブラリーのインストールを行う。

DHT11ライブラリのインストール

gitを使ってライブラリをインストールするため、まずはgitを入れておこう。

$ sudo apt-get install git

そして次のようにしてDHT11のライブラリをインストールする。

$ git clone https://github.com/szazo/DHT11_Python.git

DHT11ライブラリの開発者ページはこちら

ライブラリのインストールが完了したら、現在のディレクトリにDHT11_Pythonディレクトリが作成されている。

$ cd DHT11_Pythonでディレクトリを移動すると、次のような階層になっているはず。

$ tree
.
|-- LICENSE.md
|-- README.md
|-- dht11
|   |-- __init__.py
|   `-- __pycache__
|       `-- __init__.cpython-37.pyc
|-- dht11-test.py
|-- example.py
`-- setup.py

2 directories, 7 files

湿度と温度を測定するプログラム

今回はexample.pyプログラムを動かしてみよう。example.pyの中身は次の通り。6秒おきに温度と湿度が標準出力されるプログラムとなっている。

import RPi.GPIO as GPIO
import dht11
import time
import datetime

# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)

# read data using pin 14
instance = dht11.DHT11(pin=14)

try:
    while True:
        result = instance.read()
        if result.is_valid():
            print("Last valid input: " + str(datetime.datetime.now()))

            print("Temperature: %-3.1f C" % result.temperature)
            print("Humidity: %-3.1f %%" % result.humidity)

        time.sleep(6)

except KeyboardInterrupt:
    print("Cleanup")
    GPIO.cleanup()

それではexample.pyを実行してみよう。このプログラムはpython3で動かすこともできる。プログラムを止めたい場合は、control + Cで止めよう。

$ python3 example.py 
Last valid input: 2020-12-27 03:45:31.272394
Temperature: 24.5 C
Humidity: 47.0 %

GPIO.setmodeBCMBOARDの違い

プログラム中のGPIO.setmodeは、GPIO.BCMをセットすると、図のGPIOの番号でピンを指定でき、GPIO.BOARDをセットするとピンの配列順の番号で指定する事になる。

ラズパイGPIO役割図
ラズパイGPIO役割図

KKHMF DHT11 温度と湿度センサー デジタル出力
KKHMF DHT11 温度と湿度センサー デジタル出力
Amazon

人気のラズパイ

Raspberry Pi 4 Model B 8GB 技適マーク入 正規品!ラズベリーパイ4 モデルB
Raspberry Pi 4 Model B 8GB 技適マーク入 正規品!ラズベリーパイ4 モデルB
Amazon
TRASKIT Raspberry Pi 4 Model B Starter Kit
TRASKIT Raspberry Pi 4 Model B Starter Kit
Amazon
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Amazon

人気のラズパイ周辺機器

10 インチRaspberry Pi用タッチモニター EleDuino HDMI モバイルディスプレイ
10 インチRaspberry Pi用タッチモニター EleDuino HDMI モバイルディスプレイ
Amazon
Raspberry Pi4 Model B /アルミニウム金属ケース/ファンレス/放熱シート付き
Raspberry Pi4 Model B /アルミニウム金属ケース/ファンレス/放熱シート付き
Amazon
Freenove Raspberry Pi 4 B 3 B+ 400用の究極のスターターキット
Freenove Raspberry Pi 4 B 3 B+ 400用の究極のスターターキット
Amazon
KEYESTUDIO DC 5V 4チャンネル リレーシールドモジュール 拡張ボード for Raspberry Pi
KEYESTUDIO DC 5V 4チャンネル リレーシールドモジュール 拡張ボード for Raspberry Pi
Amazon

Raspberry Piのオススメ入門書

Raspberry Piクックブック 第3版 (Make:PROJECTS)
Raspberry Piクックブック 第3版 (Make:PROJECTS)
Amazon
これ1冊でできる! ラズベリー・パイ 超入門 改訂第6版 Raspberry Pi 4/Zero W対応
これ1冊でできる! ラズベリー・パイ 超入門 改訂第6版 Raspberry Pi 4/Zero W対応
KindleAmazon
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero W対応
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero W対応
KindleAmazon
記事に関するご質問などがあれば、ぜひTwitterへお返事ください。