2015年7月24日 星期五

Arduino 溫濕度計DHT 11

Arduino  溫濕度計DHT 11


DHT-11 是一個結合濕度計和測溫元件量測週遭空氣環境,並與一個高性能8位元單晶片相連接,將所量測到的溫、濕度資料拆解成為數位訊號,再由 data pin腳將資料送出。使用上很簡單,但是抓取資料時必須要特別注意時間的掌控,而且每筆資料的抓取時間間隔要1~2秒鐘,不能太快。與 DHT-22 比較,DHT-11 較不精密與準確且溫濕度量測範圍不大,雖然如此,但對於學習與熟悉溫、濕度感測卻是綽綽有餘,傳輸的距離又可長達20m以上,而且比 DHT-22 較小且便宜許多,是十分方便的簡易測試元件。

其規格如下:
1、濕度測量範圍:20~90%RH;
2、濕度測量精度:±5%RH;
3、溫度測量範圍:0~50℃
4、溫度測量精度:±2℃
5、電源供應範圍: 3~5V
6、頻率不可超過:0.5Hz (每2秒一次)



接線的方法十分簡單,"+"接5V,"-"接GND,data pin接上要輸入的Pin腳。有人說因為數位訊號要接高data電位,所以把data pin外接4.7歐姆電阻至Vcc。不過我曾嘗試不接那4.7k 歐姆,試出來的效果看起來沒有太大的差別。

先下載 library ,丟到Arduino的libraries裡面,然後再開Arduino IDE,去叫<dht.h>


//溫濕度計DHT 11。
#include <dht.h>  
#define dht_dpin 2 //定義訊號要從Pin A0 進來
//I2C + I2C LCD Library
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
/*==========================================
SDA – 接 Arduino 的 Analog Pin 4 (Arduino Mega 為 Pin 20)
SCL – 接 Arduino 的 Analog Pin 5 (Arduino Mega 為 Pin 21)
GND – 接 GND
VCC – 接 +5V
==========================================*/

dht DHT;

void setup(){
    lcd.init();                      // initialize the lcd
    // Print a message to the LCD.
     lcd.backlight();
    // 輸出初始化文字
    lcd.setCursor(0, 0);                   // 設定游標位置在第1行行首
    lcd.print("Humidity and");
    lcd.setCursor(0, 1);                   // 設定游標位置在第2行行首
    lcd.print("temperature");

    Serial.begin(9600);
    delay(300);             //Let system settle
    Serial.println("Humidity and temperature\n\n");
    delay(700);             //Wait rest of 1000ms recommended delay before
                            //accessing sensor
}

void loop(){
    DHT.read11(dht_dpin);                 //去library裡面找DHT.read11
 
    lcd.setCursor(0, 0);                   // 設定游標位置在第1行行首
    lcd.print("Humidity =");
    lcd.print(DHT.humidity);
    lcd.print("%");
    lcd.setCursor(0, 1);                   // 設定游標位置在第2行行首
    lcd.print("Temp = ");
    lcd.print(DHT.temperature);
    lcd.print("C   ");


    Serial.print("Humidity = ");
    Serial.print(DHT.humidity);
    Serial.print("% ");
    Serial.print("temperature = ");
    Serial.print(DHT.temperature);
    Serial.println("C ");
    delay(1000);            //每1000ms更新一次
}



參考來源 :

http://ming-shian.blogspot.tw/2014/05/arduino19dht11.html

沒有留言:

張貼留言

113 學年度第 1 學期 RFID應用課程 Arduino程式

113 學年度第 1 學期 RFID應用課程 Arduino程式 https://www.mediafire.com/file/zr0h0p3iosq12jw/MFRC522+(2).7z/file 內含修改過後的 MFRC522 程式庫 (原程式有錯誤) //定義MFRC522...