DTH感測器程式設計


DHT11 和 DHT22 感測器是可以連線到麵包板上的微控制器的感測器,可以測量某個位置的溼度和溫度。這些感測器之間的區別在於 DHT22 更昂貴,具有更好的溫度讀數範圍,並且更精確。這些感測器可以連線到 ESP32 或 Arduino 等微控制器,並且可以由程式讀取其值。本文使用兩個不同的示例,演示了使用 ESP32 的 DHT11 和 DHT22 感測器的使用方法。電路是使用 ESP32 微控制器和 DHT 感測器在實際和 Wokwi 模擬器上製作的,並且使用 Arduino 軟體編寫了測量溫度或溼度的程式。

讓我們通過幾個示例來探索這些文章。

示例 1 - 使用 DHT11 感測器測量某個位置的溫度和溼度

示例 2 - 使用 Wokwi 模擬器和 LCD 顯示 DHT22 感測器讀數。

將 DHT11 與 ESP32 連線

按照以下說明連線引腳,製作電路 -

圖 1:顯示 DHT11 與 ESP32 的引腳連線

示例 1:使用 DHT11 感測器測量某個位置的溫度和溼度

DHT11 感測器用於測量溫度和溼度。此處的 C 語言程式使用“DHT.h”進行 ESP32 和 DHT11 感測器之間的通訊。結果可以使用序列埠監視器檢視。

電路設計步驟和編碼

步驟 1 - 首先將 ESP32 微控制器放置在麵包板上。

步驟 2 - 接下來,將 DHT11 感測器插入麵包板。

步驟 3 - 將 DHT11 感測器的 Vin 連線到 ESP32 的 3V3/Vin 引腳。將 DHT11 感測器的 GND 連線到 ESP32 的 GND 引腳。將 DHT11 感測器的 Data 引腳連線到 ESP32 的 D15 引腳。

步驟 4 - 使用 Arduino 編寫 C 程式以測量溫度。

步驟 5 - 使用 USB 資料線將 ESP32 連線到計算機。

步驟 6 - 編譯並將程式碼傳輸到 ESP32,並在序列埠監視器上檢查結果。

程式碼

// Read the temperature and humidity of the place using DHT11 sensor
#include "DHT.h"
// connected to ESP32 pin 15
#define DHT_PIN 15
#define DHT_TYPE DHT11

// making the DHT sensor object
DHT dhtt(DHT_PIN, DHT_TYPE);
void setup() {
   //set the baud rate
   Serial.begin(9600);
   Serial.println("Using the DHT sensor!");
   // start the sensor for temperature and humidity
   dhtt.begin();
}
void loop() {
   //read the humidity value
   float hum = dhtt.readHumidity();
   //read the temperature value
   float tem = dhtt.readTemperature();
   // if unable to get reading correctly
   if (isnan(hum) || isnan(tem)) {
      Serial.println("Failed to read from DHT sensor!");
      return;
   }
   // print Humidity
   Serial.print("Humidity: ");
   Serial.print(hum);
   Serial.print(",");
   // print Temperature
   Serial.print("Temperature: ");
   Serial.println(tem);
   delay(2000);
}

檢視結果

程式碼編譯並傳輸/上傳到 ESP32 後,可以在序列埠監視器中看到結果。

圖:顯示使用序列埠監視器讀取的溫度和溼度結果

示例 2:使用 Wokwi 模擬器和 LCD 顯示屏顯示 DHT22 感測器讀數

這裡,DHT22 感測器用於測量溫度和溼度。此處使用 Wokwi 模擬器編寫了 C 語言程式。它使用“DHT.h”進行 DHT22 和 ESP32 之間的通訊,以及“LiquidCrystal_I2C.h”用於使用 LCD。結果可以使用 Wokwi 模擬器檢視。

電路設計步驟和編碼

步驟 1 - 首先登入 Wokwi。現在開始一個新的 ESP32 專案。

步驟 2 - 點選加號新增元件,並選擇 DHT22 和 LED 顯示屏。接下來,將 DHT22 感測器連線到 ESP32。

步驟 3 - 將 DHT22 感測器的 Vin 連線到 ESP32 的 3V3/Vin 引腳。將 DHT22 感測器的 GND 連線到 ESP32 的 GND 引腳。將 DHT22 感測器的 Data 引腳連線到 ESP32 的 D15 引腳。

步驟 4 - 點選加號新增元件,並選擇一個 16x2 LCD(16 列 2 行),並將此顯示裝置與 ESP32 連線。

步驟 5 - 使用 Wokwi 模擬器編寫 C 程式,並使用 libraries.txt 選項卡新增所需的庫。

步驟 6 - 按下播放按鈕編譯程式碼,並在 LCD 顯示屏上檢查結果。

程式碼

//The DHT library
#include <DHT.h>
//The LCD library
#include <LiquidCrystal_I2C.h>
// connected to ESP32 pin 15
#define DHT_PIN 15

//Here DHT22 Type is used
#define DHT_TYPE DHT22

// making the DHT sensor object
DHT dhtt(DHT_PIN, DHT_TYPE);

float tem ;
float hum;

//making the myLcd object
LiquidCrystal_I2C myLcd(0x27, 16, 2);

void setup(){
   //set the baud rate
   Serial.begin(9600);
   Serial.println("Using the DHT sensor!");
   // start the sensor for temperature and humidity
   dhtt.begin();
   //initialise the lcd
   myLcd.init();
   //clear the lcd
   myLcd.clear();
   //set the position to start the print
   myLcd.setCursor(2, 0);
   //print message
   myLcd.print("DHT Sensor!");
   delay(500);
}
void loop() {
   //read the temperature value
   tem = dhtt.readTemperature();
   //read the humidity value
   hum = dhtt.readHumidity();
   delay(1000);
   myLcd.clear();
   myLcd.setCursor(1, 0);
   //print the temperature value
   myLcd.print("Temperature: "+ String(tem));
   myLcd.setCursor(1, 1);
   //print the humidity value
   myLcd.print("Humidity: "+ String(hum));
   delay(1000);
}

檢視結果 - 示例 2

圖 3:顯示使用 Wokwi 讀取 DHT22 的結果。

本文使用兩個不同的示例,介紹了使用 DHT11 感測器/DHT22 與 ESP32 的方法。在第一個示例中,DHT11 感測器用於透過製作實際電路來測量溫度和溼度。在第二個示例中,DHT22 感測器用於使用 Wokwi 模擬器在 LCD 顯示屏上測量溫度和溼度。

更新於: 2023年4月18日

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.