Project 24.1 温湿度計/Hygrothermograph

前回は赤外線リモコンでLEDの明るさを制御してみました。

非営利団体 金重総合研究所 - 知...
Project 23.2 赤外線リモコンでLEDを操作/Control LED through Infrared Remote - 非営利団体 金重総合研... 前回は赤外線リモコンの基本について学びました。 今回は赤外線リモコンを使用してLEDを操作してみましょう! 回

湿度計は、私たちの生活の中で温度と湿度を測定する重要なツールです。このプロジェクトでは、ESP32-S3を使用してDHT11モジュールの温度と湿度データを読み取ります。

目次

湿度計DHT11について

温度湿度センサーDHT11は、温度と湿度を同時に測定できる複合センサーモジュールです。このモジュールは、出荷時にメーカーで校正されており、デジタル信号で校正済みの温度と湿度データを出力します。

DHT11 は、中国のAosong Electronics社が製造・販売している温度湿度センサーモジュールです。
校正済み とは、センサーの誤差を補正するために、あらかじめ調整されていることを意味します。

DHT11は独自形式のシングルライン通信プロトコルを採用しているため、専用のライブラリを利用するとより簡単にデータを読み取ることができます。DHT11は電源投入後、1秒以内に初期化を行います。動作電圧は3.3V〜5.5Vの範囲です。SDAピンはデータ通信用のピンで、他のデバイスとデータのやり取りを行います。NCピン (Not Connected Pin) は、様々なICパッケージに見られるもので、外部回路に対しては機能せず、製造時やテスト時の用途に用いられる可能性があります。このピンは回路の他の部分に接続しないでください。

回路図

接続図

ライブラリのインストール

使用ライブラリ:DHT sensor library for ESPx

コード

/**********************************************************************
  Filename    : Temperature and Humidity Sensor
  Description : Use DHT11 to measure temperature and humidity.Print the result to the serial port.
  Auther      : www.freenove.com
  Modification: 2022/10/26
**********************************************************************/
#include "DHTesp.h"

DHTesp dht;     //Define the DHT object
int dhtPin = 21;//Define the dht pin

void setup() {
  dht.setup(dhtPin, DHTesp::DHT11);//Initialize the dht pin and dht object
  Serial.begin(115200);              //Set the baud rate as 115200
}

void loop() {
  flag:TempAndHumidity newValues = dht.getTempAndHumidity();//Get the Temperature and humidity
  if (dht.getStatus() != 0) {//Judge if the correct value is read
    goto flag;               //If there is an error, go back to the flag and re-read the data
  }
  Serial.println(" Temperature:" + String(newValues.temperature) + 
  " Humidity:" + String(newValues.humidity));
  delay(2000);
}

今回のコードで特筆すべきは『goto』ですね。読んで時のごとく、指定したラベルの位置に移動します。

昔々、BASICなどでは割りと多用されてきた書き方ですが、C言語においては美しくないとされています。

では、whileを使って書き換えたらどうなるでしょうか?

正解は・・・
  TempAndHumidity newValues = dht.getTempAndHumidity();//Get the Temperature and humidity
  while(dht.getStatus() != 0) {//Judge if the correct value is read
    newValues = dht.getTempAndHumidity();//Get the Temperature and humidity
  }

どちらが美しいかと言われると、ちょっと悩んでしまいますね・・・。

コードの書き方は唯一の正解というものはありません。色々と試してみてください!

次回は取得した温度と湿度をLCDディスプレイに表示してみましょう!

非営利団体 金重総合研究所 - 知...
Project 24.2 温湿度計とLCDディスプレイ/Hygrothermograph - 非営利団体 金重総合研究所 前回は温湿度計の使い方を学びました。 今回は温湿度計の測定値をLCDディスプレイに表示してみましょう! 回路図
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

金重総合研究所の主席研究員。
子供の頃から研究者を目指し、ライフワークとして日々様々な研究をしています。
経営・マネジメント・金融・DXあたりが本職です。
私を採用したい人、私と一緒に働きたい人、一緒に知識を肥やしていきたい人はぜひお声がけ下さい。

コメント

コメントする

目次