ความชื้นและอุณหภูมิเป็นพารามิเตอร์ทั่วไปในการวัดสภาพแวดล้อม ในโครงการที่ใช้ Arduino นี้เราจะวัดอุณหภูมิและความชื้นโดยรอบและแสดงบนหน้าจอ LCD 16x2 เซ็นเซอร์วัดอุณหภูมิและความชื้นรวม DHT11 ใช้กับ Arduino uno เพื่อพัฒนาเครื่องวัดอุณหภูมิขนาดเซลเซียสและโครงการวัดความชื้นแบบเปอร์เซ็นต์ ในโครงการก่อนหน้านี้ฉันยังได้พัฒนาเทอร์โมมิเตอร์ดิจิตอลโดยใช้เซ็นเซอร์อุณหภูมิ LM35
โครงการนี้ประกอบด้วยสามส่วน - หนึ่งความรู้สึกความชื้นและอุณหภูมิโดยใช้ความชื้นและอุณหภูมิเซ็นเซอร์ DHT11 ส่วนที่สองอ่านเอาต์พุตของโมดูล DHTsensor และแยกค่าอุณหภูมิและความชื้นออกเป็นจำนวนที่เหมาะสมในหน่วยเปอร์เซ็นต์และระดับเซลเซียส และส่วนที่สามของระบบจะแสดงความชื้นและอุณหภูมิบน LCD
การทำงานของโครงการนี้ใช้การสื่อสารแบบอนุกรมสายเดียว Arduino ตัวแรกส่งสัญญาณเริ่มต้นไปยังโมดูล DHT จากนั้น DHT จะให้สัญญาณตอบสนองที่มีข้อมูลอุณหภูมิและความชื้น Arduino รวบรวมและแยกออกเป็นสองส่วนส่วนหนึ่งคือความชื้นส่วนที่สองคืออุณหภูมิจากนั้นส่งไปยัง LCD 16x2
ที่นี่ในโครงการนี้เราได้ใช้โมดูลเซ็นเซอร์คือDHT11โมดูลนี้มีส่วนประกอบของความชื้นและอุณหภูมิพร้อมเอาต์พุตสัญญาณดิจิตอลที่ปรับเทียบแล้วหมายความว่าโมดูลเซ็นเซอร์ DHT11 เป็นโมดูลรวมสำหรับตรวจจับความชื้นและอุณหภูมิซึ่งให้สัญญาณเอาต์พุตดิจิตอลที่ปรับเทียบแล้ว DHT11 ให้ค่าความชื้นและอุณหภูมิที่แม่นยำมากและรับประกันความน่าเชื่อถือสูงและความเสถียรในระยะยาว เซ็นเซอร์นี้มีส่วนประกอบการวัดความชื้นแบบตัวต้านทานและส่วนประกอบการวัดอุณหภูมิประเภท NTC พร้อมไมโครคอนโทรลเลอร์ 8 บิตในตัวซึ่งมีการตอบสนองที่รวดเร็วและคุ้มค่าและมีให้ในแพ็คเกจ 4-pin แถวเดียว
โมดูล DHT11 ทำงานกับการสื่อสารแบบอนุกรมเช่นการสื่อสารแบบสายเดี่ยว โมดูลนี้ส่งข้อมูลในรูปแบบของพัลส์เทรนของช่วงเวลาที่กำหนด ก่อนที่จะส่งข้อมูลไปยัง arduino จำเป็นต้องมีคำสั่งเริ่มต้นด้วยการหน่วงเวลา และเวลาดำเนินการทั้งหมดประมาณ 4 มิลลิวินาที การส่งข้อมูลที่สมบูรณ์มีขนาด 40 บิตและรูปแบบข้อมูลของกระบวนการนี้แสดงไว้ด้านล่าง:
ข้อมูล RH แบบอินทิกรัล 8 บิต + ข้อมูล RH ทศนิยม 8 บิต + ข้อมูล T อินทิกรัล 8 บิต + ข้อมูลทศนิยม 8 บิต + ผลรวมการตรวจสอบ 8 บิต
เสร็จสิ้นกระบวนการ
ก่อนอื่น arduino จะส่งสัญญาณเริ่มต้นสูงไปต่ำไปยัง DHT11 ด้วยความล่าช้า 18 วินาทีเพื่อให้แน่ใจว่าการตรวจจับของ DHT จากนั้น arduino ดึงสายข้อมูลขึ้นและรอ 20-40µs สำหรับการตอบสนองของ DHT เมื่อ DHT ตรวจพบสัญญาณเริ่มต้นจะส่งสัญญาณตอบสนองระดับแรงดันไฟฟ้าต่ำไปยัง arduino ของการหน่วงเวลาประมาณ 80µs จากนั้นตัวควบคุม DHT จะดึงสายข้อมูลขึ้นมาและเก็บไว้เป็น 80µs สำหรับการจัดเรียงการส่งข้อมูลของ DHT
เมื่อบัสข้อมูลอยู่ที่ระดับแรงดันไฟฟ้าต่ำหมายความว่า DHT11 กำลังส่งสัญญาณตอบสนอง เมื่อเสร็จแล้ว DHT จะดึงสายข้อมูลขึ้นอีกครั้งเป็นเวลา 80µs เพื่อเตรียมการส่งข้อมูล
รูปแบบข้อมูลที่ส่งโดย DHT ไปยัง arduino สำหรับทุกบิตเริ่มต้นด้วยระดับแรงดันไฟฟ้าต่ำ 50 วินาทีและความยาวของสัญญาณระดับแรงดันไฟฟ้าสูงจะเป็นตัวกำหนดว่าบิตข้อมูลเป็น“ 0” หรือ“ 1”
สิ่งสำคัญอย่างหนึ่งคือต้องแน่ใจว่าดึงค่าตัวต้านทานขึ้นเพราะถ้าเราวางเซ็นเซอร์ DHT ที่ระยะ <20 เมตรแนะนำให้ใช้ตัวต้านทานแบบดึงขึ้น 5k หากวาง DHT ที่ยาวกว่า 20 เมตรให้ใช้ตัวต้านทานดึงค่าที่เหมาะสม
แผนภาพวงจรและคำอธิบาย
จอแสดงผลคริสตัลเหลวใช้สำหรับแสดงอุณหภูมิและความชื้นซึ่งเชื่อมต่อโดยตรงกับ arduino ในโหมด 4 บิต พินของ LCD ได้แก่ RS, EN, D4, D5, D6 และ D7 เชื่อมต่อกับพินดิจิตอลของ arduino หมายเลข 2, 3, 4, 5, 6 และ 7 และโมดูลเซ็นเซอร์ DHT11 ยังเชื่อมต่อกับพินดิจิตอล 12 ของ arduino ด้วย ตัวต้านทานแบบดึงขึ้น 5k
คำอธิบายการเขียนโปรแกรม
ในการเขียนโปรแกรมเราจะใช้ไลบรารีที่สร้างไว้ล่วงหน้าสำหรับเซ็นเซอร์ DHT11 และโมดูลจอแสดงผล LCD
จากนั้นเราได้กำหนดพินสำหรับ LCD และเซ็นเซอร์ DHT และเริ่มต้นทุกสิ่งในการตั้งค่า จากนั้นวนซ้ำโดยใช้ฟังก์ชัน dht อ่านเซ็นเซอร์ DHT จากนั้นใช้ฟังก์ชัน dht บางอย่างที่เราดึงความชื้นและอุณหภูมิออกมาแสดงบน LCD
สัญลักษณ์องศาที่นี่ถูกสร้างขึ้นโดยใช้วิธีอักขระที่กำหนดเอง