[尼克的robot]實做arduino溫溼度計 DHT21(22)+序列埠即時電腦顯示數值
從無到有 最詳細的步驟說明
首先,看了一下DHT系列感應器的規格後整理一下重點
目前市面上有有DHT11,DHT21,DHT22三種
除了DHT11之外其他兩種量測溫度的範圍都一樣
而精準度方面,DHT21就有很好的表現
也就是說如果想要玩稍微精準一點的量測
建議還是購買21以上的版本
至於尼克的感應器是AM2301,也就是DHT21
使用上就很讓我驚訝,跟DHT11精準度相差甚遠
以下是比較關鍵數據的比較表
| DHT11 | DHT21 | DHT22 | |
| 量測範圍 |
0 - 50 |
(-40) - 80 | (-40) - 80 |
| 分辨率 | 1 | 0.1 | 0.1 |
| 25度時精度 | +/-4 | +/-3 | +/-2 |
回歸正題,這次使用到的材料有 :
溫溼度感應器一顆,UNO板一塊
接線圖 : (右邊那也是溫度感應器,找不到dht)
然後大部分的DHT溫溼度感器接3.3或5V都可以
如果不確定的可以看他的規格書或先接3.3V
程式部分,先複製以下程式到arduino軟體
然後點擊程式最上方的兩個連結下載函示庫(下方有圖文解釋)
如果底下程式無法使用請到下方連結下載
(複製到這的程式某些文字好像會改變)
(也有可能複製到廣告,可以檢查一下奇怪的文字出現)
記得要整個資料夾下載喔(程式要存在一個同名的資料夾裡面)
https://drive.google.com/drive/folders/1wKF7TWhs4Y7Amy1VJE9YxolkVJNrC8gP?usp=sharing
//程式部分
/*
尼克的robot網址 :
https://kenny2019.pixnet.net/blog
*/
// Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor
// DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // 連接digital 2號針腳
// 選擇你感應器的型號
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(9600);
dht.begin(); //初始化感應器
Serial.println("DHTxx Unified Sensor Example");
sensor_t sensor;
dht.temperature().getSensor(&sensor);
dht.humidity().getSensor(&sensor);
delayMS = sensor.min_delay / 1000;
}
void loop() {
delay(delayMS);
// 獲取感應器讀值
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println("Error reading temperature!");
}
else {
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println(" *C");
}
// 獲取感應器濕度讀值
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println("Error reading humidity!");
}
else {
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
}
這次使用到額外的兩個函式庫
所以要另外下載加入
加入程式庫教學 :
進入程式上方網址連結後
點擊下載ZIP壓縮檔
下載完成後,進入arduino軟體點擊 草稿碼>>匯入程式庫>>加入ZIP程式庫
然後選擇下載下來的兩個程式庫就行囉
然後選擇你感應器的型號 :
找到底下三行程式
把你的感應器型號前方的//符號刪除
另外兩行前方加入//就可以了
接著直接上傳到開發板
上傳成功後,點擊右上方的放大鏡就可以看見數值了
下一篇預計教大家怎麼使用lcd模組顯示東西
然後再把溫溼度顯示在上面
