DHT11 เป็นเซ็นเซอร์สำหรับวัดอุณหภูมิและความชื้นในอากาศ ที่มีขนาดเล็ก และราคาถูกมากๆ เพียงตัวละประมาณ 50 บาท สามารถใช้งานร่วมกับ Arduino ได้ง่ายๆ เพียงแค่จ่ายไฟให้เซ็นเซอร์ และอ่านค่าจาก Arduino โดยใช้ digital pin เพียง 1 pin เท่านั้น
สเปคคร่าวๆ ของ DHT11
- วัดความชื้นในอากาศ (Humidity) ได้ตั้งแต่ 20-90%RH มีโอกาศคลาดเคลื่อน ±5%RH
- วัดอุณหภูมิ (Temperature) ได้ตั้งแต่ 0-50 °C มีโอกาศคลาดเคลื่อน ±2 °C
- ขนาดของตัวเซ็นเซอร์ 1.5 x 1.0 x 0.5 cm
- ใช้ไฟ DC ที่มีแรงดันไฟตั้งแต่ 3-5.5V
DHT11 pinout
DHT11 มีขาทั้งหมด 4 ขา แต่เราจะใช้จริงเพียงแค่ 3 ขาเท่านั้น คือ ขาที่ 1, 2 และ 4 เพราะ datasheet บอกว่า “ขาที่ 3 เป็น Null หรือก็คือไม่ได้ใช้ประโยชน์นั่นเอง”

การต่อวงจร
การต่อวงจรให้ดูรูปด้านล่างครับ เราจะใช้ 5kΩ pull-up resistor สำหรับการต่อสายระหว่าง Arduino กับ DHT11 ในระยะที่ห่างกันไม่เกิน 20 เมตรนะครับ (อ้างอิงจาก DHT11 datasheet)

โค้ดตัวอย่าง
ดาวน์โหลดไลบรารี Dht11_Library.zip (ต้นฉบับมาจาก GitHub ของ Andy Dalton) จากนั้นติดตั้งไลบรารี แล้วใช้โค้ดด้านล่างนี้ทดสอบได้เลย
จุดเด่นของไลบรารีตัวนี้ คือ ไลบรารีมีขนาดเล็กมากเมื่อเทียบกับไลบรารีตัวอื่นเพราะออกแบบมาให้ใช้ได้กับ DHT11 เท่านั้น (ไลบรารีตัวอื่นอาจรองรับ DHT11, DHT22 และ DHT อื่นๆ ในไลบรารีตัวเดียวกัน)
#include <Dht11.h> // สร้าง object dht11 และใช้ pin 2 ในการรับส่งข้อมูล (ใช้ pin ไหนก็ได้ที่สามารถรับส่งข้อมูลแบบ digital) Dht11 _dht11(2); void setup() { Serial.begin(9600); } void loop() { /* * หมายเหตุ: ไลบรารีตัวนี้ไม่จำเป็นต้องเช็คสถานะการอ่านจากฟังก์ชั่น read() ว่าค่าที่อ่านได้นั้นถูกต้องหรือไม่ * เพราะค่าจะอัปเดตเมื่อ checksum ถูกต้องเท่านั้น ดังนั้นค่าที่อ่านได้จะถูกต้องเสมอ */ _dht11.read(); //อ่านค่าจากเซ็นเซอร์ // พิมพ์ค่า ความชื้นในอากาศ หน่วยเป็น %RH Serial.print("Humidity: "); Serial.print(_dht11.getHumidity()); Serial.print(" \%RH"); Serial.print(", "); // เว้นวรรค // พิมพ์ค่า อุณหภูมิ หน่วยเป็นองศาเซลเซียส Serial.print("Temperature: "); Serial.print(_dht11.getTemperature()); Serial.println(" degree Celsius"); // หน่วงเวลา 4 วินาที ก่อนอ่านค่าและแสดงผลครั้งถัดไป (ตรงนี้แล้วแต่ว่าต้องการให้อัปเดตค่าใหม่ช้า/เร็วแค่ไหน) delay(4000); }
เมื่อเปิดดู Serial Monitor จะเห็นผลลัพธ์การทำงานดังนี้
