สร้างประตูอัตโนมัติ สั่งเปิดด้วยระบบสแกนใบหน้า

Wasin Wongkum
Chiang Mai Maker Club
3 min readApr 18, 2019

หลังจากที่ช่วงสงกรานต์ที่ผ่านมาไม่ได้ออกไปไหนก็เลยสร้างประตูอัตโนมัติแล้วให้มันเปิดด้วยการสแกนใบหน้าซะเลย สนองความขี้เกียจ บทความนี้เราจะมาดูส่วนประกอบและวิธีการสร้างกันครับ…

ตัวระบบแบ่งออกเป็นสองส่วนใหญ่ๆ คือ
1.ระบบสแกนใบหน้า
2.ระบบควบคุมบานประตู

โดยทั้งสองระบบติดต่อกันผ่าน GPIO ธรรมดา ดังนั้นคนที่มีประตูอัตโนมัติอยู่แล้วนี้จะทำได้ง่ายเลย โอเคเรามาพูดถึงระบบแรกกันก่อน

1. ระบบสแกนใบหน้า

ระบบนี้ทำงานอยู่ในซิฟ ESP32 โดยที่ ESP32 จะมี lib Face detection and recognition framework ไว้ให้ใช้สำหรับตรวจจับและจดจำใบหน้า เรียนว่า “esp-who” ที่ทำงานอยู่บน “esp-idf

ซึ่งบอร์ด esp32 ที่ผมเลือกใช้คือบอร์ด TTGO T-Camera Plus ที่ได้มาจาก MakerLab หรือหากต้องการสามารถซื้อได้ที่เว็ปไซด์ thai-maker และเนื่องจากบนบอร์ดมี lcd ขนาด 1.3" ด้วย ผมว่ามันต้องเท่แน่ๆเลยถ้าบนจอโชว์การตรวจจับใบหน้าได้ด้วยทำให้มีแรงฮึดเพิ่มขึ้นหลายเท่าที่เดียว จากนั้นก็สร้าง case จาก 3d printer สำหรับติดบอร์ดกับประตูด้วย

สำหรับ Soruce Code สำหรับ esp32 สามารถดาวน์โหลดได้จาก github โดยเพื่อนๆจะต้องติดตั้ง esp-who และ esp-idf ให้เรียบร้อยก่อน จากนั้น copy folder dev_smart_door ไปไว้ใน …\esp-who\examples\single_chip จากนั้นถึงค่อยสั่ง compile ด้วย esp-idf นะครับ

การทำงานของโปรแกรมถูกตั้งไว้ว่า
**1. เมื่อตรวจพบใบหน้าที่บันทึกไว้ pin 23(open-drain) จะมีโลจิกเป็น 0
**2. เมื่อ pin 18(input-pullup) มีโลจิกเป็น 0 จะเข้าโหมดจดจำใบหน้าของคนที่อยู่ในกล้อง
โดย pin ทั้งสองอยู่ในส่วน connection ด้านล่างของบอร์ด TTGO พอดี ผมก็ใช้ pin 23 ไว้สั่งให้ประตูเปิด และ pin 18 ใช้สำหรับบันทึกใบหน้านั้นเอง

ผมเลือกใช้รูปขนาด HQVGA ความเร็วในการตรวจจับใบหน้าของบอร์ด esp32 นั้นอยู่ที่ประมาณ 2 รูปกว่าๆต่อวินาทีครับ

2. ระบบควบคุมบานประตู

ระบบนี้ทำงานอยู่ในบอร์ด arduino pro mini 3.3v ทำหน้าที่ควบการเปิดปิดบานประตู ผ่านมอเตอร์ DC motor+ เกียร์ทด 100 rpm โดยใช้บอร์ด Motor Drive Module (BTS7960) เป็นตัวขับมอเตอร์

บอร์ด arduino pro mini, BTS7960, voltage step down regulator

สำหรับเซนเซอร์ที่ใช้ในการอ่านตำแหน่งใช้ optical-sensor สองตัวทำหน้าที่เป็น limit switch ทำงานเมื่อประตูปิดสนิท และทำหน้าที่เป็น incremental encoder(DIY) ตรวจวัดตำแหน่งบานประตูขณะเลื่อน

โดยก็สร้างชิ้นส่วนจาก 3d printer มาสำหรับเป็นฐานในการติดตั้งและ pulley ด้วย

รูป 3d model

ทั้งหมดขับเคลื่อนผ่านสายพานเชือกลูกเสือ……

นอกจากเปิดด้วยระบบจดจำใบหน้าแล้วยังไงก็ยังต้องมี manual switch สำหรับกดเปิดจากด้านในและด้านนอกห้องอยู่ดีครับ

manual switch สำหรับเปิดประตู ด้านในและด้านนอกห้อง

diagram การต่ออุปกรณ์

file 3d และ Source code ของ arduino pro mini สำหรับควบคุมประตู สามารถศึกษาได้จาก https://github.com/kkmonster/cmmc_smart_door/tree/master/Arduino_fw

มาดูคลิปวีดีโอรีวิวกันครับ

ขอบคุณครับ

www.youtube.com/watch?v=-uaJoLXM-xE

สอบถามพูดคุยเล่นกันได้ที่ Chiang Mai Maker Club

--

--