กลับหน้าหลัก
views
วิธีใช้งาน Arduino DHT22 AM2302 Module วัดอุณหภูมิและความชื้น
Last updated on

วิธีใช้งาน Arduino DHT22 AM2302 Module วัดอุณหภูมิและความชื้น


วิธีใช้งาน Arduino DHT22 AM2302 Module วัดอุณหภูมิและความชื้น

บทความนี้จะพาต่อ DHT22 AM2302 Module V3.0 กับ Arduino UNO แล้วเขียนโค้ดอ่านค่าความชื้น (Humidity) กับอุณหภูมิ (Temperature) ออกมาแสดงผลผ่าน Serial Monitor

แผนภาพวงจร Arduino UNO ต่อกับ DHT22 Module V3.0 แสดงสาย 3 เส้น VCC-GND-DAT ไปที่ขา 5V, GND, และ D2 ตามลำดับ

DHT22 vs DHT11 เลือกตัวไหนดี

DHT22 ย่อมาจาก High Accuracy Digital Temperature and Humidity Sensor ตัวเซ็นเซอร์รวมวัดทั้งอุณหภูมิและความชื้นในตัวเดียว ต่างจาก DHT11 ตรงที่ความแม่นยำสูงกว่า

สเปคDHT22DHT11
ความแม่นยำความชื้น±2%RH (สูงสุด ±5%RH)±5%RH
ความแม่นยำอุณหภูมิ±0.5°C±2°C
รองรับช่วงความชื้น0-100%RH20-90%RH
รองรับช่วงอุณหภูมิ-40 ถึง 80°C0 ถึง 50°C
ราคา (ประมาณ)~150-200 บาท~50 บาท

ถ้าต้องการวัดค่าแม่นยำแนะนำ DHT22 เลย โค้ด Arduino เขียนเหมือน DHT11 สามารถเปลี่ยนเซ็นเซอร์ได้โดยไม่ต้องแก้โค้ดมาก

อุปกรณ์ที่ต้องเตรียม

  • Arduino UNO R3
  • DHT22 AM2302 Module V3.0
  • สาย USB สำหรับอัพโหลดโค้ด
  • บอร์ดทดลอง (Breadboard) ถ้าต้องการจัดวางสายให้เป็นระเบียบ
  • สายจัมเปอร์ ผู้-ผู้ หรือ ผู้-เมีย ตามชอบ

วิธีต่อวงจร DHT22 กับ Arduino

DHT22 AM2302 Module V3.0 มีขา 3 ขา ต่องตามนี้

ขา Moduleต่อกับหมายเหตุ
VCC5V (Arduino)จ่ายไฟ 5V
GNDGND (Arduino)กราวด์ร่วม
DATขา D2 (Arduino)ขาสัญญาณ data
ภาพขยาย DHT22 Module V3.0 บอกตำแหน่งขา VCC, GND, DAT แต่ละข้าง

ข้อดีของ Module V3.0 คือมีตัวต้านทาน Pull-up ติดมาบนบอร์ดแล้ว ต่อสาย 3 เส้นเข้า Arduino ได้เลยไม่ต้องต่อ R ภายนอกเพิ่ม ถ้าใช้ DHT22 แบบแผงเปล่า (ไม่ใช่ Module) ต้องต่อ R 4.7k - 10k ระหว่าง VCC กับ DAT ด้วย

วิธีติดตั้ง Library สำหรับ DHT22

ต้องลง Library 2 ตัว คือ

  1. DHT-sensor-library - ตัวหลักสำหรับอ่านค่าจาก DHT sensor
  2. Adafruit_Sensor - dependency ที่ตัวหลักต้องการ

ดาวน์โหลด Library จาก Mediafire ที่ให้ไว้ในบทความต้นทาง หรือหาใน Arduino Library Manager ก็ได้

วิธีลง Library ด้วยไฟล์ zip:

  1. ดาวน์โหลดไฟล์ .zip ทั้ง 2 ตัว
  2. แยกไฟล์ด้วย WinRAR หรือ WinZip
  3. Copy โฟลเดอร์ที่แยกออกมาไปวางใน Documents/Arduino/libraries/
  4. ปิด Arduino IDE แล้วเปิดใหม่
ภาพโฟลเดอร์ libraries ที่มี DHT_sensor_library และ Adafruit_Sensor พร้อมกัน

โค้ด Arduino อ่านค่า DHT22

#include <DHT.h>

#define DHTPIN 2        // ขา DATA ต่อกับ D2
#define DHTTYPE DHT22   // ประกาศว่าใช้ DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
  Serial.println("DHT22 Test Ready");
}

void loop() {
  // รอเซ็นเซอร์พร้อมวัด เพราะ DHT22 ใช้เวลา ~2 วินาทีต่อครั้ง
  delay(2000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature(); // Celsius

  // ตรวจสอบว่าอ่านค่าได้ไหม
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // แสดงผลความชื้น
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");

  // แสดงผลอุณหภูมิ
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print(" *C\t");

  // คำนวณ Heat Index (ดัชนีความร้อนที่ผิวสัมผัสรู้สึก)
  float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
  Serial.print("Heat Index: ");
  Serial.print(heatIndex);
  Serial.println(" *C");
}

ถ้าต้องการเปลี่ยนไปใช้ DHT11 แทน แก้บรรทัด #define DHTTYPE DHT22 เป็น DHT11 ได้เลย ส่วนขา DATA ก็ปรับได้ตามสะดวกแต่ต้องแก้ DHTPIN ให้ตรงกับขาที่ต่อจริง

วิธีอัพโหลดโค้ดและดูผลลัพธ์

  1. เปิด Arduino IDE แล้ว Copy โค้ดด้านบนไปวาง
  2. เลือก Board: Arduino UNO จากเมนู Tools > Board
  3. เลือก Port ที่บอร์ดเสียบอยู่จากเมนู Tools > Port
  4. กด Upload (รูปลูกศรขวา) รอจนขึ้น “Done uploading.”
  5. เปิด Serial Monitor (รูปแว่นขยาย) ตั้งความเร็ว 9600 baud
  6. จะเห็นค่าความชื้น อุณหภูมิ และ Heat Index แสดงทุก 2 วินาที

[image: หน้าต่าง Serial Monitor แสดงค่า Humidity, Temperature, Heat Index ในรูปแบบตาราง]

ทดสอบ DHT22 ด้วยวิธีง่าย ๆ

หลังจากอ่านค่าได้แล้ว ลองทดสอบความไวของเซ็นเซอร์ด้วยวิธีนี้

ทดสอบด้วยผ้าเย็น

เอาผ้าชื้นเย็นวางบนตัวเซ็นเซอร์ จะเห็นค่าความชื้นเพิ่มขึ้นช้า ๆ แล้วค่อย ๆ ลดลงเมื่อเอาผ้าออก ส่วนอุณหภูมิจะลดลงเร็วกว่า

ทดสอบด้วยลมร้อน

ใช้ไดร์เป่าผมเป่าลมร้อนไปที่หัวเซ็นเซอร์ ค่าความชื้นจะลดลงเร็วมากเพราะความร้อนทำให้ไอน้ำในอากาศระเหยไป พอปิดไดร์ค่าความชื้นจะค่อย ๆ กลับมาเป็นปกติ

[image: กราฟเปรียบเทียบค่าความชื้นและอุณหภูมิเมื่อทดสอบด้วยผ้าเย็นและไดร์เป่าผม]

วิดีโออ้างอิง

สรุป

DHT22 AM2302 Module V3.0 ต่อใช้งานง่ายเพราะมี Pull-up มาบนบอร์ด ต่อสาย 3 เส้น เสียบ Library 2 ตัว แล้วอัพโค้ดไปก็ใช้งานได้เลย ความแม่นยำสูงกว่า DHT11 มาก เหมาะสำหรับงานที่ต้องการวัดอุณหภูมิและความชื้นแบบแม่นยำ เช่น ระบบควบคุมสภาพอากาศ โรงเรือน ห้องเซิร์ฟเวอร์ หรือสถานีตรวจอากาศ

อยากทำโปรเจคแบบนี้?

รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน

หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้ารวมบริการ

จ้างทำโปรเจคเลย

ประเมิน Project

อยากทำงานแนวนี้? แยกไปกรอกหน้าประเมินราคาได้เลย

ไม่ยัดฟอร์มยาวไว้ใต้บทความแล้ว กดปุ่มเดียวไปหน้าประเมิน Project กรอกโจทย์แบบตัวใหญ่ อ่านง่าย แล้วเอา Reference Code ไปคุยต่อใน LINE

ความคิดเห็น

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...