概要
温度と湿度を計測することができるDHT11というセンサーを用いて、Arduinoで温度と湿度を計測する方法について解説をします。
DHT11について
DHT11は、温度と湿度を同時に計測することができるセンサーです。上記はモジュール版となり、DHT11単体で使おうとするとデータ受信ピンのプルアップが必要になるのですが、モジュールの場合はそのような対応は不要で、そのままArduinoに接続すれば使えるようになるので便利です。
配線
このDHT11のモジュールは上から-、out、+となっています。モジュールによってピンの配置は変わることがありますので、自分の持っているモジュールの仕様を確認してください。
-は、ArduinoのGNDピンに繋げましょう。また、動作電圧は3.3V〜5Vですので、+は5Vピンに繋げます。
真ん中のoutはデジタルピンに繋げれば良いので、2ピンなどに挿しておきます。
ライブラリの準備
Arduino IDEで開発をする際、以下の2つのライブラリが必要になります。
それぞれ、Code→Download ZIPでZip形式でダウンロードした後、Arduino IDEで、「スケッチ→ファイルをインクルード→.ZIP形式のライブラリをインストール」を選び、ダウンロードしたライブラリをインストールします。
Arduinoのコード
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println(F("DHT11 test!")); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; } Serial.print(F("Humidity: ")); Serial.print(h); Serial.print(F("% Temperature: ")); Serial.print(t); Serial.println(F("°C ")); }
- DHTTYPEに指定しているのはセンサーの種類で、他にもDHT22、DHT21などを指定することが可能です。
- このセンサーはデータの取得がとても遅いので2秒おきに取得するようにしています。
- dht.readTemperature(true) というように、trueを引数で渡して温度を取得すると、華氏(°F)の値を取得することができます。
シリアルモニタを開いて、ボーレートを9600に合わせると、正常に温度と湿度が取得できていることがわかります。