Arduino + DHT11: เริ่มต้นวัดอุณหภูมิและความชื้นด้วยเซ็นเซอร์

จะเจ๋งแค่ไหนถ้าบอร์ด Arduino ของเราสามารถ "รู้สึก" ถึงสภาพแวดล้อมรอบตัวและตีความสภาพอากาศในห้องออกมาได้? ในบทเรียนนี้เราจะมาสร้างสถานีวัดอากาศ (Weather Station) แบบง่ายๆ ด้วยเซนเซอร์ DHT11 และแสดงผลผ่านหน้าจอ I2C LCD กันครับ

แต่เดี๋ยวก่อน! เราจะไม่ใช่แค่จับสายไฟมาเสียบๆ แล้วก๊อปแปะโค้ดให้จบๆ ไป แต่เราจะเจาะลึกเข้าไปดูว่า "ข้างในเซนเซอร์" มันทำงานยังไงในระดับกายภาพ นี่คือเป้าหมายของการเรียนรู้ที่จะเปลี่ยนคุณจากการเป็นแค่คนทำตามคู่มือ ให้กลายเป็นคนที่เข้าใจระบบจริงๆ


อุปกรณ์ที่ต้องใช้ (Supplies)

  • บอร์ด Arduino UNO
  • แผ่นขยายพอร์ต (I/O Expansion Shield)
  • เซนเซอร์วัดอุณหภูมิและความชื้น DHT11
  • หน้าจอ I2C LCD
  • สายไฟจัมเปอร์ (Jumper wires)
  • (อ้างอิงจากชุด DFRobot MindPlus Arduino Coding Kit)
DHT11 Sensor
คลิกเพื่อดูรูปภาพอุปกรณ์เพิ่มเติม (View More)
Arduino UNO
Expansion Shield
Supply Detail 1
Supply Detail 2
Supply Detail 3
Supply Detail 4

Step 1: วิดีโอสอนแบบละเอียดยิบ

Step 2: เจาะลึกการทำงานของ DHT11

ข้างในเซนเซอร์สีฟ้าๆ ตัวนี้ มีชิ้นส่วนรับรู้ 2 ตัวและมีไมโครชิปเล็กๆ ที่คอยประมวลผลข้อมูลส่งให้ Arduino ครับ

การวัดความชื้น (Humidity):
ใช้หลักการของ Capacitive Sensing โดยมีขั้วไฟฟ้าสองขั้วคั่นด้วยชั้นโพลิเมอร์ที่ไวต่อความชื้น เมื่ออากาศชื้นขึ้น โพลิเมอร์จะดูดซับไอน้ำ ทำให้ค่าคงที่ไดอิเล็กทริกเปลี่ยนไป (ความสามารถในการเก็บประจุเปลี่ยน) วงจรข้างในก็จะจับการเปลี่ยนแปลงนี้แล้วแปลงเป็นค่าความชื้นสัมพัทธ์ครับ

การวัดอุณหภูมิ (Temperature):
ใช้ตัวต้านทานที่เรียกว่า NTC (Negative Temperature Coefficient) thermistor อธิบายง่ายๆ คือ "ยิ่งร้อน ความต้านทานยิ่งลดลง" ชิปข้างในจะวัดค่าความต้านทานนี้ แล้วเอาไปเทียบกับค่าที่ปรับเทียบมาจากโรงงาน เพื่อแปลงเป็นอุณหภูมิครับ

การประมวลผลและข้อจำกัด:
ข้อดีของ DHT11 คือมีชิปประมวลผลแปลงสัญญาณอนาล็อกเป็นดิจิทัลมาให้เสร็จสรรพ ต่อแค่สาย Data เส้นเดียวก็ใช้ได้เลย สเปกคร่าวๆ คือวัดอุณหภูมิได้ 0-50°C (แม่นยำ ±2°C) และความชื้น 20-80% (แม่นยำ ±5%) แม้จะไม่ใช่เกรดห้องแล็บ แต่เหมาะกับการเรียนรู้สุดๆ ข้อควรระวังคือมันอ่านค่าได้แค่ "วินาทีละ 1 ครั้ง" เท่านั้น (ในโปรเจกต์นี้เราจะตั้งให้อ่านทุกๆ 5 วินาทีเพื่อให้จอแสดงผลนิ่งครับ)

DHT11 Inside
คลิกเพื่อดูรูปโครงสร้างภายใน DHT11 เพิ่มเติม (View More)
DHT11 Detail 1
DHT11 Detail 2
DHT11 Detail 3

Step 3: ผู้สนับสนุนโปรเจกต์

