DHT11 คืออะไร? วิธีใช้งานเซ็นเซอร์วัดอุณหภูมิและความชื้น
DHT11 คือเซนเซอร์ดิจิทัลสำหรับวัด อุณหภูมิ (Temperature) และ ความชื้นสัมพัทธ์ (Relative Humidity) ในอากาศ เป็นหนึ่งในเซนเซอร์ที่ได้รับความนิยมมากที่สุดสำหรับโปรเจกต์ Arduino และงานอดิเรกด้านอิเล็กทรอนิกส์ เนื่องจากใช้งานง่าย, ราคาถูก, และให้ผลลัพธ์ที่แม่นยำในระดับหนึ่ง
ภายในตัว DHT11 ประกอบด้วยตัววัดความชื้นแบบ Capacitive และตัววัดอุณหภูมิแบบ Thermistor พร้อมวงจรแปลงสัญญาณ Analog เป็น Digital ทำให้สามารถส่งข้อมูลออกมาทางสายสัญญาณเพียงเส้นเดียวได้
สเปคของ DHT11
| ช่วงวัดความชื้น |
20–90% RH (ความคลาดเคลื่อน ±5% RH) |
| ช่วงวัดอุณหภูมิ |
0–50°C (ความคลาดเคลื่อน ±2°C) |
| แรงดันไฟเลี้ยง |
3.3V – 5.5V |
| สัญญาณเอาต์พุต |
ดิจิทัล (แบบ Single-wire bus) |
| อัตราการอ่านข้อมูล |
สูงสุด 1 ครั้งต่อวินาที (1Hz) |
| จำนวนขา |
3 หรือ 4 ขา (หากเป็นโมดูลจะใช้จริง 3 ขา) |
การใช้งาน DHT11 กับ Arduino
1. การต่อสาย
| ขาบน DHT11 |
ต่อกับขาบน Arduino |
| VCC (หรือ +) |
5V |
| GND (หรือ -) |
GND |
| DATA (หรือ OUT) |
ขา Digital ใดก็ได้ (เช่น D2) |
หมายเหตุ: หากใช้เซนเซอร์ DHT11 แบบ 4 ขาที่ไม่มีแผงวงจร (โมดูล) อาจต้องต่อตัวต้านทาน Pull-up ขนาด 4.7KΩ - 10KΩ ระหว่างขา VCC และขา DATA ด้วย แต่ถ้าเป็นแบบโมดูล (3 ขา) ส่วนใหญ่จะมีตัวต้านทานนี้มาให้แล้ว
2. การติดตั้งไลบรารี
ก่อนเขียนโค้ด จำเป็นต้องติดตั้งไลบรารีสำหรับ DHT Sensor ก่อน:
- เปิดโปรแกรม Arduino IDE ไปที่เมนู Tools > Manage Libraries...
- ในช่องค้นหา พิมพ์ "DHT sensor library"
- มองหาไลบรารีจาก Adafruit และกดปุ่ม "Install" (โปรแกรมอาจถามให้ติดตั้งไลบรารีอื่นที่เกี่ยวข้องด้วย ให้กด Install all)
3. ตัวอย่างโค้ด Arduino
โค้ดนี้จะอ่านค่าอุณหภูมิและความชื้นจาก DHT11 ทุกๆ 2 วินาที แล้วแสดงผลทาง Serial Monitor
#include <DHT.h>
#define DHTPIN 14 // GPIO 14
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("อุณหภูมิ: ");
Serial.print(t);
Serial.print("°C ความชื้น: ");
Serial.print(h);
Serial.println("%");
delay(2000);
}