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

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み (2022-12-08)
  2. AWS認定資格を12個すべて取得したので勉強したことなどをまとめます (2022-12-12)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  4. Viteベースの高速テスティングフレームワークVitestを使ってみる (2022-12-28)
  5. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  6. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  7. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  8. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する (2023-01-16)
  10. Nuxt3入門(第7回) - Nuxt3のプラグイン・ミドルウェアを使う (2022-10-23)