Blynk garagedoor monitor/opener
ช่วง Lockdown 2020: มาเริ่มทำโปรเจกต์ออนไลน์กัน
ตามที่ได้พูดคุยกันไว้ เพื่อนร่วมงานของผมทำหลังคารถชนเข้ากับประตูโรงรถของเขา เขาออกจากโรงรถเร็วเกินไปและดึงเสาอากาศวิทยุออกจากหลังคารถไปพร้อมกับประตูโรงรถ...
ผมเลยบอกไปว่า: "ผมจะสร้างโซลูชันให้คุณเอง!"
ขอบเขต: แสดงสถานะว่าประตูโรงรถเปิดเต็มที่หรือไม่ และสามารถสั่งการประตูเดียวกันนี้ได้จากภายในรถ (ในบ้าน หรือจากหัวมุมถนน)
โปรเจกต์ home automation/Iot/Blynk จึงได้ถือกำเนิดขึ้น
เพื่อให้การพัฒนาซอฟต์แวร์เป็นเรื่องง่าย ผมจึงเลือกใช้โซลูชัน Blynk
- เขียนโค้ดบน arduino ได้ง่าย
- เขียนโค้ดบน smartphone ได้ง่าย
- มีความปลอดภัยด้วย ssl
คำอธิบาย
"อุปกรณ์" นี้จะต้องตรวจจับได้ว่าประตูเปิดหรือปิด เพื่อให้ทำได้ ผมจึงเลือกใช้ magnetic reed switches คุณสามารถติดตั้ง switches บน "chain-rail" และติดตั้ง magnet บน "wagon" (ดูรูปภาพ) หรือจะติดตั้ง microswitches ก็ได้


มี upper switch และ lower switch เมื่อ upper switch ปิด ประตูจะเปิดและแสดง green led ใน Blynk app เมื่อ lower switch ปิด ประตูจะปิดและแสดง red led ใน Blynk app ในระหว่างนั้น (เมื่อ switches ทั้งสองตัวเปิดอยู่) ประตูกำลังเคลื่อนที่ (จะแสดง amber led)
เมื่อประตูเปิดเต็มที่ (green led) ข้อความจะถูกบันทึกลงใน blynkterminal และเวลาจะถูกจัดเก็บไว้ เวลานี้จะถูกตรวจสอบเทียบกับเวลา "Open warning" ที่ตั้งค่าไว้ใน Blynk app เมื่อประตูเปิดนานเกินไป ข้อความแจ้งเตือนจะถูกส่งไปยัง Blynk app
ในการเปิดหรือปิดประตูโรงรถ จะมีการตั้งค่า pin บน arduino ที่สามารถตั้งค่าเป็น high เพื่อปิด relay เป็นระยะเวลาหนึ่ง โดย garage door engine จะทำงานโดยการสร้างหน้าสัมผัสระหว่างสายไฟสองเส้น (สายไฟเหล่านี้เชื่อมต่อกับ relay)
การตั้งค่า Hardware
โซลูชันนี้ใช้พลังงานจาก smartphone charger เก่า ต้องเชื่อมต่อสายไฟเพียงหกเส้นเท่านั้น
- 2 เส้นสำหรับ "upper" reed switch (feather pin 12 และ + USB out)
- 2 เส้นสำหรับ "lower" reed switch (feather pin 14 และ + USB out)
- 2 เส้นที่เชื่อมต่อไปยัง garage door opener เพื่อสร้างหน้าสัมผัสสำหรับปิดหรือเปิดประตู (เชื่อมต่อกับ relay)
ทุกอย่างถูกติดตั้งบน Adafruit half protoboard และใส่ใน casing ที่พิมพ์ขึ้นมาโดยเฉพาะ (ในการติดตั้งบน protoboard ผมต้องตัด terminals ที่ไม่ได้ใช้งานของ relay ออก)

ซอฟต์แวร์ Arduinio
ติดตั้ง libraries ที่ถูกต้องสำหรับ Adafruit Huzzah และสำหรับ Blynk เปลี่ยนการตั้งค่าการเชื่อมต่อสำหรับ Wi-Fi network และ Blynk app key ของคุณในโค้ด แล้วอัปโหลดไปยัง arduino
การสร้าง Blynk app
มาสร้าง Blynk project ที่มีลักษณะคล้ายกับนี้:

สร้าง Blynk project ใหม่บน smartphone ของคุณ ใช้ ESP8266 เป็น hardware model

เพิ่ม leds สีเขียว (input V2), สีแดง (input V3) และ Amber (input V4) ลงใน project

เพิ่ม terminal block ลงใน project ที่ input V0 และปิดใช้งาน "add new line" และ "input line"

เพิ่ม button "activate Door" ลงใน project ด้วย output V4 และ Push-button mode ซึ่งจะช่วยให้คุณสามารถเปิดหรือปิดประตูได้

เพิ่ม Numeric input ลงใน project สิ่งนี้ใช้เพื่อกำหนด elapsed time ก่อนที่จะส่ง warning กำหนดค่าที่ output V5

เพิ่ม realtime clock ลงใน project สิ่งนี้ใช้เพื่อแสดงเวลาบน terminal screen

เพิ่ม notifications settings ลงใน project สิ่งนี้ทำให้ project สามารถส่ง "open door" warning และแจ้งให้คุณทราบหาก device ออฟไลน์

เชื่อมต่อทุกอย่างและเริ่ม app รวมถึง arduino แล้วมันควรจะทำงานได้
การแชร์โซลูชัน
คุณสามารถแชร์ app กับผู้อื่นใน Blynk ได้ ข้อควรระวังคือ คุณสามารถรับ project ได้เพียงหนึ่ง project ใน sharing mode ดังนั้น หากคุณสร้างสอง project และต้องการแชร์ให้คนกลุ่มเดียวกัน พวกเขาจะเห็นเฉพาะ project ที่โหลดล่าสุดเท่านั้น
คุณยังสามารถใช้ webhooks เพื่อแชร์การเข้าถึง blynk API โดยใช้สิ่งนี้และ IFTT คุณสามารถใช้ voice commands เพื่อควบคุมประตูโรงรถของคุณได้
ขอให้สนุก!
EXPANDED TECHNICAL DETAILS
Cloud-Based Home Perimeter Security
โปรเจกต์นี้มี smartphone-controlled interface ที่ปลอดภัยสำหรับการตรวจสอบและสั่งการ motorized garage door มาตรฐานจากระยะไกล
- Blynk IoT Webhook Hub: ใช้ ESP8266 หรือ NodeMCU เพื่อเชื่อมต่อประตูทางกายภาพกับ Blynk app ผู้ใช้สามารถสั่งการเปิดประตูผ่าน virtual button และรับ instant push notifications หากประตูถูกเปิดทิ้งไว้
- Magnetic Reed Sensor Logic: Arduino จะตรวจสอบสถานะทางกายภาพของประตูโดยใช้ magnetic sensor ที่มีความน่าเชื่อถือสูง firmware จะรู้จักสามสถานะ:
OPEN,CLOSEDและIN-TRANSITซึ่งจะให้ complete status dash แก่ผู้ใช้
Safety and Verification
- Double-Tap Confirmation: มี software safety layer ที่คำสั่ง "Open" ต้องมีการ double-tap ภายใน app เพื่อป้องกันการสั่งเปิดประตูโดยไม่ตั้งใจในขณะที่ผู้ใช้อยู่นอกบ้าน