DHT11 เหมาะสำหรับการใช้งานที่ต้องการวัดอุณหภูมิและความชื้นในระดับพื้นฐานและไม่ต้องการความแม่นยำสูง เหมาะสำหรับการเริ่มต้นเรียนรู้เกี่ยวกับการใช้งานเซนเซอร์อุณหภูมิและความชื้นในโปรเจคต่างๆ
1.อุปกรณ์ที่ต้องใช้
- Arduino UNO
ซื้อเลยบน Shopee
- DHT11
ซื้อเลยบน Shopee
2.ติดตั้ง Library ที่จำเป็น
ติดตั้ง Library DHT11
ArduinoIDE > Sketch > Include Library > Add .ZIP Library > หาไฟล์ที่ดาวน์โหลด
3.ต่ออุปกรณ์
.png?alt=media&token=bef5671b-684f-48bd-95f1-36945b683b4a)
Arduino UNO
DHT11
5V
VCC
Pin 8
DAT
GND
GND
3.ลงโปรแกรม
Copy โค้ดด้านล่าง
Arduino
1#include <Adafruit_Sensor.h>
2#include <DHT.h>
3#include <DHT_U.h>
4#define DHTPIN 8
5#define DHTTYPE DHT11 // DHT 11
6DHT_Unified dht(DHTPIN, DHTTYPE);
7uint32_t delayMS;
8void setup() {
9 Serial.begin(9600);
10 dht.begin();
11}
12void loop() {
13 // หน่วงเวลาสองสามวินาทีระหว่างการวัดแต่ละครั้ง
14 delay(2000);
15 // การอ่านค่าอุณหภูมิหรือความชื้นใช้เวลาประมาณ 250 มิลลิวินาที
16 // ค่าที่อ่านได้อาจช้ากว่าความเป็นจริงถึง 2 วินาที
17 float h = dht.readHumidity();
18 // อ่านค่าอุณหภูมิเป็นองศาเซลเซียส (ค่าเริ่มต้น)
19 float t = dht.readTemperature();
20 // อ่านค่าอุณหภูมิเป็นองศาฟาเรนไฮต์ (isFahrenheit = true)
21 float f = dht.readTemperature(true);
22 // ตรวจสอบว่าการอ่านค่าล้มเหลวหรือไม่ ถ้าล้มเหลวให้ออกก่อน (เพื่อลองใหม่อีกครั้ง)
23 if (isnan(h) || isnan(t) || isnan(f)) {
24 Serial.println(F("Failed to read from DHT sensor!"));
25 return;
26 }
27 // คำนวณดัชนีความร้อนเป็นองศาฟาเรนไฮต์ (ค่าเริ่มต้น)
28 float hif = dht.computeHeatIndex(f, h);
29 // คำนวณดัชนีความร้อนเป็นองศาเซลเซียส (isFahrenheit = false)
30 float hic = dht.computeHeatIndex(t, h, false);
31 Serial.print(F("Humidity: "));
32 Serial.print(h);
33 Serial.print(F("% Temperature: "));
34 Serial.print(t);
35 Serial.print(F("°C "));
36 Serial.print(f);
37 Serial.print(F("°F Heat index: "));
38 Serial.print(hic);
39 Serial.print(F("°C "));
40 Serial.print(hif);
41 Serial.println(F("°F"));
42}1#include <Adafruit_Sensor.h>
2#include <DHT.h>
3#include <DHT_U.h>
4#define DHTPIN 8
5#define DHTTYPE DHT11 // DHT 11
6DHT_Unified dht(DHTPIN, DHTTYPE);
7uint32_t delayMS;
8void setup() {
9 Serial.begin(9600);
10 dht.begin();
11}
12void loop() {
13 // หน่วงเวลาสองสามวินาทีระหว่างการวัดแต่ละครั้ง
14 delay(2000);
15 // การอ่านค่าอุณหภูมิหรือความชื้นใช้เวลาประมาณ 250 มิลลิวินาที
16 // ค่าที่อ่านได้อาจช้ากว่าความเป็นจริงถึง 2 วินาที
17 float h = dht.readHumidity();
18 // อ่านค่าอุณหภูมิเป็นองศาเซลเซียส (ค่าเริ่มต้น)
19 float t = dht.readTemperature();
20 // อ่านค่าอุณหภูมิเป็นองศาฟาเรนไฮต์ (isFahrenheit = true)
21 float f = dht.readTemperature(true);
22 // ตรวจสอบว่าการอ่านค่าล้มเหลวหรือไม่ ถ้าล้มเหลวให้ออกก่อน (เพื่อลองใหม่อีกครั้ง)
23 if (isnan(h) || isnan(t) || isnan(f)) {
24 Serial.println(F("Failed to read from DHT sensor!"));
25 return;
26 }
27 // คำนวณดัชนีความร้อนเป็นองศาฟาเรนไฮต์ (ค่าเริ่มต้น)
28 float hif = dht.computeHeatIndex(f, h);
29 // คำนวณดัชนีความร้อนเป็นองศาเซลเซียส (isFahrenheit = false)
30 float hic = dht.computeHeatIndex(t, h, false);
31 Serial.print(F("Humidity: "));
32 Serial.print(h);
33 Serial.print(F("% Temperature: "));
34 Serial.print(t);
35 Serial.print(F("°C "));
36 Serial.print(f);
37 Serial.print(F("°F Heat index: "));
38 Serial.print(hic);
39 Serial.print(F("°C "));
40 Serial.print(hif);
41 Serial.println(F("°F"));
42}
4.ผลลัพธ์
Serial Monitor จะแสดงค่าอุณหภูมิและความชื้นขณะนั้น
.png?alt=media&token=04c94bb0-87ea-435b-97cb-9ee95e5c8eed)