บทเรียนนี้ได้รับการสนับสนุนจาก DFRobot ผู้จัดจำหน่ายฮาร์ดแวร์ Open-source ระดับโลก โดยชุดที่ใช้คือ MindPlus Arduino Coding Kit ซึ่งคัดสรรเซนเซอร์มาให้แล้ว การใช้ชุดคิทที่มีมาตรฐานช่วยให้เราโฟกัสกับการเรียนรู้โค้ดดิ้งได้เต็มที่ โดยไม่ต้องเสียเวลาแก้ปัญหาเรื่องเซนเซอร์พังหรือไม่เข้ากันครับ

DFRobot Kit
คลิกเพื่อดูรูปภาพชุดอุปกรณ์ (View More)
DFRobot Kit Inside

Step 4: ภาพรวมและการต่อสายไฟ

เริ่มจากประกบแผ่น I/O expansion shield ลงบนบอร์ด Arduino UNO เพื่อให้ต่อสายได้ง่ายขึ้น จากนั้น:

  • ต่อเซนเซอร์ DHT11 เข้าที่ Digital Pin 2
  • ต่อหน้าจอ LCD (แบบ I2C) โดยให้สาย SCL เข้าที่ A5 และ SDA เข้าที่ A4 ส่วน VCC ต่อไฟ 5V และ GND ลงกราวด์

อย่าลืมติดตั้งไลบรารี Adafruit DHT sensor และ DFRobot RGBLCD1602 ใน Arduino IDE ก่อนอัปโหลดโค้ดนะครับ

Wiring Overview
คลิกเพื่อดูรูปภาพการต่อสายไฟเพิ่มเติม (View More)
Wiring Detail 1
Wiring Detail 2
Wiring Detail 3
Wiring Detail 4

Step 5: อธิบายหลักการของโค้ด

ในโค้ดจะเริ่มต้นด้วยการดึงไลบรารีเข้ามาใช้งานและกำหนดค่าตัวแปรต่างๆ ในส่วนของ setup() โปรแกรมจะเริ่มเชื่อมต่อกับจอ LCD, เซนเซอร์ DHT11 และ Serial Monitor

ส่วนหัวใจหลักคือ loop() โปรแกรมจะเช็กเวลาว่าผ่านไป 5 วินาทีหรือยัง ถ้าใช่ ก็จะสั่งอ่านค่าอุณหภูมิและความชื้น พร้อมตรวจสอบว่าอ่านค่าได้สำเร็จไหม ถ้าเซนเซอร์เอ๋อ มันจะส่งข้อความ Error ขึ้นจอและ Serial Monitor แต่ถ้าอ่านผ่าน ก็จะปรินต์ข้อมูลสวยๆ ขึ้นจอ LCD เลยครับ (การแยกส่วนดึงข้อมูล ตรวจสอบ และแสดงผลแบบนี้ เป็นแพทเทิร์นการเขียนโค้ดที่ดีมากสำหรับทำระบบใหญ่ๆ ในอนาคต)

Code Snippet 1
คลิกเพื่อดูรูปตัวอย่างโค้ดส่วนที่ 2 (View More)
Code Snippet 2

Step 6: สรุปผล

ในโปรเจกต์นี้ คุณไม่ได้แค่เสียบสายไฟตามรูป แต่คุณได้เข้าใจถึงกลไกการวัดระดับกายภาพของ DHT11 การแปลงสัญญาณภายใน และโครงสร้างซอฟต์แวร์ที่เปลี่ยนข้อมูลดิบให้กลายเป็นสิ่งที่คนอ่านรู้เรื่อง ถือเป็นการก้าวข้ามจากการ "ต่อของเล่น" ไปสู่การ "ออกแบบระบบ (Engineering Systems)" อย่างแท้จริงครับ!

Working Weather Station
คลิกเพื่อดูรูปผลลัพธ์บนจอ LCD (View More)
LCD Display Result

คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา

อ้างอิงและเรียบเรียงโดย: Globalbyteshop Blog

แหล่งที่มาต้นฉบับ: บทความโดย lucascreator
- Instructables: DHT11 Sensor With Arduino - Lesson #20
- ซอร์สโค้ดโปรเจกต์: GitHub Repository
- บทความที่เกี่ยวข้อง: Arduino for Beginners Series | Basic Electronics Principles
- ไฟล์ PDF

แท็ก


Blog posts

© 2026 บริษัท โกลบอลโทรนิค อินเตอร์เทรด จํากัด, ขับเคลื่อนโดย Shopify

    • PayPal

    เข้าสู่ระบบ

    ลืมรหัสผ่านใช่ไหม?

    ยังไม่มีบัญชีใช่ไหม?
    สร้างบัญชี