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