ラズパイとDHT11で温度・湿度を測定する方法

実際に動作している様子

ラズパイとDHT11で温度・湿度を測定&グラフ化

実現したいこと

  • 温度と湿度を一定時間で計測してグラフで表示させたい
  • 計測データはローカルではなくネット上に保存したい

使用するもの

  • DHT11
  • python
  • ambient(IoTデーター可視化サービス)

DHT11とは?

  • 温度と湿度を同時に測定する複合センサーモジュール。
  • シリアル単線通信で、ホストのデータ要求にデジタル形式で返答する。
  • 温度センサは、NTCサーミスタ。
  • 湿度測定は高分子膜湿度センサ。
  • 誘電率の変化から相対湿度を測定する。

主な仕様

  • 電源電圧:DC3.3V~5.5V
  • 消費電流:0.3mA(測定時)、60μA(スタンバイ時)
  • サンプリング間隔:2秒以上

配線方法

  • DHT11 + ⇒ pi 5V
  • DHT11 - ⇒ pi GND
  • DHT11 OUT ⇒ pi BCM(PIN=4)

下準備

pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git
git clone https://github.com/szazo/DHT11_Python.git
  • DHT11_Pythonというフォルダ内で作業する。
  • ambient のアカウントを作成し、チャネルIDとライトキーを取得する。

ソースコード

import ambient
ambi = ambient.Ambient(チャネルID,"ライトキー")

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

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

instance = dht11.DHT11(pin=4)

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)
    r = ambi.send({"d1":result.temperature, "d2":result.humidity})
    time.sleep(5)

注意点

  • DHT11の読み取り間隔は6秒以上あけた方が良い。
  • 短い間隔でデータ要求しても、 データが出ない場合がある。

コメント