DHT11/DHT12溫溼度傳感器實驗-ESP32

DHT11/DHT12溫溼度傳感器實驗

溫溼度傳感器在控制板學習裡是必備入門實作的課題
它包含DHT11/DHT12這兩種形式,這些傳感器包含一個
芯片,可以進行模擬到數字的轉換,並輸出帶有溫度和濕度
的數字信號。這使得它們很容易與任何微控制器一起使用。

DHT11 和 DHT22 非常相似,但它們的規格不同。下表比較
了 DHT11 和 DHT22 溫濕度傳感器的一些最重要的規格。
要對這些傳感器進行更深入的分析,請查看傳感器的數據表。

DHT11
DHT22
Temperature range0 to 50 ºC +/-2 ºC-40 to 80 ºC +/-0.5ºC
Humidity range20 to 90% +/-5%0 to 100% +/-2%
ResolutionHumidity: 1%
Temperature: 1ºC
Humidity: 0.1%
Temperature: 0.1ºC
Operating voltage3 – 5.5 V DC3 – 6 V DC
Current supply0.5 – 2.5 mA1 – 1.5 mA
Sampling period1 second2 seconds


DHT11 的範圍更小,精度也更低。但是,您可以每秒請求傳感器讀數。它也便宜一點。
DHT22傳感器具有更好的分辨率和更寬的溫濕度測量範圍。但是,它有點貴,並且您
只能以 2 秒的間隔請求讀數。

接腳

DHT 傳感器有四個引腳,如下圖所示。但是,如果您將 DHT 傳感器安裝在分線板中,則它只有三個引腳,並且在引腳 2 上帶有一個內部上拉電阻。

下表顯示了 DHT22/DHT11 引腳排列。當傳感器面向您時,引腳編號從左到右從 1 開始
DHT pinConnect to
13.3V
2Any digital GPIO; also connect a 10k Ohm pull-up resistor
3Don’t connect
4GND

所須材料

  • 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(DHTPINDHTTYPE);

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("%"));
  }
}




































留言

這個網誌中的熱門文章