DHT22 กับสายข้อมูลเส้นเดียว
เซนเซอร์นี้ไม่ได้ให้แรงดันออกมา แต่ส่งเป็นจังหวะสัญญาณบนสายเส้นเดียว และต้องมีตัวต้านทานพูลอัปเสมอ
ในบทนี้คุณจะ
- ต่อ DHT22 พร้อมตัวต้านทานพูลอัป 10 kΩ
- อธิบายว่าทำไมสายข้อมูลเส้นเดียวต้องมีพูลอัป
- อ่านค่าอุณหภูมิและความชื้นออกทาง Serial
1. สายเดียว สองทิศทาง
บอร์ดดึงสายลงเพื่อเริ่มถาม แล้วปล่อย จากนั้นเซนเซอร์เป็นฝ่ายตอบบนสายเส้นเดียวกัน ทั้งสองฝั่งจึงดึงลงได้อย่างเดียว ไม่มีฝั่งไหนดันขึ้น การออกแบบแบบนี้เรียกว่าโอเพนเดรน
2. พูลอัปคือคนดันขึ้น
เมื่อไม่มีใครดึงลง สายจะลอย ไม่ใช่สูง ตัวต้านทาน 10 kΩ จาก DATA ไป 5 V คือสิ่งที่ทำให้สายกลับขึ้นเป็นสูง ถ้าไม่ใส่ สัญญาณจะไม่มีขอบให้จับ และเซนเซอร์จะเหมือนไม่ตอบเลย นี่เป็นสาเหตุอันดับหนึ่งที่คนต่อ DHT22 แล้วไม่ได้ค่า
3. ถามถี่เกินไปก็ไม่ได้
DHT22 ต้องการเวลาพักราวสองวินาทีระหว่างการอ่าน ถ้าถามเร็วกว่านั้นจะได้ค่าเดิมหรือได้ค่าผิด การอ่านเซนเซอร์ไม่ใช่การอ่านตัวแปร มันมีต้นทุนเวลาเสมอ ต่อ DATA เข้า D4 แล้วลองดูว่าเซนเซอร์ตอบกลับหรือไม่
4. ตอบกลับมา ไม่ได้แปลว่าถูก
ลองใช้ตัวควบคุมความผิดพลาดจำลองที่เซนเซอร์ดูความต่าง ตั้งเป็น "มีไฟแต่ไม่ตอบ" สายจะเงียบ บทเรียนนี้จะไม่ผ่านเพราะไม่มีอะไรกลับมาเลย แล้วตั้งเป็น "checksum ไม่ตรง" เซนเซอร์จะตอบกลับมาครบถ้วน ขอบสัญญาณมาถูก เฟรมยาวถูก และบทเรียนนี้ผ่าน แต่ตัวเลขข้างในผิด การทำให้เซนเซอร์ตอบได้คือสิ่งที่ F6.1 สอน ส่วนการตัดสินว่าเชื่อค่านั้นได้หรือไม่ต้องใช้ checksum ซึ่งอยู่ใน F6.4 ตอนที่คุณถอดเฟรมเอง
ตรวจความเข้าใจ
ต่อ DHT22 ครบสามเส้นแล้วแต่ไม่ได้ค่าเลย สาเหตุที่น่าจะเป็นมากที่สุดคืออะไร
ลงมือทำ
ต่อ DHT22 พร้อมตัวต้านทานพูลอัป แล้วส่งจังหวะเริ่มต้นให้เซนเซอร์ตอบกลับมาได้
เริ่มแล็บใน StudioStudio จะเปิดวงจรเริ่มต้นของบทนี้ พร้อมคำใบ้ เฉลย และการตรวจคำตอบจากค่าที่วัดได้