DHT11/DHT12溫溼度傳感器實驗
tags: esp32
dht11/dht12
參考網址-[https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/](https://draft.blo gger.com/blog/post/edit/3809681606094011522/8795709619283851665?hl=zh-TW#)
溫溼度傳感器在控制板學習裡是必備入門實作的課題
它包含DHT11/DHT12這兩種形式,這些傳感器包含一個
芯片,可以進行模擬到數字的轉換,並輸出帶有溫度和濕度
的數字信號。這使得它們很容易與任何微控制器一起使用。
_DHT11 和 DHT22 非常相似,但它們的規格不同。
_DHT11 的範圍更小,精度也更低。但是,您可以每秒請求傳感器讀數。它也便宜一點。
_
DHT22傳感器具有更好的分辨率和更寬的溫濕度測量範圍。但是,它有點貴,並且您
只能以 2 秒的間隔請求讀數。
接腳
DHT 傳感器有四個引腳,如下圖所示。但是,如果您將 DHT 傳感器安裝在分線板中,則它只有三個引腳,並且在引腳 2 上帶有一個內部上拉電阻。
下表顯示了 DHT22/DHT11 引腳排列。當傳感器面向您時,引腳編號從左到右從 1 開始
| DHT pin | Connect to |
| 1 | 3.3V |
| 2 | Any digital GPIO; also connect a 10k Ohm pull-up resistor |
| 3 | Don’t connect |
| 4 | GND |
所須材料
- ESP32
- DHT11或DHT22溫濕度傳感器
- 10k 歐姆電阻
- 麵包板
- 跳線
接線圖
下載所須的函式庫
匯入範例檔
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 4 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.
// Uncomment the type of sensor in use:
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// See guide for details on sensor wiring and usage:
// https://learn.adafruit.com/dht/overview
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(115200);
// Initialize device.
dht.begin();
}
void loop() {
// Delay between measurements.
delay(2000);
// Get temperature event and print its value.
sensors\_event\_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Error reading temperature!"));
}
else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
}
// Get humidity event and print its value.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println(F("Error reading humidity!"));
}
else {
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
}
}