工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoを使用したDHT11およびDHT22センサーの温度と湿度のチュートリアル

このArduinoチュートリアルでは、DHT11またはDHT22センサーを使用してArduinoボードで温度と湿度を測定する方法を学習します。詳細については、次のビデオを見るか、以下のチュートリアルを読むことができます。

概要

これらのセンサーは、非常に安価でありながら優れたパフォーマンスを提供するため、電子機器愛好家に非常に人気があります。これら2つのセンサーの主な仕様と違いは次のとおりです。

DHT22はより高価なバージョンであり、明らかに優れた仕様を備えています。その温度測定範囲は+-0.5度の精度で-40から+125℃であり、DHT11の温度範囲は+-2度の精度で0から50℃です。また、DHT22センサーの湿度測定範囲は0〜100%で2〜5%の精度ですが、DHT11の湿度範囲は20〜80%で5%の精度です。

DHT11がDHT22より優れている仕様は2つあります。これは、DHT11の場合は1Hzまたは1秒ごとに1回の読み取りであるサンプリングレートですが、DHT22のサンプリングレートは0.5Hzまたは2秒ごとに1回の読み取りであり、DHT11のボディサイズは小さくなっています。両方のセンサーの動作電圧は3〜5ボルトですが、測定時に使用される最大電流は2.5mAです。

これらのコンポーネントは、以下のいずれかのサイトから入手できます。

  • DHT11センサー……………………………..
  • DHT22センサー……………………………。
  • Arduinoボード……………………………
  • ブレッドボードとジャンパー線………

DHT11/DHT22の動作原理

では、これらのセンサーが実際にどのように機能するかを見てみましょう。これらは、湿度検知コンポーネント、NTC温度センサー(またはサーミスタ)、およびセンサーの裏側にあるICで構成されています。

湿度の測定には、水分保持基板を間に挟んだ2つの電極を備えた湿度検知コンポーネントを使用します。したがって、湿度が変化すると、基板の導電率が変化するか、これらの電極間の抵抗が変化します。この抵抗の変化はICによって測定および処理され、マイクロコントローラーで読み取れるようになります。

一方、温度を測定するために、これらのセンサーはNTC温度センサーまたはサーミスタを使用します。

サーミスタは、実際には温度の変化に応じて抵抗が変化する可変抵抗器です。これらのセンサーは、温度のわずかな変化で抵抗の大きな変化を提供するために、セラミックやポリマーなどの半導体材料の焼結によって作られています。

「NTC」という用語は「負の温度係数」を意味し、温度の上昇とともに抵抗が減少することを意味します。

回路図

DHTxxセンサーには、VCC、GND、データピン、および使用されていない未接続ピンの4つのピンがあります。データラインをハイに保ち、センサーとArduinoボード間の通信を可能にするために、5Kから10Kオームのプルアップ抵抗が必要です。これらのセンサーには、プルアップ抵抗が組み込まれたブレークアウトボードが付属し、ピンが3つしかないバージョンがいくつかあります。

DHTXXセンサーには、データの転送に使用される独自の単線プロトコルがあります。このプロトコルには正確なタイミングが必要であり、センサーからデータを取得するためのタイミング図は、センサーのデータシートから見つけることができます。ただし、すべてを処理するDHTライブラリを使用するため、これらのタイミング図についてあまり心配する必要はありません。

関連チュートリアル:Arduinoベースのワイヤレス気象ステーションを構築する方法を学ぶ

ソースコード

まず、Arduinoの公式ウェブサイトから入手できるDHTライブラリを含める必要があります。次に、センサーが接続されているピン番号を定義して、DHTオブジェクトを作成します。セットアップセクションでは、シリアルモニターを使用して結果を印刷するため、シリアル通信を開始する必要があります。 read22()関数を使用して、センサーからデータを読み取り、温度と湿度の値をt変数とh変数に入れます。 DHT11センサーを使用する場合は、read11()関数が必要になります。最後に、温度と湿度の値をシリアルモニターに印刷します。

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */
 
#include <dht.h>

#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object

void setup() {
  Serial.begin(9600);
}
void loop() {
  int readData = DHT.read22(dataPin); // Reads the data from the sensor
  float t = DHT.temperature; // Gets the values of the temperature
  float h = DHT.humidity; // Gets the values of the humidity
  
  // Printing the results on the serial monitor
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print("    Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  
  delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}Code language: Arduino (arduino)

このコードをArduinoボードにアップロードした後、センサーからの温度と湿度の結果をシリアルモニターで確認できます。

また、結果をLCDに表示する例も作成しました。その例のソースコードは次のとおりです。

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */

#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>


#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;

void setup() {
  lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}

void loop() {
  int readData = DHT.read22(dataPin);
  float t = DHT.temperature;
  float h = DHT.humidity;
  lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
  lcd.print("Temp.: "); // Prints string "Temp." on the LCD
  lcd.print(t); // Prints the temperature value from the sensor
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humi.: ");
  lcd.print(h);
  lcd.print(" %");
  delay(2000);
}Code language: Arduino (arduino)

以下のコメントセクションでお気軽に質問してください。


製造プロセス

  1. PythonとRaspberryPiの温度センサー
  2. ラズベリーパイの簡単な温度と湿度
  3. MCP3008を使用したRaspberryPiのアナログセンサー
  4. Arduino、1Sheeld、Androidを使用したユニバーサルリモコン
  5. Arduinoとスマートフォンを使用したDIY電圧計
  6. 温度および湿度データロガー
  7. Arduinoを使用した周波数とデューティサイクルの測定
  8. NextionディスプレイのBME280温度、湿度、および圧力
  9. BoltとArduinoを使用したLEDの明るさの制御
  10. DHT11でBlynkの温度と湿度を読み取る方法
  11. Arduinoを使用したシンプルでスマートなロボットアーム