สารบัญ:
- ขั้นตอนที่ 1: การค้นพบ
- ขั้นตอนที่ 2: ออกแบบ
- ขั้นตอนที่ 3: สิ่งที่ส่งมาด้วย
- ขั้นตอนที่ 4: รหัส
- ขั้นตอนที่ 5: ตัวอย่างการรวม
วีดีโอ: การควบคุมหัวเตียงแบบไร้สาย MQTT: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ไม่กี่ปีที่ผ่านมา เราซื้อเตียงเมมโมรี่โฟมใหม่และเช่นเดียวกับเตียงส่วนใหญ่ คุณต้องซื้อ "ฐานรองที่ผ่านการรับรอง" เพื่อรักษาการรับประกัน ดังนั้นเราจึงเลือกใช้ฐานที่มีราคาถูกที่สุดซึ่งรวมถึงความสามารถในการยกและลดระดับศีรษะของเตียงด้วย ไม่กี่วันต่อมา ที่นอนของเราและฐานรองแบบ American Adjustables ราคาถูกพร้อมปุ่มควบคุมแบบมีสาย (หนึ่งชุดสำหรับข้างเตียงแต่ละด้าน) ได้รับการจัดส่งและติดตั้ง
สิ่งแรกที่เราสังเกตเห็นคือสายไฟในโชว์รูมที่ดีและยาวไม่ใช่สิ่งที่เรามีบนเตียง! ที่อยู่ในโชว์รูมมีส่วนขยาย ส่วนขยายเหล่านี้ไม่ได้รวมอยู่ในเตียงของเรา และน่าสนใจพอ ไม่มีใครสนใจขายสายไฟต่อให้เราสักคู่ สิ่งนี้ทำให้เรามีตัวควบคุมที่แทบจะไม่ถึงด้านบนของเตียงและเราต้องพลิกตัวเพื่อใช้
คุณจะได้รับสิ่งที่คุณจ่าย
หลังจากผ่านไปประมาณ 6 เดือน เราสังเกตเห็นว่าปลอกคอระบายความเครียดบนตัวควบคุมตัวใดตัวหนึ่งเริ่มฉีกขาด ไม่กี่เดือนต่อมา - สายเปลือย กรอไปข้างหน้าอย่างรวดเร็วประมาณหนึ่งปี ตัวควบคุมตัวใดตัวหนึ่งใช้งานไม่ได้อีกต่อไปและอีกตัวหนึ่งเริ่มกระตุกเล็กน้อย
อีกครั้งไม่มีใครสนใจขายอะไหล่ให้เรา แล้วมันก็โดนฉัน!
เดี๋ยวก่อน! ฉันกำลังสร้างระบบอัตโนมัติในบ้านและระบบควบคุมอยู่ไม่ใช่เหรอ!?
ขั้นตอนที่ 1: การค้นพบ
ฉันต้องการดูว่าฉันสามารถทำอะไรกับสิ่งที่ฉันมีได้ ฉันจึงนำคอนโทรลเลอร์ที่ชำรุดออกมาและว้าว! มีอึมากมายในนั้น! ของพวกนี้มีไว้เพื่ออะไร? ฉันก้าวถอยหลังและมองไปที่เส้นที่เข้าและออก ฉันสามารถเห็นได้ว่ามีสายจ่ายไฟ 12 โวลต์และสายกราวด์ อีกสองบรรทัดดูเหมือนสายสัญญาณสำหรับปุ่มขึ้นและลงทั้งสองปุ่ม ดังนั้นฉันจึงใช้โอกาสนี้และเพียงแค่กระโดดจ่ายไฟ 12v ไปที่สายสัญญาณ "ขึ้น" เตียงเริ่มขยับ! จากนั้นฉันก็ย้ายสายจัมเปอร์ไปที่สายสัญญาณ "ลง" และเตียงก็ลดลง!
ในกล่องมีหน้าสัมผัสสำหรับสายสัญญาณอีก 4 เส้นและปุ่มอีก 4 ปุ่ม ฉันเดาได้ดีที่สุดว่าบอร์ดควบคุมนี้ถูกใช้ในโมเดลฐานแบบมีสายทั้งหมดของพวกเขา และพวกเขาเพียงแค่วางเพลตหน้าแบบต่างๆ ไว้บนบอร์ดตามต้องการ ดังนั้นฉันจึงมีทฤษฎีการทำงาน ฉันทดสอบสายอุปทานเพื่อดูว่าจุ่มระหว่างการใช้งานหรือมีการกระตุกเมื่อใดก็ได้ - ไม่ มีกระแสไฟฟ้าไหลผ่านสายสัญญาณน้อยมาก แต่ต้องใช้ 12 โวลต์เพื่อเปิดใช้งานมอเตอร์
ขั้นตอนที่ 2: ออกแบบ
ดังนั้นการเชื่อมต่อแบบสัมผัสอย่างง่ายระหว่าง VCC และพินสัญญาณจึงเป็นสิ่งที่จำเป็น แต่จะทำได้อย่างไรภายในระบบของฉัน จะต้องใช้รีเลย์สองตัวสำหรับหน้าสัมผัสและ ESP8266 จะทำงานกับคอนโทรลเลอร์ไร้สาย เนื่องจากรีเลย์สามารถต้องการกระแสไฟมากกว่าที่ขาดิจิตอลสามารถจ่ายได้ ควรใช้ออปโตไอโซเลเตอร์ระหว่างคอนโทรลเลอร์และรีเลย์ สิ่งนี้จะช่วยให้สัญญาณขนาดเล็กเปิดสวิตช์กระแสไฟที่สูงขึ้น (ในกรณีนี้คือทรานซิสเตอร์ที่ขับเคลื่อนด้วยแสง) และเปิดใช้งานคอยล์รีเลย์อย่างปลอดภัย นอกจากนี้ optoisolator ยังแยกตัวควบคุมออกจากเดือยใดๆ ที่อาจเกิดขึ้นได้เมื่อขดลวดรีเลย์ถูกปล่อยและสนามแม่เหล็กยุบตัว โชคดีที่มีโมดูลรีเลย์ซึ่งมีวงจรทั้งหมดอยู่แล้วและมีราคาค่อนข้างต่ำ
เตียงจะเป็นแหล่งจ่ายไฟสำหรับคอนโทรลเลอร์ และเพื่อจัดการกับ 12 โวลต์ที่ให้มา เราจำเป็นต้องมีตัวแปลงบั๊กแบบแปรผัน มีการเชื่อมโยงราคาถูกมากด้านล่างและใช้งานได้ดี สาย 12V และสาย GND เชื่อมต่อกับด้านอินพุทของคอนเวอร์เตอร์ และด้านที่มีการควบคุม 5 โวลต์เชื่อมต่อกับ VCC ของ NodeMCU และพิน VCC บนโมดูลรีเลย์ กราวด์ (-) บนคอนเวอร์เตอร์เชื่อมต่อกับพิน GND บน ทั้งโมดูลรีเลย์และ NodeMCU
NodeMCU เชื่อมต่อกับ IN1 โดยใช้ D1 (GPIO5) และ IN2 โดยใช้ D2 (GPIO4) สายสัญญาณขึ้นบนเตียงเชื่อมต่อกับขั้วต่อสกรูแบบเปิดตามปกติสำหรับรีเลย์ 1 และสายสัญญาณลงเชื่อมต่อกับขั้วต่อแผงขั้วต่อแบบเปิดตามปกติของรีเลย์ 2 คุณจะต้องเชื่อมต่อสาย 12v ที่เชื่อมต่อกับด้านอินพุตของตัวแปลงบั๊กกับขั้วต่อเทอร์มินัลบล็อกอื่นสำหรับรีเลย์ทั้ง 1 และ 2
อะไหล่
- 1 - NodeMCU
- 1 - โมดูล Duel Relay พร้อมการแยกกระแส
- 1 - ตัวแปลงบัคอินพุท/เอาท์พุตตัวแปร
- 1 - เขียงหั่นขนม PCB
- ลวดแกนทองแดงควั่น 22 เกจ
- 2 - M3x 8 สกรู
ขั้นตอนที่ 3: สิ่งที่ส่งมาด้วย
ตู้สามารถพบได้ที่นี่:
ฉันออกแบบกล่องหุ้มอย่างง่ายด้วย Tinkercad ที่ช่วยให้สายควบคุมเตียงเข้าไปในกล่องระหว่างขายึดสำหรับคลายความเครียดภายในกล่องได้ มีช่องสำหรับผูกซิปที่จะช่วยป้องกันไม่ให้สายเลื่อน แต่ในกรณีของฉันพอดีพอดีและไม่ต้องการมัน ฝาครอบปิดด้วยสกรู M3x 8 2 ตัว ฉันขอแนะนำให้อัปโหลดโค้ดและทดสอบระบบก่อนที่จะติดตั้งลงในกล่อง
ฉันใช้กาวร้อนยึดแผ่นกระดานให้เข้าที่ แต่อาจไม่จำเป็น
ขั้นตอนที่ 4: รหัส
รหัสสามารถพบได้ที่นี่:
หมายเหตุ: โปรเจ็กต์นี้ใช้ไลบรารี pubsubclient ซึ่งสามารถเพิ่มใน Library Manager ใน Arduino IDE
โค้ดที่นี่ค่อนข้างเรียบง่ายและได้รับการออกแบบตามประเภท Cover MQTT ใน Home Assistant แนวคิดนี้ง่าย: เมื่อคุณกดปุ่มขึ้นหรือลงในผู้ช่วยในบ้าน รีเลย์ที่เหมาะสมจะปิดลงจนกว่าจะได้รับคำสั่งหยุด หรือระบบจะถึงเวลาเปิดใช้งานสูงสุดและหยุดทำงาน
เวลาสูงสุดมีไว้เพื่อเป็นการป้องกันไว้ก่อนในกรณีที่ผู้ใช้ลืมหยุดการทำงาน หรือหากคำสั่งถูกส่งไปโดยไม่ได้ตั้งใจและไม่น่าจะมีใครหยุดคำสั่งได้ เราไม่ต้องการให้รีเลย์ทำงานอย่างไม่มีกำหนดหรือเกิดปัญหาใดๆ กับเตียงเนื่องจากการปิดหน้าสัมผัสเป็นเวลานาน
ในรหัสของฉัน ระยะหมดเวลานี้คือ 20 วินาทีและสามารถปรับได้ในบล็อกตัวแปรส่วนกลางที่ด้านบนของรหัส
ข้อควรระวังด้านความปลอดภัยประการที่สองคือต้องตรวจสอบให้แน่ใจเสมอว่าหากฉันเปิดใช้งานรีเลย์หนึ่ง การปิดใช้งานโดยเจตนาของอีกรายการหนึ่งจะถูกเรียกเสมอ แม้ว่าสถานะสุดท้ายจะปิดไปแล้วก็ตาม ฉันไม่ต้องการส่ง 12v ลงทั้งสองสายสัญญาณเพราะฉันไม่รู้ว่ามันจะทำอะไรกับเตียง
นอกจากนั้น เตียงยังเผยแพร่ว่ามีให้บริการทุก 60 วินาทีเท่านั้น ไม่มีระฆังหรือนกหวีดที่นี่ เนื่องจากเตียงไม่มีการตอบสนองตำแหน่ง ฉันจึงส่งกลับไปให้ Home Assistant ไม่ได้
ขั้นตอนที่ 5: ตัวอย่างการรวม
รหัสที่ฉันเขียนใช้ MQTT เพื่อสื่อสารผ่าน WiFi ดังนั้นจึงสามารถสื่อสารกับฮับหรืออุปกรณ์อัตโนมัติใดๆ ที่ใช้ MQTT ฉันใช้ Home Assistant ที่มีโบรกเกอร์ MQTT ในตัว ด้านล่างนี้คือตัวอย่างการกำหนดค่า HA ของฉัน
ใน HA ฉันมีไฟล์ cover.yaml พร้อมคำจำกัดความต่อไปนี้:
- แพลตฟอร์ม: mqtt
ชื่อ: "Master Bed Headboard" command_topic: "master_bed_control/cmd" availability_topic: "master_bed_control/availability" qos: 0 รักษา: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " ออฟไลน์" มองโลกในแง่ดี: จริง
สิ่งนี้ทำให้ฉันมีหนึ่งรายการในอินเทอร์เฟซ HA ของฉันด้วยปุ่มขึ้น/หยุด/ลงที่ตั้งค่าด้วยการดำเนินการตามที่อธิบายไว้ข้างต้น
นอกจากนี้ ฉันได้กำหนดปุ่มสองปุ่มบนแผงควบคุมข้างเตียงของฉัน (คำแนะนำได้ / บล็อกโพสต์) เพื่อยกและลดระดับหัวเตียง ปุ่มบนแผงควบคุมถูกกำหนดให้เป็นเซ็นเซอร์ MQTT:
- แพลตฟอร์ม: mqtt
state_topic: "bedside_cp1/button5" ชื่อ: "Bedside CP1 Button 5" ไอคอน: mdi:circle
- แพลตฟอร์ม: mqtt
state_topic: "bedside_cp1/button6" ชื่อ: "Bedside CP1 Button 6" ไอคอน: mdi:circle
… และกฎการทำงานอัตโนมัติ 4 ข้อเมื่อกดและปล่อยแต่ละปุ่ม เมื่อกด คำสั่งขึ้นหรือลงจะถูกส่งไปยังเตียงโดยขึ้นอยู่กับว่าปุ่มใดถูกเปิดใช้งาน เมื่อปล่อยปุ่ม คำสั่งหยุดจะถูกส่งไป:
- id: '1548308650383'
นามแฝง: MBR ปุ่ม CP ข้างเตียง 5a ทริกเกอร์: - entity_id: sensor.bedside_cp1_button_5 จาก: 'ปิด' แพลตฟอร์ม: สถานะเป็น: 'เปิด' เงื่อนไข: การกระทำ: - ข้อมูล: entity_id: ' cover.master_bed_headboard' บริการ: cover.open_cover - รหัส: '1548308758911' นามแฝง: ปุ่ม MBR ข้างเตียง CP ปุ่ม 5b ทริกเกอร์: - entity_id: sensor.bedside_cp1_button_5 จาก: แพลตฟอร์ม 'เปิด': สถานะเป็น: 'ปิด' เงื่อนไข: การกระทำ: - ข้อมูล: entity_id: ' บริการ cover.master_bed_headboard': cover.stop_cover - id: '1548308863495' นามแฝง: MBR Bedside CP Button 6a trigger: - entity_id: sensor.bedside_cp1_button_6 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: ' cover.master_bed_headboard' service: cover.close_cover - id: '1548308911467' alias: MBR Bedside CP Button 6b trigger: - entity_id: sensor.bedside_cp1_button_6 from: 'On' platform: state to: 'Off' condition: action: - ข้อมูล: entity_id: 'cover.master_bed_headboard' บริการ: cover.stop_cover
แนะนำ:
MQTT Mood Lights พร้อม ESP32: 4 ขั้นตอน (พร้อมรูปภาพ)
MQTT Mood Lights พร้อม ESP32: ฉันถูกล่อลวงมาเป็นเวลานานแล้วที่จะกระโดดขึ้นไปบนแถบ LED ดังนั้นฉันจึงวิ่งออกไปหยิบแถบ LED ขึ้นมาเพื่อเล่น ฉันลงเอยด้วยการสร้างแสงอารมณ์เหล่านี้ สามารถควบคุมได้ด้วย MQTT ทำให้สามารถเพิ่มสมาร์ทได้ทุกประเภท นี่คือ
เครื่องวัดอุณหภูมิสระว่ายน้ำ MQTT: 7 ขั้นตอน (พร้อมรูปภาพ)
ตัวตรวจสอบอุณหภูมิสระว่ายน้ำ MQTT: โปรเจ็กต์นี้เป็นโครงการร่วมกับโครงการ Home Automation อื่นๆ ของฉัน ตัวควบคุมไกเซอร์บันทึกข้อมูลอัจฉริยะ (Geyser Controller) บันทึกข้อมูลอัจฉริยะ และระบบควบคุมแสงสว่างในห้องอเนกประสงค์และเครื่องใช้ไฟฟ้า เป็นจอภาพติดริมสระที่วัดอุณหภูมิน้ำในสระ อากาศแวดล้อม
เซ็นเซอร์ประตูและล็อคโรงเก็บของที่ใช้แบตเตอรี่ Solar, ESP8266, ESP-Now, MQTT: 4 ขั้นตอน (พร้อมรูปภาพ)
เซ็นเซอร์ประตูและตัวล็อคโรงเก็บของที่ใช้แบตเตอรี่ Solar, ESP8266, ESP-Now, MQTT: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันสร้างเซ็นเซอร์ที่ใช้พลังงานจากแบตเตอรี่เพื่อตรวจสอบสถานะประตูและล็อคของโรงรถจักรยานระยะไกลของฉันได้อย่างไร ฉันไม่มีไฟหลัก ดังนั้นฉันจึงใช้พลังงานจากแบตเตอรี่ แบตเตอรี่ถูกชาร์จโดยแผงโซลาร์เซลล์ขนาดเล็ก โมดูลนี้เ
ระบบอัตโนมัติภายในบ้านที่ควบคุมด้วยอินเทอร์เน็ต/คลาวด์โดยใช้ Esp8266 (aREST, MQTT, IoT): 7 ขั้นตอน (พร้อมรูปภาพ)
ระบบอัตโนมัติภายในบ้านที่ควบคุมด้วยอินเทอร์เน็ต/คลาวด์โดยใช้ Esp8266 (aREST, MQTT, IoT): เครดิตทั้งหมดไปที่ http://arest.io/ สำหรับบริการคลาวด์!!IoT หัวข้อที่มีคนพูดถึงมากที่สุดในโลกในขณะนี้!! เซิร์ฟเวอร์และบริการบนคลาวด์ที่ทำให้สิ่งนี้เป็นไปได้คือจุดดึงดูดของโลกปัจจุบัน…การขจัดสิ่งกีดขวางระยะทางเคยเป็นและเป็น
ปุ่มกดนาฬิกาปลุก MQTT ESP8266: 4 ขั้นตอน (พร้อมรูปภาพ)
ปุ่มกดสัญญาณเตือน MQTT ESP8266: ในคำแนะนำนี้ ผมจะแสดงให้คุณเห็นว่าฉันสร้างปุ่มกดที่ใช้พลังงานจากแบตเตอรี่เพื่อเปิดใช้งานและปิดใช้งานการเตือนที่บ้านได้อย่างไร ในอนาคต ฉันวางแผนที่จะทำการปรับปรุงซึ่งมีเครื่องอ่าน RFID รวมอยู่ด้วยและไม่ได้ใช้พลังงานจากแบตเตอรี่ นอกจากนี้ฉันวางแผนที่จะอ่านปุ่มกดผ่าน