สารบัญ:

Room Thermostat - Arduino + Ethernet: 3 ขั้นตอน
Room Thermostat - Arduino + Ethernet: 3 ขั้นตอน

วีดีโอ: Room Thermostat - Arduino + Ethernet: 3 ขั้นตอน

วีดีโอ: Room Thermostat - Arduino + Ethernet: 3 ขั้นตอน
วีดีโอ: Arduino Thermostat HVAC | Google Nest | Part #1 | Tutorial # 40 2024, กรกฎาคม
Anonim
เทอร์โมสตัทในห้อง - Arduino + Ethernet
เทอร์โมสตัทในห้อง - Arduino + Ethernet

ในแง่ของฮาร์ดแวร์ โครงการใช้:

  • Arduino Uno / เมก้า 2560
  • อีเธอร์เน็ตชิลด์ Wiznet W5100 / โมดูลอีเธอร์เน็ต Wiznet W5200-W5500
  • เซ็นเซอร์อุณหภูมิ DS18B20 บนบัส OneWire
  • รีเลย์ SRD-5VDC-SL-C ใช้สำหรับการสลับหม้อไอน้ำ

ขั้นตอนที่ 1: คำอธิบายของ Ethernet Thermostat

คำอธิบายของ Ethernet Thermostat
คำอธิบายของ Ethernet Thermostat

Arduino เป็นแพลตฟอร์มฝังตัวที่มีประโยชน์ซึ่งสามารถนำมาใช้เพื่อสร้างเทอร์โมสตัทในห้องที่เราจะแสดงในวันนี้ เทอร์โมสตาร์ทสามารถเข้าถึงได้จากเครือข่าย LAN ที่ตั้งอยู่ ในขณะที่มีเว็บอินเตอร์เฟสซึ่งใช้ในการกำหนดค่าองค์ประกอบทั้งหมดของเทอร์โมสตัท เว็บอินเตอร์เฟสทำงานโดยตรงบน Arduino ในโหมดเว็บเซิร์ฟเวอร์ เว็บเซิร์ฟเวอร์อนุญาตให้เรียกใช้หน้า HTML อิสระหลายหน้า ซึ่งสามารถให้ข้อมูลหรือใช้งานได้ เว็บเซิร์ฟเวอร์ทำงานบนพอร์ต 80 -

รีเลย์แม่เหล็กไฟฟ้า SRD-5VDC-SL-C ซึ่งใช้ในโปรเจ็กต์นี้ สามารถสลับได้ถึง 10A ที่ 230V - กำลัง 2300W ในกรณีที่สลับวงจร DC (โหลด) สามารถเปลี่ยน 300W (10A ที่ 30V DC) อีกทางหนึ่ง รีเลย์ OMRON G3MB-202P SSR เข้ากันได้อย่างสมบูรณ์สำหรับแผนภาพการเดินสาย ซึ่งเหมาะสำหรับโหลดที่ไม่เหนี่ยวนำเท่านั้นและสำหรับวงจรไฟฟ้ากระแสสลับเท่านั้น กำลังสวิตชิ่งสูงสุด 460W (230V, 2A) การบริโภค Arduino พร้อมอีเธอร์เน็ตชิลด์และอุปกรณ์ต่อพ่วงอื่น ๆ อยู่ที่ระดับ 100-120mA เมื่อรีเลย์เปิดอยู่ เมื่อปิด ต่ำกว่า 200mA ที่แหล่งจ่ายไฟ 5V

ขั้นตอนที่ 2: เว็บอินเตอร์เฟส

เว็บอินเตอร์เฟส
เว็บอินเตอร์เฟส

เว็บอินเตอร์เฟสสำหรับตัวควบคุมอุณหภูมิช่วยให้:

  • ดูอุณหภูมิแบบเรียลไทม์จากเซ็นเซอร์ DS18B20
  • ดูสถานะรีเลย์ตามเวลาจริงพร้อมการเปลี่ยนแปลงเอาต์พุตแบบไดนามิกบนหน้า
  • แก้ไขอุณหภูมิเป้าหมาย (อ้างอิง) ในช่วง 5 ถึง 50 ° C ด้วยขั้นตอน 0.25 ° C
  • แก้ไขฮิสเทรีซิสในช่วง 0 ถึง 10 ° C ด้วยขั้นตอน 0.25 ° C

เว็บอินเตอร์เฟสได้รับการออกแบบมาเพื่อรองรับหน้าจอที่ใหญ่ขึ้นและเล็กลง มันตอบสนอง รองรับหน้าจอความละเอียดสูงแบบไวด์สกรีน แต่ยังรวมถึงอุปกรณ์พกพา อินเทอร์เฟซใช้รูปแบบ CSS ที่นำเข้าของเฟรมเวิร์ก Bootstrap จากเซิร์ฟเวอร์ CDN ภายนอก ซึ่งจะโหลดอุปกรณ์ฝั่งไคลเอ็นต์เมื่อเปิดเพจที่ทำงานบน Arduino เนื่องจาก Arduino Uno มีหน่วยความจำจำกัด จึงสามารถเรียกใช้หน้าที่มีขนาดไม่กี่ kB เท่านั้น ด้วยการนำเข้ารูปแบบ CSS จากเซิร์ฟเวอร์ภายนอก จะช่วยลดประสิทธิภาพและโหลดหน่วยความจำของ Arduino การใช้งานซอฟต์แวร์ (สำหรับ Arduine Uno) ใช้หน่วยความจำแฟลช 70% (บูตโหลดเดอร์ 32kB - 4kB) และหน่วยความจำ RAM 44% (2kB)

