สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ฮาร์ดแวร์ - วงจร
- ขั้นตอนที่ 2: ฮาร์ดแวร์ - สิ่งที่แนบมา
- ขั้นตอนที่ 3: ซอฟต์แวร์
- ขั้นตอนที่ 4: ระบบอัตโนมัติภายในบ้านและโทรเลข
- ขั้นตอนที่ 5: การปรับปรุงและการปรับปรุงเพิ่มเติม
วีดีโอ: เซ็นเซอร์ประตูที่ใช้พลังงานจากแบตเตอรี่พร้อมการรวมระบบอัตโนมัติภายในบ้าน WiFi และ ESP-NOW: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในคำแนะนำนี้ฉันแสดงให้คุณเห็นว่าฉันสร้างเซ็นเซอร์ประตูที่ใช้พลังงานจากแบตเตอรี่พร้อมการรวมระบบอัตโนมัติภายในบ้านได้อย่างไร ฉันเคยเห็นเซ็นเซอร์และระบบเตือนภัยดีๆ อื่นๆ มาก่อนแล้ว แต่ฉันต้องการสร้างมันขึ้นมาเอง
เป้าหมายของฉัน:
- เซ็นเซอร์ที่ตรวจจับและรายงานการเปิดประตูอย่างรวดเร็ว (<5 วินาที)
- เซ็นเซอร์ตรวจจับการปิดประตู
- เซ็นเซอร์ที่ทำงานด้วยแบตเตอรี่และทำงานด้วยแบตเตอรี่สองสามเดือน
ฮาร์ดแวร์และซอฟต์แวร์ได้รับแรงบันดาลใจจาก
- กระดาน Trigboard ของ Kevin Darrah (TPL5111 และ TPS73733)
- วีดีโอนี้
ฉันสร้างเซ็นเซอร์สำหรับประตูหน้าและประตูหลังของฉัน ข้อแตกต่างเพียงอย่างเดียวคือตำแหน่ง LED และสวิตช์ไฟภายนอก (บนเซ็นเซอร์แบ็คดอร์)
ฉันทำการปรับปรุงหลายอย่างในระหว่างการพัฒนาฮาร์ดแวร์และซอฟต์แวร์ มันสามารถเห็นได้ในภาพถ่าย
เสบียง
ฉันซื้อชิ้นส่วนอิเล็กทรอนิกส์จาก Aliexpress ส่วนประกอบหลัก:
- แบตเตอรี่ LiPo
- TPS73733 LDO
- TPL5111
- รีดสวิทช์
- มอสเฟต P-channel: IRLML6401TRPBF
- แม่เหล็ก
- แผ่นอะแดปเตอร์ PCB สำหรับส่วนประกอบ SMD และอื่นๆ
ขั้นตอนที่ 1: ฮาร์ดแวร์ - วงจร
ดูแผนผังที่แนบมาสำหรับวงจร ฉันบัดกรีชิ้นส่วน SMD บนแผ่นอะแดปเตอร์ PCB และบัดกรีส่วนประกอบทั้งหมดเข้ากับบอร์ดประสิทธิภาพสองด้าน ฉันเชื่อมต่อ ESP-01 ผ่านส่วนหัวของเพศหญิง ดังนั้นฉันจึงสามารถลบออกเพื่อตั้งโปรแกรมผ่านอะแดปเตอร์ที่แสดงในขั้นตอนที่ 3 ของคำแนะนำนี้ได้
วงจรทำงานดังนี้:
- เมื่อเปิดประตู TPL5111 จะถูกยิงที่พิน DELAY/M_DRV และเปิดใช้งาน TPS73733 LDO ซึ่งให้พลังงานแก่ ESP-01 สำหรับการดำเนินการนี้ ต้องดึง EN/ONE_SHOT ให้ต่ำ โปรดดูเอกสารข้อมูลของ TPL5111
- หลังจากที่โปรแกรมทำงาน (ดูขั้นตอนซอฟต์แวร์) ESP-01 จะส่งสัญญาณเสร็จสิ้นไปยัง TPL5111 ซึ่งจะปิดการใช้งาน TPS73733 ส่งผลให้ TPL5111 และ TPS73733 มีสถานะพลังงานต่ำมาก
ฉันใช้สวิตช์กกที่มีการเชื่อมต่อทั้ง NO และ NC ฉันต่อสาย NC เนื่องจากสวิตช์กกต้องปิดวงจรเมื่อถอดแม่เหล็ก (เปิดประตู) และเปิดเมื่อแม่เหล็กอยู่ใกล้ (ปิดประตู)
สำหรับเซ็นเซอร์แบ็คดอร์ ฉันได้เพิ่มคอนเดนเซอร์และตัวต้านทานบางส่วนเมื่อค้นพบความไม่เสถียรบางอย่าง อย่างไรก็ตาม ความไม่เสถียรนั้นเกิดจากซอฟต์แวร์ (esp_now_init) ที่ฉันค้นพบในภายหลัง
ขั้นตอนที่ 2: ฮาร์ดแวร์ - สิ่งที่แนบมา
ฉันออกแบบเคสใน Autodesk Fusion360 โดยได้รับแรงบันดาลใจจากวิดีโอนี้โดย 'ผู้ชายที่มีสำเนียงสวิส'
ไฟล์ STL ของทั้งสามส่วน:
- กล่อง
- ฝา
- ที่ยึดแม่เหล็ก
ถูกเผยแพร่บนหน้า Thingiverse ของฉัน
ขั้นตอนที่ 3: ซอฟต์แวร์
โปรแกรมอยู่ใน Github ของฉัน
โฟลว์ของโปรแกรมแสดงอยู่ในภาพ ดูคำแนะนำอื่น ๆ ของฉันสำหรับคำอธิบายว่าฉันใช้ ESP-NOW อย่างไร
เมื่อเปิดโมดูล โมดูลจะพยายามส่งข้อความ "เปิด" ผ่าน ESP-NOW ก่อน หากไม่สำเร็จ จะเปลี่ยนไปใช้การเชื่อมต่อ WiFi และ MQTT
ฉันพบว่าอย่างน้อยในการตั้งค่าของฉัน ข้อความ 'ปิด' ไม่ได้ส่งสำเร็จผ่าน ESP-NOW ดังนั้นฉันจึงลบสิ่งนี้ออกจากโปรแกรมและใช้เฉพาะ WiFi และ MQTT
ในช่วงเวลาที่ประตูถูกเปิดและโมดูลกำลังรอให้ประตูปิดก็จะใช้เวลานี้ในการเชื่อมต่อกับ WiFi และ MQTT ดังนั้นเมื่อประตูปิดจะต้องส่งเฉพาะแรงดันที่วัดได้และข้อความ CLOSED แล้ว มันเข้านอนโดยตรง
โปรแกรมตรวจสอบว่าผู้รับได้รับข้อความปิดผ่านการฟังข้อความ MQTT ในหัวข้อที่ถูกต้องหรือไม่
ขั้นตอนที่ 4: ระบบอัตโนมัติภายในบ้านและโทรเลข
เซ็นเซอร์ประตูของฉันสื่อสารกับ Openhab Home Automation บน Raspberry Pi Zero ของฉัน
แอปพลิเคชันหลัก:
- อ่านสถานะของประตู: เปิดหรือปิด
- เตือนฉันผ่านทางโทรเลขหากประตูเปิดอยู่ (หากเปิดนาฬิกาปลุกหรือเปิดฟังก์ชันการตรวจสอบ)
- อ่านครั้งสุดท้ายที่ประตูถูกเปิดหรือปิด
- นับจำนวนช่องเปิดที่เซ็นเซอร์ประตูสามารถจัดการได้ก่อนที่แบตเตอรี่จะหมด
ตัวอย่างเช่น ถ้าเราอยู่ในช่วงวันหยุดและเพื่อนบ้านเข้ามารดน้ำต้นไม้ ฉันได้รับข้อความ ดูวิดีโอในบทนำ
รายการ Openhab กฎและไฟล์แผนผังเว็บไซต์อยู่ใน Github ของฉัน ในไฟล์เหล่านี้ คุณยังสามารถเห็นเซ็นเซอร์ประตูโรงเก็บของของฉัน ซึ่งใช้สวิตช์กกแบบมีสายแบบปกติและสวิตช์หน้าสัมผัสขนาดเล็ก (ปลาย) จากเครื่องพิมพ์ 3 มิติในช่องเปิดล็อค (ดูรูป)
วิธีใช้การดำเนินการโทรเลขใน Openhab ได้อธิบายไว้ที่นี่
ขั้นตอนที่ 5: การปรับปรุงและการปรับปรุงเพิ่มเติม
ในช่วงหลายเดือนที่ผ่านมา ฉันได้ทำการปรับปรุงดังต่อไปนี้
จัดการกับการเปิดประตูแบบยาวด้วยสัญญาณพัลส์แบบสวิตช์ตัวเอง
ในฤดูร้อน เราเปิดประตูหลังทิ้งไว้สองสามชั่วโมงเมื่อเราอยู่ที่บ้าน ESP-01 ที่ทำงานด้วยการเชื่อมต่อ WiFi จะทำให้แบตเตอรี่หมดโดยไม่จำเป็น ดังนั้นฉันจึงรวมสวิตช์เปิด/ปิดเพื่อให้สามารถปิดโมดูลในสถานการณ์เหล่านี้ได้
อย่างไรก็ตาม บางครั้งสิ่งนี้ส่งผลให้โมดูลปิดอย่างถาวร (เมื่อฉันลืมเปิดเครื่อง) และแบตเตอรี่หมดหลังจากประตูเปิดและโมดูลที่ทำงานในช่วงบ่ายสองสามวัน (เมื่อฉันลืมปิดเครื่อง)
ดังนั้นฉันจึงต้องการปิดโมดูลโดยใช้ซอฟต์แวร์หลังจากที่เปิดโมดูลเป็นเวลาที่กำหนดไว้ล่วงหน้า (1 นาที)
อย่างไรก็ตาม เมื่อชีพจร 'DONE' ของ ESP-01 ปิด TPL5111 เมื่อประตูปิด ฉันพบว่า TPL5111 ไม่ได้ถูกเปลี่ยนโดยพัลส์ 'DONE' ในขณะที่พิน DELAY/M_DRV สูง สัญญาณสูงบนพิน DELAY/M_DRV นี้เกิดจากการเปิดประตูและหน้าสัมผัส NC ของสวิตช์กกที่เชื่อมต่อกับแรงดันแบตเตอรี่
ดังนั้น สัญญาณที่ส่งไปยังพิน DELAY/M_DRV ไม่ควรสูงอย่างต่อเนื่อง แต่ควรเป็นพัลส์ ในแผ่นข้อมูล TPL5111 คุณจะพบว่าควรเป็นพัลส์ที่ > 20 ms ฉันสร้างสัญญาณการสลับตัวเองนี้ผ่านมอสเฟต P-channel ตัวเก็บประจุและตัวต้านทาน 10K และ 300K ดูรูปแบบที่รวมไว้
มันทำงานดังนี้:
- หากหน้าสัมผัส NC ของสวิตช์กกปิด เกตจะต่ำ และมอสเฟตเปิดอยู่ ส่งผลให้มีสัญญาณสูงบนพิน DELAY/M_DRV ซึ่งจะเปิดใช้งานโมดูล
- ตัวเก็บประจุถูกชาร์จอย่างรวดเร็ว ส่งผลให้มีแรงดันไฟฟ้าเพิ่มขึ้นที่เกต
- หลังจากผ่านไปประมาณ 20 มิลลิวินาที แรงดันไฟที่เกตจะเป็น 97% ของแรงดันแบตเตอรี่ (300K/(300K+10K) ซึ่งสูง และปิด Mosfet ส่งผลให้มีสัญญาณ LOW บนพิน DELAY/M_DRV
- เมื่อพิน DELAY/M_DRV ต่ำ สัญญาณ DONE ของ ESP-01 ส่งผลให้โมดูลปิด
สิ่งนี้ถูกนำมาใช้ในซอฟต์แวร์ while-loop ไม่เพียงแต่ตรวจสอบว่าประตูยังเปิดอยู่หรือไม่ แต่ยังตรวจสอบว่าไม่ได้เปิดโมดูลนานเกินไปหรือไม่ หากเปิดเครื่องนานเกินไป จะเผยแพร่ค่า NULL (สถานะที่ไม่ได้กำหนดของประตู) ในกรณีนี้ผมไม่ทราบว่าประตูเปิดหรือปิดและไม่บรรลุเป้าหมายทั้งหมดที่กล่าวถึงในบทนำ แต่อายุการใช้งานแบตเตอรี่มีความสำคัญมากกว่าและส่วนใหญ่เราจะเปิดประตูอีกครั้งในวันนั้นส่งผลให้สถานะปิดได้รับการยืนยัน ของประตู
สิ่งสำคัญคือต้องใช้ P-channel Mosfet ซึ่งเหมาะสำหรับช่วงแรงดันไฟฟ้าที่ใช้ในที่นี้ Mosfet ต้องเปิดอย่างสมบูรณ์ที่ VGS ประมาณ - 3.8V และปิดอย่างสมบูรณ์ที่ VGS ประมาณ -0.2 V ฉันลองใช้ Mosfet หลายตัวและพบว่า IRLML6401TRPBF ทำงานได้ดีสำหรับเป้าหมายนี้ร่วมกับตัวต้านทาน 10K และ 300K. ตัวเก็บประจุขนาด 1 ยูเอฟทำงานได้ดีเพื่อให้ได้ความยาวพัลส์ประมาณ 20 มิลลิวินาที ตัวเก็บประจุที่ใหญ่ขึ้นส่งผลให้พัลส์ยาวขึ้น ซึ่งไม่จำเป็น เนื่องจาก TPL5111 ถูกเปิดใช้งาน ฉันใช้ออสซิลโลสโคป DSO150 เพื่อตรวจสอบแรงดันไฟฟ้าและความยาวพัลส์
การปรับปรุงที่วางแผนไว้: การอัปเดต OTA
ฉันวางแผนที่จะรวมการอัปเดต OTA ผ่านขั้นตอนต่อไปนี้ ซึ่งรวมอยู่ในซอฟต์แวร์ปัจจุบันแล้วบางส่วน
- ผ่าน Openhab ของ NodeRed ฉันเผยแพร่ข้อความ 'อัปเดต' ที่เก็บไว้เป็น 'หัวข้อการอัปเดต'
- หากโมดูลเปิดอยู่และเชื่อมต่อกับเซิร์ฟเวอร์ MQTT และสมัครรับ 'หัวข้อการอัปเดต' โมดูลจะได้รับข้อความอัปเดต
- ข้อความอัปเดตจะป้องกันไม่ให้โมดูลปิดและเริ่ม
- ผ่านทางเว็บไซต์ของ HTTPUpdateServer คุณสามารถอัปเดตซอฟต์แวร์ได้
- ผ่าน Openhab ของ NodeRed ฉันเผยแพร่ข้อความ 'ว่าง' ที่เก็บไว้เป็น 'อัปเดตหัวข้อ'
การปรับปรุงที่วางแผนไว้: การปิดฮาร์ดแวร์หลังจากเวลาที่กำหนดไว้ล่วงหน้า
ในรูปแบบปัจจุบัน ฉันใช้ตัวต้านทาน 200K ระหว่าง DELAY/M_DRV และ GND ของ TPL5111 สิ่งนี้จะเปิดโมดูลนานกว่า 2 ชั่วโมง (ดู 7.5.3. ของแผ่นข้อมูล TPL5111) อย่างไรก็ตาม ฉันไม่ต้องการให้โมดูลเปิดทำงานนานเกินไป เนื่องจากแบตเตอรี่จะหมด หากโซลูชันซอฟต์แวร์ (ดูด้านบน) ไม่สามารถปิดโมดูลได้ หรือข้อความอัปเดตโดยไม่ได้ตั้งใจทำให้โมดูลอยู่ในโหมดอัปเดต โมดูลจะยังคงเปิดอยู่เป็นเวลานาน
ดังนั้นจึงควรใช้ตัวต้านทานที่มีขนาดเล็กกว่าระหว่าง DELAY/M_DRV และ GND ของ TPL5111 ดังนั้นโมดูลจะถูกปิดหลังจากช่วงเวลาสั้นๆ เช่น ตัวต้านทาน 50K ส่งผลให้มีเวลา 7 นาที
แนะนำ:
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
เริ่มต้นใช้งาน Esp 8266 Esp-01 ด้วย Arduino IDE - การติดตั้งบอร์ด Esp ใน Arduino Ide และการเขียนโปรแกรม Esp: 4 ขั้นตอน
เริ่มต้นใช้งาน Esp 8266 Esp-01 ด้วย Arduino IDE | การติดตั้งบอร์ด Esp ใน Arduino Ide และการเขียนโปรแกรม Esp: ในคำแนะนำนี้ เราจะได้เรียนรู้วิธีติดตั้งบอร์ด esp8266 ใน Arduino IDE และวิธีตั้งโปรแกรม esp-01 และอัปโหลดโค้ดในนั้น เนื่องจากบอร์ด esp ได้รับความนิยมอย่างมาก และคนส่วนใหญ่ประสบปัญหา
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
คณะกรรมการการเขียนโปรแกรมและการพัฒนา ESP-12E และ ESP-12F: 3 ขั้นตอน (พร้อมรูปภาพ)
คณะกรรมการการเขียนโปรแกรมและการพัฒนา ESP-12E และ ESP-12F: การชำระเงินสำหรับบอร์ดนี้ทำได้ง่าย: สามารถตั้งโปรแกรมโมดูล ESP-12E และ ESP-12F ได้อย่างง่ายดายเหมือนกับบอร์ด NodeMCU (เช่น ไม่จำเป็นต้องกดปุ่ม) มีหมุดที่เป็นมิตรกับเขียงหั่นขนมพร้อมการเข้าถึง IO ที่ใช้งานได้ ใช้ USB แยกต่างหากเพื่อคอนเวอร์
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