注目イベント!
アドベントカレンダー2024開催中!
一年を締めくくる特別なイベント、アドベントカレンダーを今年も開催しています!
初心者からベテランまで楽しめる内容で、毎日新しい技術トピックをお届けします。
詳細はこちらから!
event banner

IoT を使ってみる(その13:温湿度センサモジュールDHT11編)

| 3 min read
Author: shuichi-takatsu shuichi-takatsuの画像

前回は 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活用の参考になれば幸いです。

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。