ส่วนที่คงที่ของหน้าเว็บ (ส่วนหัวและส่วนท้ายของเอกสาร HTML, การเชื่อมโยง Bootstrap CSS, เมตาแท็ก, ส่วนหัวการตอบสนอง HTTP, ประเภทเนื้อหา, แบบฟอร์ม และอื่นๆ) จะถูกจัดเก็บโดยตรงในหน่วยความจำแฟลชของ Arduino ซึ่งสามารถลดปริมาณ RAM ที่ใช้สำหรับผู้ใช้ได้อย่างมาก - เนื้อหาที่สร้างขึ้น เว็บเซิร์ฟเวอร์จึงมีความเสถียรมากกว่าและสามารถจัดการการเชื่อมต่อหลายอุปกรณ์ในเครือข่ายได้พร้อมกัน

เพื่อที่จะรักษาค่าที่ตั้งไว้แม้หลังจากไฟฟ้าขัดข้อง ค่าเหล่านี้จะถูกเก็บไว้ในหน่วยความจำ EEPROM ของ Arduino อุณหภูมิอ้างอิงเพื่อชดเชย 10, ฮิสเทรีซิสถึงออฟเซ็ต 100 แต่ละค่าใช้พื้นที่สูงสุด 5B ในหน่วยความจำ EEPROM ขีด จำกัด การถอดความ EEPROM อยู่ที่ระดับ 100,000 การถอดเสียง ข้อมูลจะถูกเขียนทับเมื่อส่งแบบฟอร์ม HTML เท่านั้น ในกรณีที่อุปกรณ์ไม่มีสิ่งใดเก็บไว้ในออฟเซ็ต EEPROM ที่กล่าวถึงในการเริ่มต้นครั้งแรก การเขียนอัตโนมัติจะดำเนินการโดยใช้ค่าเริ่มต้น - อ้างอิง: 20.25, ฮิสเทรีซิส 0.25 ° C

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

ขั้นตอนที่ 3: หน้า HTML ทำงานที่เว็บเซิร์ฟเวอร์, แผนผัง, ซอร์สโค้ด

หน้า HTML ทำงานที่เว็บเซิร์ฟเวอร์, แผนผัง, ซอร์สโค้ด
หน้า HTML ทำงานที่เว็บเซิร์ฟเวอร์, แผนผัง, ซอร์สโค้ด

หน้า HTML ที่ทำงานบน Arduino:

  • / - หน้ารูทที่มีแบบฟอร์ม, รายการเอาต์พุตลอจิกปัจจุบันสำหรับรีเลย์, อุณหภูมิ
  • /action.html - ประมวลผลค่าจากแบบฟอร์ม เขียนลงในหน่วยความจำ EEPROM เปลี่ยนเส้นทางผู้ใช้กลับไปที่รูทเพจ
  • /get_data/ - กระจายข้อมูลเกี่ยวกับอุณหภูมิปัจจุบัน อุณหภูมิอ้างอิง และฮิสเทรีซิสไปยังบุคคลที่สาม (คอมพิวเตอร์ ไมโครคอนโทรลเลอร์ ไคลเอนต์อื่น ๆ …) ในรูปแบบ JSON

นอกจากนี้ยังมีเทอร์โมสตัทรุ่นเพิ่มเติมซึ่งรวมถึง:

  • โหมดแมนนวลสำหรับรีเลย์ (ไม่ จำกัด เวลา, เปิด / ปิดอย่างหนัก)
  • นาฬิกาสุนัขเฝ้าบ้าน
  • มีเซ็นเซอร์เพิ่มเติม เช่น SHT21, SHT31, DHT22, BME280, BMP280 และอื่นๆ
  • โหมดทำความเย็น
  • ควบคุมและกำหนดค่าผ่าน RS232 / UART โดยไม่ขึ้นกับอีเธอร์เน็ต
  • การควบคุมอุณหภูมิแบบ PID สำหรับเทอร์โมสตัท
  • ความเป็นไปได้ในการใช้แพลตฟอร์ม ESP8266, ESP32 สำหรับเทอร์โมสตัท

การใช้งานโปรแกรมสำหรับโครงการสามารถดูได้ที่: https://github.com/martinius96/termostat-ethernet/ การใช้งานประกอบด้วยโปรแกรมสำหรับที่อยู่ IPv4 แบบคงที่ / ไดนามิกที่กำหนดให้กับอีเทอร์เน็ตชิลด์

เทอร์โมสตัทมีไว้สำหรับอุณหภูมิในร่มเท่านั้น! (สูงกว่า 0 ° C) ซึ่งปรับตรรกะของระบบ สามารถเปลี่ยนเทอร์โมสตัทในห้องที่มีอยู่ด้วยเทอร์โมสตัทได้ สามารถเปลี่ยนเทอร์โมสตัทในตู้เย็นชั่วคราว รักษาอุณหภูมิให้คงที่ใน terrarium และอื่นๆ ในทำนองเดียวกัน

แนะนำ: