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 顯示屏上測量溫度和溼度。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP