DIY智能溫濕度計(上)——數據獲取

一、工具

1、Arduino UNO

2、DHT11溫濕度感測器

DHT11數字溫濕度感測器模塊,含有已校準數字信號輸出的溫濕度複合感測器,每個DHT11感測器都在極為精確的濕度校驗室中進行校準,校準係數以程序的形式儲存在OTP內存中,感測器內部在檢測信號的處理過程中要調用這些校準係數。

二、參數(數據來自奧松機器人官網)

1、DHT11參數

工作電壓:3.3V~5V

數據類型:數字輸出

尺寸:35mm x 25mm

工作溫度:-40~85℃

引腳定義

S:信號介面

+:電源正極

-:電源地

2、名詞解釋

濕度很久以前就與生活存在著密切的關係,但用數量來進行表示較為困難。日常生活中最常用的表示濕度的物理量是空氣的相對濕度。用%RH表示。在物理量的導出上相對濕度與溫度有著密切的關係。一定體積的密閉氣體,其溫度越高相對濕度越低,溫度越低,其相對濕度越高。其中涉及到複雜的熱力工程學知識。

三、連線

dht11的S、+、-介面分別接Arduino的引腳4(可以根據自己的需要選擇其他引腳)、5V、GND,然後通過專用數據線將arduino與電腦連接在一起打開Arduino IDE開始編程

四、編程

1、功能

程序可以通過串口顯示當前環境溫濕度。

2、代碼

//初始化

#include<dht.h>

dht DHT;

#define DHT11_PIN 4//定義dht11信號線S為引腳4

void setup()

{

Serial.begin(9600);//初始化埠

//在串口輸出濕度和溫度的單位分別是%和C(攝氏度)

Serial.println("Type, status, Humidity (%), Temperature (C)");

}

//循環

void loop()

{

// 表明程序已經開始運行

Serial.print("DHT11, ");

int chk = DHT.read11(DHT11_PIN);//讀取感測器獲取的數據

switch (chk)//檢驗感測器此時狀態

{

//如果反饋0,表明感測器正常工作

case 0: Serial.print("OK, "); break;

//如果反饋-1,表明感測器校驗和出錯

case -1: Serial.print("Checksum error, "); break;

//如果反饋-2,表明獲取感測器數據超時

case -2: Serial.print("Time out error, "); break;

//如果其它,表明感測器發生未知錯誤

default: Serial.print("Unknown error, "); break;

}

//通過串口分別顯示測量濕度、溫度值

Serial.print(DHT.humidity,1);

Serial.print(", ");

Serial.println(DHT.temperature,1);

delay(1000);//延時1s

}

3、運行結果

即當前環境濕度為51%左右,溫度為15℃

五、用途

1、節水農業灌溉

2、溫室大棚等等

六、拓展

通過一番努力,單片機已經終於可以正常工作獲取溫濕度信息了,可是單單在電腦上顯示一下怎麼稱得上智能呢?而且又不可能天天把電腦打開,難道作者是在掛羊頭賣狗肉?要是不是,那麼問題來了,數據可不可以在手機上顯示呢?可以在手機上顯示固然很方便,可是如果現在我不想知道,我可不可以控制單片機不收集數據呢?

答案當然是可以,請關注下一篇《DIY智能溫濕度計(下)——APP控制溫濕度計》

參考來源:

1.Arduino官方網站

2.Arduino中文社區

3.奧松機器人官網

推薦閱讀:

物聯網標識:萬物互聯的基礎
漲知識丨喝水,真的不是一件小事!
一圖看懂阿里雲IoT戰略
物聯網本質的四個邏輯和未來五大發展趨勢
物聯網時代的巨頭在哪裡:3類平台,5種路徑【一】

TAG:Arduino | 物聯網 | 產品 |