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種路徑【一】