0%

ArduinoでDHT11デジタル温度センサーをAdafruitライブラリから使う

ArduinoからデジタルセンサーモジュールのDHT11を使って温度と湿度を計測してみようと思います。DHTxx用のライブラリやチュートリアルはたくさん見つかるので勉強に役立ちます。DHT11よりDHT22の方が精度が高く、DHT22とAM2302は同じモジュールのようです。どれも同じライブラリを使えるようなので、安い方のDHT11を購入しました。

ブレッドボード配線

購入したDHT11は3ピンの完成品です。データはArduinoのデジタル側、PD2に配線します。

  • + (DHT11) -> +5V (Arduino)
  • S (DHT11) -> PD2 (Arduino)
  • - (DHT11) -> GROUND (Arduino)

adafruit/DHT-sensor-library

いつも参考にしているAdafruitのチュートリアルとライブラリを使います。

リポジトリからgit cloneしてライブラリをインストールします。

$ cd ~/Documents/Arduino/libraries
$ git clone https://github.com/adafruit/DHT-sensor-library.git DHTxx

DHTtester.inoを参考にしてサンプルプログラムを用意します。

~/Documents/Arduino/DHTxx/DHTxx.ino
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
dht.begin();
}

void loop() {
delay(3000);

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

Serial.print("Humidity: ");
Serial.print(h);
Serial.println(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
}

コンパイルしてArduinoに書き込みます。シリアルモニタを実行すると温度と湿度が表示されます。

DHT11 test!
Humidity: 43.00 %
Temperature: 25.00 *C
Humidity: 43.00 %
Temperature: 25.00 *C

dht11.png