สารบัญ:
- ขั้นตอนที่ 1: ชิ้นส่วนที่จำเป็น / การประกอบ
- ขั้นตอนที่ 2: การอัปโหลดโค้ดและการทดสอบ
- ขั้นตอนที่ 3: การเปลี่ยนแปลง OpenHAB
วีดีโอ: อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!): 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
HRV - ไร้สายไปยัง OpenHAB
คำแนะนำนี้มีไว้สำหรับผู้ที่มีระบบ HRV (การระบายอากาศหมุนเวียนด้วยความร้อน) โดยเฉพาะ - แม้ว่าบางส่วนของแผงวงจร, การกำหนดค่า openhab หรือรหัส Arduino (เช่นการอ่านข้อมูลอนุกรม TTL) อาจมีประโยชน์สำหรับโครงการของคุณเองหรือให้บริการดีสำหรับการเรียนรู้ ถือว่าคุณมีความรู้ที่เหมาะสมเกี่ยวกับ Arduino IDE และชิป ESP8266 คืออะไร
บทนำ
ต่อไปนี้จะอธิบายวิธีสร้าง ESP8266 ที่เชื่อมต่อกับระบบ HRV และส่งอุณหภูมิหลังคาและโรงเรือน อุณหภูมิแผงควบคุม และความเร็วพัดลมผ่านข้อความ MQTT ไปยัง OpenHAB สิ่งนี้ออกแบบมาเพื่อทำงานร่วมกับบอร์ด ESP8266-01 (แม้ว่าจะใช้ได้กับรุ่น ESP8266 3.3V ใดก็ตาม) หากคุณมีระบบประเภท HRV ที่คล้ายกันจากผู้จำหน่ายรายอื่น คุณจะต้องตรวจสอบว่าข้อมูลถูกส่งเป็น TTL แบบอนุกรมหรือไม่ และหากเป็นเช่นนั้น, โครงสร้างข้อมูลที่ส่งเป็น
OpenHAB และยุง
รหัส ESP8266 ถูกเขียนขึ้นโดยเฉพาะเพื่อทำงานกับ OpenHAB (ซอฟต์แวร์โอเพ่นซอร์สโฮมออโตเมชั่น) และโบรกเกอร์ MQTT เช่น Mosquitto (โปรโตคอลประเภทการสมัครสมาชิก/เผยแพร่ข้อความที่มีน้ำหนักเบาและเหมาะสำหรับการสื่อสารระหว่างอุปกรณ์) อย่าให้ชื่อหรือ คำย่อทำให้คุณกลัว พวกมันค่อนข้างใช้งานง่ายเมื่อคุณได้รู้ว่ามันทำงานอย่างไร ฉันใช้ OpenHAB กับ NTC C. H. I. P (คอมพิวเตอร์ราคา 9 เหรียญสหรัฐ) อย่างไรก็ตาม หลายคนใช้ Raspberry Pi หรือคล้ายกัน บทช่วยสอนนี้ถือว่าคุณได้ใช้งาน OpenHAB (หากคุณต้องการความช่วยเหลือในการตั้งค่า OpenHAB ให้ทำตามบทความที่ยอดเยี่ยมนี้จากเว็บไซต์ makeuseof) คุณต้องดาวน์โหลดและติดตั้ง Mosquitto (โบรกเกอร์ MQTT) และการเชื่อมโยง OpenHAB ที่เกี่ยวข้อง คุณสามารถติดตั้งสิ่งนี้ที่อื่นบนเครือข่ายของคุณ แต่คนส่วนใหญ่เพียงแค่ติดตั้งสิ่งนี้ในเครื่องเดียวกับ OpenHAB เพื่อให้ง่าย
ในการติดตั้ง Mosquitto ให้ไปที่ลิงก์นี้ จากนั้นเลือกประเภทของอุปกรณ์ที่คุณใช้และปฏิบัติตามคำแนะนำ เนื่องจาก C. H. I. P ใช้งาน Debian (Jessie) คุณจึงสามารถปฏิบัติตามคำแนะนำของ Raspberry Pi ได้ หากคุณใช้ C. H. I. P สำหรับอุปกรณ์ Home Automation ของคุณ (โปรดทราบว่า เป็นการดีที่สุดที่จะกำหนดค่า CHIP ใหม่ให้บูตจาก CLI มีคำแนะนำสำหรับสิ่งนี้)
เมื่อคุณเปิดใช้งาน OpenHAB และ Mosquitto แล้ว คุณต้องเตรียม Arduino IDE สำหรับ ESP8266 และโค้ด ขั้นแรก คุณต้องเพิ่มไลบรารี "PubSubClient" ใน Arduino IDE จากเมนูไปที่ Sketch, Include Library, Manage Libraries ในกล่องค้นหาตัวกรอง ให้พิมพ์ PubSubClient จากนั้นไฮไลต์ผลการค้นหาแล้วคลิกเพื่อติดตั้ง (ในขณะที่เขียน เวอร์ชันล่าสุดคือ 2.6.0) คุณจะ ยังต้องเพิ่มบอร์ด ESP8266 ให้กับ Arduino IDE ซึ่งสามารถทำได้โดยทำตามคำแนะนำที่นี่
สิ่งนี้ให้อะไรฉัน
ตามที่ระบุไว้ก่อนหน้านี้ โปรเจ็กต์นี้จะช่วยให้คุณดูหลังคาแผงควบคุม HRV บ้าน อุณหภูมิแผงควบคุม และความเร็วพัดลมใน OpenHAB GUI (แบบเรียลไทม์!) รูปภาพแสดงสิ่งที่ดูเหมือนจาก iPhone ของฉัน บวกกับกราฟของคุณ จะได้รับโดยการเจาะลงไปในอุณหภูมิต่างๆ
ในการรับกราฟ คุณจะต้องติดตั้งและกำหนดค่าการผูก RRD4J ด้วย (ซึ่งตรงไปตรงมามาก) ซึ่งจะทำให้คุณสามารถคลิกที่ 'House' หรือ 'Roof' และรับประวัติอุณหภูมิ HRV สำหรับแต่ละรายการในอดีต ชั่วโมง วัน หรือสัปดาห์ (หรือนานกว่านั้น ถ้าคุณเปลี่ยนการกำหนดค่าให้เหมาะสม) รูปภาพที่แสดงอยู่ในเซลเซียส และเห็นได้ชัดว่าฤดูหนาวในซีกโลกใต้เมื่อฉันทำสิ่งนี้!
นอกจากนี้ ฉันได้สร้างมุมมอง OpenHAB ที่แสดงการเปรียบเทียบระหว่างอุณหภูมิภายนอก (โดยส่วนเสริมการผูกสภาพอากาศ ในกรณีของฉันโดยใช้ Wunderground) กับอุณหภูมิหลังคาและบ้านโดยคลิกที่ตัวเลือก 'การควบคุม' (รูปภาพแสดงกราฟด้วย บ้าน หลังคา และอุณหภูมิภายนอก) ฉันวางแผนที่จะใช้ข้อมูลนี้ในกฎเพื่อเปิดเครื่องทำความร้อนตามต้องการ เพียงเพิ่มรายการสภาพอากาศลงใน URL รูปภาพของคุณในไฟล์แผนผังเว็บไซต์และรวมไว้ในกราฟเดียวกัน (เช่น: …items=houseTemp, roofTemp, weatherTemp…)
ขั้นตอนที่ 1: ชิ้นส่วนที่จำเป็น / การประกอบ
คุณจะต้องมีชิ้นส่วนดังต่อไปนี้
- ตัวแยกสัญญาณ RJ11 (ซึ่งจะแยกสัญญาณจากตัวควบคุมบนหลังคา ไปยังแผงควบคุม และ ESP8266)
- สายแพและปลั๊ก RJ11 (เพื่อเรียกใช้สายจากตัวแยกสัญญาณไปยัง ESP8266)
- ESP8266-01 (รุ่น 3.3V อื่น ๆ ควรใช้งานได้)
- ตัวแปลงระดับลอจิก TTL (เพื่อเปลี่ยนข้อมูลจาก 5V -> 3.3V)
- ตัวควบคุมแรงดันไฟฟ้า AMS1117 3.3V (หรือคล้ายกัน เพื่อเปลี่ยนแรงดันไฟฟ้าจาก HRV 5V -> 3.3V เป็นกำลังไฟ ESP8266)
- 1N5817 schottky diode (ด้วยเหตุผลบางอย่างสิ่งนี้ช่วยหยุดการรีเซ็ตแผงควบคุม HRV เมื่อเปิดเครื่อง ESP)
- ตัวต้านทาน 10K ohm (ตัวต้านทานแบบดึงขึ้นระหว่างตัวควบคุมแรงดันไฟฟ้า 3.3 และ ESP CH_PD)
- ตัวเก็บประจุ 10V 10uF (หรือคล้ายกัน เพื่อทำให้พลังงานขาเข้าจาก HRV เสถียรและเสถียร)
- ตัวเก็บประจุ 10V 1uF (หรือคล้ายกัน เพื่อทำให้กระแสไฟขาออกคงที่และเสถียรกับ ESP)
- ปุ่มสไลด์เสริมเพื่อตั้งโปรแกรม ESP (หรือต้องดึง GPIO0 ไปที่ GND ด้วยตนเองเพื่อตั้งโปรแกรม)
- อะแดปเตอร์ FTDI (ในการเขียนโปรแกรม ESP ให้แปลง USB เป็นซีเรียล)
ประกอบตาม Schematic
ภาพเขียงหั่นขนมแสดงให้เห็นว่าควรประกอบชิ้นส่วนอย่างไร โปรดทราบว่ามีหมุด 6 ตัวที่ห้อยลงมาที่สายแพจากชุดควบคุม HRV บนเพดาน:
พิน 1 และ 6 คือ 5V VCC
พิน 2 และ 5 คือ GND
พิน 3 และ 4 เป็นข้อมูล
คุณจำเป็นต้องใช้พิน 1, 2, 3 และ 6 (พลัง 1 และ 6 VCC ESP8266 และด้านสูงของตัวแปลงลอจิก TTL 2 เป็นพื้นทั่วไปและ 3 สำหรับอ่านข้อมูลอนุกรม TTL)
ตัวแยกสัญญาณที่คุณต้องการจะเป็นตัวแยกสัญญาณ RJ11 เพียงตรวจสอบให้แน่ใจว่าตัวแยกสัญญาณที่หมุดนั้นตรง (เช่น พิน 1 ไปที่พิน 1 พิน 2 ถึงพิน 2 เป็นต้น) โปรดทราบว่าหมุดตัวเมียเพิ่มเติม (เช่น ที่แสดงในภาพ) ใช้สำหรับเชื่อมต่อ FTDI เพื่อตั้งโปรแกรม ESP ใหม่ในภายหลัง และสวิตช์ที่แสดงอยู่ในโหมด "การเขียนโปรแกรม" ตัวเลือกเหล่านี้เป็นทางเลือก แต่แนะนำ (เช่น หากคุณเปลี่ยนรหัสผ่าน WiFi เนื่องจาก WiFi AP และรหัสผ่านถูกตั้งโปรแกรมอย่างหนักในรหัส ซึ่งคุณจะต้องอัปโหลดเมื่อสร้าง ESP8266 ของคุณแล้ว)
ขั้นตอนที่ 2: การอัปโหลดโค้ดและการทดสอบ
การเปลี่ยนแปลงรหัส
ลิงค์ดาวน์โหลดสำรองไปยังโค้ด Arduino ที่นี่
เปิดใน Arduino IDE ตรวจสอบให้แน่ใจว่าได้ติดตั้งบอร์ด ESP เช่นเดียวกับ PubSubClient และคุณได้เลือกบอร์ด ESP8266 (เครื่องมือ, บอร์ด, บอร์ด ESP8266 ทั่วไป) แก้ไขรหัสและเปลี่ยนชื่อ WiFi AP และรหัสผ่านและที่อยู่ IP ของ โบรกเกอร์ MQTT ของคุณ (นี่คือสิ่งเดียวที่คุณควรต้องเปลี่ยน) ดังที่แสดงด้านล่าง คลิกปุ่ม 'ยืนยัน' เพื่อให้แน่ใจว่าคอมไพล์เรียบร้อย จากนั้นตรวจสอบให้แน่ใจว่าได้เลือกพอร์ต COM ที่ถูกต้อง (เครื่องมือ พอร์ต) และอัปโหลดรหัสไปยัง ESP8266 ของคุณ มีบทความมากมายเกี่ยวกับวิธีการทำเช่นนี้ ฉันจะไม่คิดค้นล้อใหม่ที่นี่
//Wifi
const char* ssid = "your_wifi_ssid_here"; const char* password = "your_wifi_password_here"; // MQTT โบรกเกอร์ IPAddress MQTT_SERVER(192, 168, 222, 254);
การทดสอบ MQTT
สำหรับการทดสอบ คุณสามารถปล่อยให้อแด็ปเตอร์ FTDI เชื่อมต่อและเปิด Serial Monitor ใน Arduino IDE คุณจะเห็นข้อความที่พิมพ์ข้อมูลอุณหภูมิในคอนโซล หากคุณต้องการแก้ไขปัญหาข้อความ MQTT ขาเข้าจาก ESP8266 ไปยังโบรกเกอร์ MQTT ของคุณ บนเซิร์ฟเวอร์ Mosquitto ให้เรียกใช้หนึ่งในคำสั่งต่อไปนี้เพื่อสมัครรับข้อความขาเข้า:
mosquitto_sub -d -t openhab/hrv/status
คุณควรเห็นข้อความ PUBLISH ขาเข้าที่เข้ามาจาก ESP8266 ทุกๆ 30 วินาทีหรือมากกว่านั้นด้วยตัวเลข "1" (หมายถึง "ฉันยังมีชีวิตอยู่") หากคุณเห็นค่าคงที่ "0" (หรือไม่มีอะไรเลย) แสดงว่าไม่มีการสื่อสารใดๆ เมื่อคุณเห็นหมายเลข 1 เข้ามา แสดงว่า ESP8266 กำลังสื่อสารกับนายหน้า MQTT (ค้นหา "MQTT Last Will and Testament" สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงาน หรือดูรายการบล็อกที่ดีจริงๆ)
ขณะนี้คุณสามารถติดตามข้อมูลอุณหภูมิและความเร็วพัดลม สมัครรับข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้ อย่างไรก็ตาม โปรดทราบว่ารหัสจะส่งเฉพาะข้อมูลอุณหภูมิหากข้อมูลมีการเปลี่ยนแปลง มันติดตามข้อมูลอุณหภูมิล่าสุด ความเร็วพัดลม ฯลฯ ที่ถูกส่ง ดังนั้นคุณอาจไม่เห็นข้อมูลเข้ามาทันที
mosquitto_sub -d -t openhab/hrv/rooftemp
mosquitto_sub -d -t openhab/hrv/housetemp
mosquitto_sub -d -t openhab/hrv/controltemp
mosquitto_sub -d -t openhab/hrv/fanspeed
คำแนะนำ: สมัครรับอุณหภูมิแผงควบคุมด้านบน จากนั้นกดปุ่มอุณหภูมิบนแผงควบคุมเอง คุณจะเห็นการตั้งค่าอุณหภูมิใหม่เข้ามา
เมื่อคุณต้องบัดกรีสิ่งนี้ PCB ขนาด 3 ซม. x 7 ซม. จะพอดีกับกล่องฝังด้านหลังแผงควบคุม HRV ฉันขอแนะนำให้ทำเช่นนี้เฉพาะในกรณีที่เป็นกล่องล้างพลาสติกเนื่องจากกล่องโลหะอาจรบกวนสัญญาณ Wifi หรือการเชื่อมต่อบนบอร์ด PCB ขาด อีกวิธีหนึ่ง คุณสามารถพิมพ์เคสพลาสติก 3 มิติเพื่อติดบอร์ด
ขั้นตอนที่ 3: การเปลี่ยนแปลง OpenHAB
การกำหนดค่า OpenHAB
การเปลี่ยนแปลง OpenHAB ที่จำเป็นมีดังนี้:
ไฟล์ 'รายการ':
/* HRVNumber hrvStatus "สถานะ HRV [MAP(status.map):%d]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/status:state:default]" }หมายเลข houseTemp "บ้าน [%.1f C]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/housetemp:state:default]" }Number houseTemp_Chart_Period "Chart Period"Number roofTemp "Roof [%.1f C]" (gHRV) { mqtt=" <[mqttbroker:openhab/hrv/rooftemp:state:default]" }Number roofTemp_Chart_Period "Chart Period"Number controlTemp "Control [%.1f C]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/controltemp: state:default]" }String fanSpeed "ความเร็วพัดลม [%s]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/fanspeed:state:default]" }*/
ไฟล์ 'แผนผังเว็บไซต์':
Frame label="HRV Temperature" {รายการข้อความ=roofTemp {Frame { Switch item=roofTemp_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"] Image url="https://localhost:8080/rrdchart.png" รีเฟรช=6000 การมองเห็น=[roofTemp_Chart_Period==0, roofTemp_Chart_Period=="ไม่ได้กำหนดค่าเริ่มต้น"] รูปภาพ url="https://localhost:8080/rrdchart.png" รีเฟรช=30000 การมองเห็น= [roofTemp_Chart_Period==1] Image url="https://localhost:8080/rrdchart.png" refresh=30000 vision=[roofTemp_Chart_Period==2] } } รายการข้อความ = houseTemp { เฟรม { รายการสวิตช์ = houseTemp_Chart_Period label="ระยะเวลา การแมป =="ไม่ได้กำหนดค่าเริ่มต้น"] url รูปภาพ="https://localhost:8080/rrdchart.png" รีเฟรช=30000 การมองเห็น=[houseTemp_Chart_Period==1] url รูปภาพ="https://localhost:8080/rrdchart.png" รีเฟรช =30000 การมองเห็น=[houseTemp_Chart_Period==2] } } รายการข้อความ = controlTemp { กรอบ { สลับรายการ = รวม ed_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"] Image url="https://localhost:8080/rrdchart.png" refresh=6000Vision=[Combined_Chart_Period" ==0, Combined_Chart_Period=="Uninitialized"] URL รูปภาพ="https://localhost:8080/rrdchart.png" refresh=30000 การมองเห็น=[Combined_Chart_Period==1] Image url="https://localhost:8080/ rrdchart.png" รีเฟรช=30000 การมองเห็น=[Combined_Chart_Period==2] } } รายการข้อความ=fanSpeed }
รวมไอคอนพิเศษสำหรับ OpenHAB (คลิกขวาและบันทึกภาพ)
บันทึกไฟล์เหล่านี้ไปยังโฟลเดอร์..\OpenHAB Home\webapps\images บนเซิร์ฟเวอร์ OpenHAB ของคุณ
แนะนำ:
All in One Digital Chronometer (นาฬิกา จับเวลา นาฬิกาปลุก อุณหภูมิ): 10 ขั้นตอน (พร้อมรูปภาพ)
All in One Digital Chronometer (นาฬิกา ตัวจับเวลา นาฬิกาปลุก อุณหภูมิ): เรากำลังวางแผนที่จะสร้างตัวจับเวลาสำหรับการแข่งขันอื่น แต่ต่อมา เรายังใช้นาฬิกา (ไม่มี RTC) เมื่อเราเข้าสู่การเขียนโปรแกรม เราสนใจที่จะใช้ฟังก์ชันต่างๆ เพิ่มเติมกับอุปกรณ์และลงเอยด้วยการเพิ่ม DS3231 RTC เนื่องจาก
ทำให้เรือนกระจกอัตโนมัติด้วย LoRa! (ตอนที่ 1) -- เซนเซอร์ (อุณหภูมิ ความชื้น ความชื้นในดิน): 5 ขั้นตอน
ทำให้เรือนกระจกอัตโนมัติด้วย LoRa! (ตอนที่ 1) || เซ็นเซอร์ (อุณหภูมิ ความชื้น ความชื้นในดิน): ในโครงการนี้ ฉันจะแสดงให้คุณเห็นว่าฉันสร้างเรือนกระจกโดยอัตโนมัติได้อย่างไร นั่นหมายความว่าฉันจะแสดงให้คุณเห็นว่าฉันสร้างเรือนกระจกอย่างไรและเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์กำลังและระบบอัตโนมัติอย่างไร นอกจากนี้ ผมจะแสดงให้คุณเห็นถึงวิธีการตั้งโปรแกรมบอร์ด Arduino ที่ใช้ L
การควบคุมห้องด้วย ESP8266 - อุณหภูมิ การเคลื่อนไหว ม่าน และการจัดแสง: 8 ขั้นตอน
การควบคุมห้องด้วย ESP8266 | อุณหภูมิ การเคลื่อนไหว ม่าน และแสง: โปรเจ็กต์นี้ประกอบด้วยระบบที่ใช้โมดูล NodeMCU ESP8266 ที่ให้คุณควบคุมความสว่างของแถบ LED และม่านห้องของคุณ นอกจากนี้ยังสามารถส่งข้อมูลเกี่ยวกับเหตุการณ์การเคลื่อนไหวของห้องของคุณได้ และอุณหภูมิสู่ก้อนเมฆ
Matrix Led X4 MAX7219 + ESP8266 12E + เซนเซอร์ DS18b20 (อุณหภูมิ): 6 ขั้นตอน
Matrix Led X4 MAX7219 + ESP8266 12E + เซ็นเซอร์ DS18b20 (อุณหภูมิ): ในโอกาสนี้เราจะทำการทดสอบอย่างรวดเร็วกับเมทริกซ์ที่นำด้วย MAX7219 ที่รวมเข้ากับโมดูล ESP8266 และเพื่อไม่ให้ง่ายนักเราจะอ่านอุณหภูมิของเซ็นเซอร์ DS18B20 ในบทช่วยสอนในอนาคต เราจะรวมเข้ากับแพลตอื่น
ESP8266/ESP-12 Arduino ขับเคลื่อนด้วย SmartThings DS18B20 อุณหภูมิ เซนเซอร์: 4 ขั้นตอน (พร้อมรูปภาพ)
ESP8266/ESP-12 Arduino ขับเคลื่อนด้วย SmartThings DS18B20 อุณหภูมิ เซนเซอร์: เราทุกคนต้องการทราบอุณหภูมิห้องปัจจุบัน และบางครั้งอุณหภูมิในห้องอื่นเป็นอย่างไร หรือแม้แต่ในบ้านพักตากอากาศของคุณที่อยู่อีกซีกโลก บางทีคุณอาจต้องการตรวจสอบอุณหภูมิในบ้านสัตว์เลี้ยงของคุณ Lizard