IoT を使ってみる(その13:温湿度センサモジュールDHT11編)
前回は FreeRTOS の「セマフォ」を紹介しました。
今回はIoTデバイスに接続して使用する「温湿度センサモジュール DHT11」を紹介致します。
温湿度センサモジュール「DHT11」
#DHT11は、温度と湿度を同時に計測することができるセンサモジュールです。
ネットでDHT11を検索すると4ピン(単体版)のものと、3ピン(モジュール版)のものが見つかりますが、今回使用するのは3ピン(モジュール版)の方です。
単体版のDHT11を使用するにはデータ受信ピンにプルアップ抵抗を接続する必要がありますが、モジュール版にはプルアップ抵抗が内蔵されているので、そのままIoTデバイスに接続すれば使えます。
価格は非常に安価で1個200円程度で販売されています。(参考URL)
測定精度は決して高いものではありませんが、自室の温度・湿度を測定して「暑いのか」「寒いのか」「乾燥しているのか」「湿気っているのか」を判断する目安くらいにはなります。
ピンは左から +5V、データ、GND になります。
それになにより200円程度の出費でIoTデバイスに接続して遊べるのでお得です(笑)。
ESP32と接続する
#DHT11 には5V電源が必要です。
これまでよく使用してきた ESP32 LOLIN D32 は3.3Vの出力ピンしか持っていないようなので、ESP32 DevkitC V4 (以降、ESP32と呼称します)を使用します。
ESP32 と DHT11 の各ピンを以下のように接続します。
ESP32 には複数の 5V、GND ピンがありますが、どこを使っても問題ありません。
ESP32 のピン配置はこちらを参考にしました。
(今回は DHT11 のデータピンと ESP32 の14番ピンを接続しましたが、ESP32 側は ADCピンなら他のピンでも問題ないと思います)
ESP32 | DHT11 |
---|---|
5V | 5V |
14番 | OUT |
GND | GND |
温湿度測定サンプルプログラム
#Arduino IDE で ESP32 に以下のサンプルプログラムを書き込みます。
(とにかく動くことを優先しているので、エラー処理等はありません)
#include <DHT.h> // DHT ライブラリのインクルード
#define DHT_MODEL DHT11 // 接続するセンサの型番を定義する(DHT11やDHT22など)
#define DHT_PIN 14 // DHT11 の DATAピンを EPS32 の 14ピン に指定
DHT dht(DHT_PIN, DHT_MODEL); // センサーの初期化
// セットアップ
void setup() {
Serial.begin(115200); // シリアル通信の開始
dht.begin(); // センサーの動作開始
}
// ループ
void loop(){
delay(1000); // センサーの読み取りを1秒間隔に
float Humidity = dht.readHumidity(); // 湿度の読み取り
float Temperature = dht.readTemperature(); // 温度の読み取り(摂氏)
// 温度を出力
Serial.print("温度: ");
Serial.print(Temperature, 1); // 小数点1桁まで
Serial.print("[℃]");
// 湿度を出力
Serial.print(" 湿度: ");
Serial.print(Humidity, 1); // 小数点1桁まで
Serial.println("[%]");
}
温度&湿度確認
#プログラムの出力結果をシリアルモニタで確認します。
結果が約1秒間隔で出力されていることがわかります。
温度: 21.5[℃] 湿度: 36.0[%]
温度: 21.5[℃] 湿度: 36.0[%]
温度: 21.5[℃] 湿度: 36.0[%]
温度: 21.5[℃] 湿度: 37.0[%]
温度: 21.5[℃] 湿度: 37.0[%]
温度: 21.5[℃] 湿度: 36.0[%]
(…以下略…)
センサモジュールに向かって息を吹きかけてみたところ、出力に変化が現れました。
呼気によって湿度が上がっているように見えます。
温度: 21.5[℃] 湿度: 40.0[%]
温度: 21.5[℃] 湿度: 48.0[%]
温度: 21.5[℃] 湿度: 48.0[%]
温度: 21.5[℃] 湿度: 52.0[%]
温度: 21.5[℃] 湿度: 52.0[%]
温度: 21.5[℃] 湿度: 54.0[%]
(…以下略…)
続いて、部屋のエアコンを22度設定で稼働させてみます。
出力に変化が現れました。
ちょうどエアコンの吹き出し口からの風がセンサモジュールにダイレクトに当たっているため、急激に温度&湿度が変化しました。
温度: 25.4[℃] 湿度: 28.0[%]
温度: 25.4[℃] 湿度: 28.0[%]
温度: 25.5[℃] 湿度: 27.0[%]
温度: 25.5[℃] 湿度: 27.0[%]
温度: 25.6[℃] 湿度: 27.0[%]
温度: 25.6[℃] 湿度: 27.0[%]
(…以下略…)
精度はあまり高いとは言えませんが、各部屋にセンサモジュールを設置して温度&湿度管理をしてみるのも面白いかもしれません。
まとめ
#今回は温湿度センサモジュール「DHT11」を使って部屋の温度&湿度を計測してみました。
決して精度は高くありませんが、アイディア次第では色々と使えそうです。
ESP32 には DHT11 の他に様々なデバイスが接続できるので、試してみてはいかがでしょうか。
IoTに関するチュートリアルや実践テクニックをまとめています。
IoT活用の参考になれば幸いです。