**Arduino DHT11 溫濕度感測器入門指南**
Arduino 是一個開放源碼的電子原型平台,它提供了一個易於使用的開發環境,讓用戶可以輕鬆地編程控制各種電子元件。在 IoT(物聯網)應用中,溫濕度監測是一個常見的需求,而 DHT11 溫濕度感測器因其簡單、低成本和易用性,成為 Arduino 項目的首選感測器之一。
**DHT11 概述**
DHT11 是一款整合了溫度和濕度傳感器的單一組件,能提供實時的環境溫度和相對濕度數據。該傳感器包括一個數字信號處理器,能夠將感測到的數據轉換為易於讀取的數字格式,並通過單線接口與微控制器如 Arduino 進行通信。
**工作原理**
DHT11 使用 PWM(脈寬調制)信號來傳輸溫度和濕度數據。在每次數據傳輸開始時,DHT11 發送一個低電平信號,然後 Arduino 會讀取接下來的一系列高/低脈沖,這些脈沖代表了數據位。數據位由 40 個脈沖組成,其中前 32 個脈沖代表溫度和濕度數據,後 8 個脈沖用於校驗。
**接線與硬件設置**
1. **連接方式**:DHT11 的數據線連接到 Arduino 的任意数字输入引脚,如 D2 或 D4。电源线连接到 +5V,接地线连接到 GND。
2. **Arduino 库**:使用 Arduino IDE,你需要添加 DHT 库。在 Sketch > Include Library > Manage Libraries 中搜索并安装 "DHT Sensor Library"。
3. **初始化和讀取**:在代碼中,首先实例化 DHT 对象,指定連接的引脚和傳感器類型(DHT11),然後調用 `read()` 函數來獲取溫度和濕度數據。
**代碼示例**
```cpp
#include <DHT.h>
#define DHTPIN 4 // 接続する Arduino 引脚
#define DHTTYPE DHT11 // DHT11 型号
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
}
void loop() {
float h = dht.readHumidity(); // 語句用於讀取濕度
float t = dht.readTemperature(); // 語句用於讀取溫度
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
} else {
Serial.print("濕度: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("溫度: ");
Serial.print(t);
Serial.println(" °C");
delay(2000); // 等待 2 秒再讀取,避免過快讀取導致失敗
}
}
```
**注意事項**
1. **讀取間隔**:DHT11 的數據讀取間隔至少需 2 秒,否則可能導致讀取失敗。
2. **抗干擾措施**:DHT11 的數據線需要有良好的屏蔽,以降低噪聲影響。
3. **錯誤處理**:在讀取數據時,要檢查返回的值是否有效,避免因傳感器問題或通信失敗導致的無效數據。
總體來說,Arduino 和 DHT11 溫濕度感測器的組合為初學者和經驗豐富的開發者提供了簡單而強大的工具,可以輕鬆地監測和記錄環境條件。通過理解其工作原理、正確接線以及編程讀取數據,你可以創建出一系列從簡單數據記錄到智能環境控制的 Arduino 項目。
- 1
- 2
- 3
前往页