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

こんなこと、やります。

  • PythonのDHT11ライブラリのインストール
  • ラズパイとDHT11で、温度と湿度の測定

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

はじめに

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

SSHの設定はキーボードなしのラズパイをMacで初期設定、SSH環境構築をご覧ください。

また、ArduinoでDHT11を使いたい方は、Arduinoで温度湿度センサDHT11の使い方で解説しています。

開発環境

開発環境はこちら。

項目バージョン
ラズパイRaspberry Pi zero WH
温度湿度センサーDHT11
Python2.7.16/3.7.3

準備

ここでは、ラズパイでDHT11を使うための準備を行います。

Gitのインストール

gitコマンドを使って、DHT11のライブラリをインストールします。gitコマンドがない場合は、次のようにしてインストールしてください。

$ sudo apt-get install git

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

gitコマンドを使って、DHT11のライブラリをインストールします。 こちら のDHT11ライブラリをインストールしました。

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

インストール後の確認

ライブラリのインストール完了後、現在のディレクトリにDHT11_Pythonディレクトリが作成されます。

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

DHT11のピン端子役割

DHT11のピン端子の役割を確認しておきます。

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

DHT11は1-Wire通信のデジタルセンサーです。1-Wire通信に関しては、ラズパイとDS18B20で水温測定(1-Wire通信)に詳しく書きました。

NCピンは使わないので、何も接続しません。

ラズパイとDHT11の配線

次ように、ラズパイとDHT11を配線します。

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

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

⭐DHT11のDATAピンは4.7kΩの抵抗でプルアップします。

ソースコード:DHT11から温度と湿度データの取得

DHT11から温度と湿度データの取得するプログラムがこちらです。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()

解説

次のようにしてプログラムを実行します。プログラムを止めたい場合は、control + Cで止めます。

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

「BCM」と「BOARD」の違い

プログラム中のGPIO.setmodeについて解説します。GPIO.BCMをセットすると、図のGPIOの番号でピンが指定されます。また、GPIO.BOARDをセットする、ピンの配列順の番号で指定されます。

ここらへんは間違えやすいので注意しましょう。

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

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のラズパイ
人気のラズパイ周辺機器
Raspberry Piのオススメ入門書
関連記事