實驗說明:
- 本編將使用 ESP32 開發板連接「DHT11溫溼度模組」讀取DHT11溫溼度模組所測到的溫度、溼度。在市面上目前大家能找到的DHT11有兩種:一種是單純DHT11沒背板的,另一種是有焊背板的。差別在於焊了背板就可以省掉加電阻這個麻煩,也少一個腳位,方便很多,所以這次的範例也是介紹有背板的DHT11。
- dht11 是一個結合濕度計和測溫元件量測週遭空氣環境,並與一個高性能八位元單晶片相連接,將所量測到的溫、濕度資料拆解成為數位訊號,再由感測器接腳將資料送出。使用上很簡單,但是抓取資料時必須要特別注意時間的掌控,而且每筆資料的抓取時間間隔要2秒鐘以上,不能太快。
- dht11 的規格如下:濕度測量範圍:20~90%;濕度測量精度:±5%;溫度測量範圍:0~50℃溫度測量精度:±2℃電源供應範圍: 3~5V頻率不可超過:0.5Hz (每2秒一次)
材料:
- ESP32-E DevKit
- USB 傳輸線
- DHT11模組
- 麵包板
- 杜邦線
▼ 購買IoT物聯網學習教材:
接線說明:
DHT模組只有3條線:GND(➖)、VCC(➕),還有DATA(Out),此範例我們把DATA (Out)資料線接「ESP32 GPIO15」。
▼ 接線時請各位務必注意DHT11背板的正負標示 ,接錯將會導致DHT模組燒毀
安裝 DHT11 程式庫:
- 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫。
- 在右上方搜尋框輸入「dht11」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點 選「SimpleDHT」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。
程式:
#include <SimpleDHT.h>
int pinDHT11 = 15; //ESP32 GPIO15
SimpleDHT11 dht11;
void setup() {
Serial.begin(9600);
}
void loop() {
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
// start working...
Serial.println("=================================");
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
return;
}
Serial.print("Humidity = ");
Serial.print((int)humidity);
Serial.print("% , ");
Serial.print("Temperature = ");
Serial.print((int)temperature);
Serial.println("C ");
delay(3000); //每3秒顯示一次
}
程式說明:
- 第 1 列含入dht11程式庫。
- 第 3 列設定 dht11 硬體接腳。
- 第 4 列建立dht11程式庫物件。
- 第 7 列設定輸出資料視窗的傳輸速率。
- 第 16 列讀取 dht11 測量值。
- 第 20~25 列顯示 dht11 測量值。
- 第 27 列每3秒讀取及顯示一次。
▼輸出結果如下: