บทที่ 12: การเขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นเซนเซอร์ DHT22

UTEN BOONLIAM Avatar
บทที่ 12 / 26

บทที่ 12: การเขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นเซนเซอร์ DHT22

เซนเซอร์ DHT22 คือเซนเซอร์สำหรับวัดอุณหภูมิและความชื้นสัมพัทธ์ (Temperature & Relative Humidity Sensor) เป็นอุปกรณ์ที่สามารถนำมาประยุกต์ใช้งานทางด้านระบบสมองกลฝังตัวได้หลากหลาย เช่น การวัดและควบคุมอุณหภูมิและความชื้น ระบบบันทึกข้อมูลเกี่ยวกับอุณหภูมิและความชื้นในห้อง เป็นต้น อุปกรณ์ประเภทนี้แตกต่างกันตามผู้ผลิต ราคา ความแม่นยำ ความละเอียดในการวัด

ในการติดต่อสื่อสารกับ DHT22 จะใช้ขาสัญญาณดิจิทัลเพียงเส้นเดียว(onewire bus)ในการเชื่อมต่อแบบบิตอนุกรมสองทิศทาง (serial data, bi-directional) โดยนำมาเชื่อมต่อกับขา Arduino เพื่ออ่านค่าจากเซนเซอร์

คุณสมบัติของอุปกรณ์

  • ใช้แรงดันไฟเลี้ยงได้ในช่วง: 3.3V ถึง 5.5V DC (ดังนั้นจึงใช้ได้กับ 3.3V และ 5V)

  • วัดอุณหภูมิได้ในช่วง: -40 to 80 °C (±0.5 °C accuracy)

  • วัดความชื้นสัมพัทธ์ได้ในช่วง: 0 – 100 RH% (2 – 5% accuracy)

  • อัตราการวัดสูงสุด: 0.5Hz

  • คอนเนกเตอร์แบบ 4 ขา ( 0.1″ / 2.54mm spacing)

Pin 1 = VCC

Pin 2 = SDA (Serial data, bidirectional)

Pin 3 = N.C. (Not Connect)

Pin 4 = GND

บอร์ด Arduino Learning Kit ตัวเซ็นเซอร์ DHT22 ได้ถูกติดตั้งอยู่บนบอร์ดอยู่แล้ว แต่ขาสัญญาณที่ใช้ติดต่อกับไมโครคอนโทรลเลอร์จะใช้ร่วมกับเซนเซอร์ DS18B20 ซึ่งเป็นเซนเซอร์วัดค่าอุณหภูมิอีกตัวหนึ่งสื่อสารแบบ onewire bus เช่นกัน ซึ่งในการใช้งานเราต้องเลือกจั๊มเปอร์ว่าต้องการติดต่อกับเซนเซอร์ตัวไหน

ขาสัญญาณที่ต่อกับ DHT22
Arduino Uno 4
Arduino Nano 4
ESP32(ESP-WROM-32) 23

ตารางที่ 12. 1 ขาที่ต่อใช้งานกับเซนเซอร์ DHT22

เขียนโปรแกรมสำหรับอ่านค่าอุณหภูมิและความชื้นจากเซนเซอร์ DHT22

  1. เปิดโปรแกรม Arduino IDE ขึ้นมา เลือกบอร์ดเป็นชนิด Arduino Uno, Nano หรือ ESP32 จากนั้นทำการ ดาวน์โหลดไลบรารี่ DHT22 คลิกที่ Sketch -> Include Library -> Manage Libraries ดังตัวอย่างรูปด้านล่าง ทำการติดตั้งให้เรียบร้อย (ไลบรารี่นี้สามารถใช้ได้กับ Arduino Uno, Nano และ ESP32)

  1. เปิด Example sketch โดยทำการเปิดตัวอย่างโปรแกรมที่มีชื่อว่า DS3231_test โดยคลิกที่ File -> Examples -> SimpleDHT->DHT22Default

  1. ที่บรรทัดที่ 7 ทำการเปลี่ยนขาสัญญาณที่ต่อกับเซนเซอร์ DHT22 จากนั้นทดลองรันโปรแกรม และดูผลจาก Serial Monitor

อธิบายการทำงานของโค้ด

  • บรรทัดที่ 7-8 เป็นการกำหนดขาที่ติดต่อกับเซนเซอร์ DHT22 และประกาศตัวแปร object

  • บรรทัดที่ 22-24 เป็นการประกาศตัวแปรเอาไว้รองรับค่าอุณหภูมิ ความชื้นและค่า error

  • บรรทัดที่ 25-28 จะเป็นการตรวจสอบว่าเจอเซนเซอร์ DHT22 หรือไม่ ถ้าไม่เจอก็ให้แสดงข้อความบน Serial Monitor “Read DHT22 failed, err=” ตามด้วย error code

  • บรรทัดที่ 30-32 จะทำการแสดงค่าอุณหภูมิและความชื้นทาง Serial Monitor

แบบฝึกหัดสำหรับทบทวนความเข้าใจ

  1. เขียนโปรแกรมโดยใช้ ESP32(ESP-WROM-32) ให้แสดงค่าบนหน้าจอ LCD16x2 โดย

    • บรรทัดแรกให้แสดงค่าอุณหภูมิ T: xx.x C

    • บรรทัดที่สองให้แสดงค่าความชื้นสัมพัทธ์ H: xx.x %

 

 

 

  1. จากโปรแกรมในข้อที่ 1 ให้เขียนเงื่อนไขโดยใช้ความรู้เรื่องการควบคุมรีเลย์ โดย

    • ถ้าอุณหภูมิสูงกว่าอุณหภูมิปัจจุบันไป 2 องศา (ยกตัวอย่างเช่น ตอนนี้อุณหภูมิที่วัดได้ 25 องศา ให้เซตไว้ที่ 27 องศา) ให้รีเลย์ตัวที่ 1 ทำการเปิด และเมื่ออุณหภูมิกลับมาค่าเดิม ให้รีเลย์ตัวที่ 1 ปิด

    • ถ้าความชื้นสัมพัทธ์สูงกว่าความชื้นสัมพัทธ์ปัจจุบันไป 10% (ยกตัวอย่างเช่น ตอนนี้ความชื้นสัมพัทธ์ที่วัดได้ 70% ให้เซตไว้ที่ 80 องศา) ให้รีเลย์ตัวที่ 2 ทำการเปิด และเมื่อความชื้นสัมพัทธ์กลับมาค่าเดิม ให้รีเลย์ตัวที่ 2 ปิด

    • เมื่อเขียนเสร็จ ให้ทำการทดลองโดยการเพิ่มและลดอุณหภูมิและความชื้นสัมพัทธ์ให้กับเซนเซอร์

 

 

 

  1. จากโปรแกรมข้อที่ 2 ให้เพิ่มส่วนของการแสดงสถานะรีเลย์ โดยให้แสดงออกที่หน้าจอ OLED128x64 โดย บรรทัดแรกให้แสดงสถานะรีเลย์ตัวที่ 1 และบรรทัดที่สอง ให้แสดงสถานะรีเลย์ตัวที่ 2

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *