DHT22 單總線數字溫溼度傳感器2302模塊電子積木

DHT22 單總線數字溫溼度傳感器2302模塊電子積木

外觀

DHT22 單總線數字溫溼度傳感器2302模塊電子積木

簡介

  • DHT22數字溫溼度傳感器是一款含有已校準數字信號輸出的溫溼度複合傳感器。
  • 它應用專用的數字模塊採集技術和溫溼度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。
  • 傳感器包括一個電容式感溼元件和一個NTC測溫元件,並與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優點。
  • 單線制串行接口,使系統集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。產品連接方便,可直接插接到Arduino傳感器擴展板上。
  • DHT22數字溫溼度傳感器精度較高,可以替代昂貴的進口SHT10溫溼度傳感器。在對環境溫度與溼度測量要求較高的情況下使用,該產品具有極高的可靠性和出色的穩定性。
  • 與Arduino專用傳感器擴展板結合使用,可以非常容易地實現與溫度和與溼度感知相關的互動效果。

注意:DHT22的傳感器接線是模擬--數字轉換線。

產品參數

一、長尺寸:28mm X寬12mm X高10mm

二、主要芯片:奧松DHT22溫溼度傳感器

三、工作電壓:直流3.3-5.5V

產品特點:

1、溼度測量範圍:0---100%RH

2、溼度測量精度:±2%RH

3、溫度測量範圍:-40---80℃

4、溫度測量精度:±0.5℃

5、工作電壓:DC5V 常用

6、單總線數字信號輸出,串口數據雙向口;

DHT22 單總線數字溫溼度傳感器2302模塊電子積木

新版連線圖

樣例代碼

以下兩個樣例代碼,均可實現檢測溫溼度的功能,但編程思路不同。dht庫是Arduino提供的官方庫,可以兼容DHT11和DHT22,樣例代碼1是截取DHT22部分,樣例代碼2是DHT22特定的庫。如果僅僅是實現基本功能,可直接調用樣例代碼1。如想深入學習不同編程思路,樣例代碼2可供參考。

DHT22 單總線數字溫溼度傳感器2302模塊電子積木

樣例代碼1

/*******************************************************
這個程序用來測試DHT22的溫溼度。
********************************************************/
#include <dht.h>
dht DHT;
#define DHT22_PIN 7
void setup()
{
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
void loop()
{
Serial.print("DHT22, \t");
int chk = DHT.read22(DHT22_PIN); //讀取數據
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// 顯示數據
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);
delay(1000);
}
/<dht.h>
DHT22 單總線數字溫溼度傳感器2302模塊電子積木

樣例代碼2

/*******************************************************
這個程序用來測試DHT22的溫溼度。
********************************************************/
#include <dht22.h>
#include <stdio.h>
// 信號線接Arduino數字口7
#define DHT22_PIN 7
DHT22 myDHT22(DHT22_PIN);
void setup(void)
{
Serial.begin(9600);
Serial.println("DHT22 Library Demo");
}

void loop(void)
{
DHT22_ERROR_t errorCode;
delay(2000);
Serial.print("Requesting data...");
errorCode = myDHT22.readData();
switch(errorCode)
{
case DHT_ERROR_NONE:
Serial.print("Got Data ");
Serial.print(myDHT22.getTemperatureC());
Serial.print("C ");
Serial.print(myDHT22.getHumidity());
Serial.println("%");
char buf[128];
sprintf(buf, "Integer-only reading: Temperature %hi.%01hi C, Humidity %i.%01i %% RH",
myDHT22.getTemperatureCInt()/10, abs(myDHT22.getTemperatureCInt()%10),
myDHT22.getHumidityInt()/10, myDHT22.getHumidityInt()%10);
Serial.println(buf);
break;
case DHT_ERROR_CHECKSUM:
Serial.print("check sum error ");
Serial.print(myDHT22.getTemperatureC());
Serial.print("C ");
Serial.print(myDHT22.getHumidity());
Serial.println("%");
break;
case DHT_BUS_HUNG:
Serial.println("BUS Hung ");
break;
case DHT_ERROR_NOT_PRESENT:
Serial.println("Not Present ");
break;
case DHT_ERROR_ACK_TOO_LONG:
Serial.println("ACK time out ");
break;
case DHT_ERROR_SYNC_TIMEOUT:
Serial.println("Sync Timeout ");
break;
case DHT_ERROR_DATA_TIMEOUT:
Serial.println("Data Timeout ");
break;
case DHT_ERROR_TOOQUICK:
Serial.println("Polled to quick ");
break;
}
}
/<stdio.h>/<dht22.h>


分享到:


相關文章: