DHT11/DHT12溫溼度傳感器實驗


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 歐姆電阻
  • 麵包板
  • 跳線

接線圖


下載所須的函式庫

Adafruit_Sensor

匯入範例檔

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

  }

}


文章作者: blairan
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY 4.0 許可協議。轉載請註明來源 blairan !
评论
  目錄