สารบัญ:

ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)
ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ระบบสแกนใบหน้า ด้วย raspberry pi With Open CV 2024, กรกฎาคม
Anonim
Image
Image
ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi
ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi
ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi
ระบบรักษาความปลอดภัยจดจำใบหน้าสำหรับตู้เย็นด้วย Raspberry Pi

การท่องอินเทอร์เน็ต ฉันได้ค้นพบว่าราคาสำหรับระบบรักษาความปลอดภัยแตกต่างกันไปตั้งแต่ 150$ ถึง 600$ ขึ้นไป แต่ไม่ใช่โซลูชันทั้งหมด (แม้แต่โซลูชันที่มีราคาแพงมาก) ที่สามารถรวมเข้ากับเครื่องมืออัจฉริยะอื่น ๆ ที่บ้านของคุณได้! ตัวอย่างเช่น คุณไม่สามารถตั้งกล้องรักษาความปลอดภัยไว้ที่ประตูหน้าของคุณได้ ดังนั้นมันจึงเปิดประตูให้คุณหรือเพื่อนของคุณโดยอัตโนมัติ!

ฉันได้ตัดสินใจสร้างโซลูชันที่เรียบง่าย ราคาถูก และทรงพลัง ซึ่งคุณสามารถใช้ได้ทุกที่! มีคู่มือมากมายเกี่ยวกับวิธีการสร้างระบบรักษาความปลอดภัยแบบโฮมเมดราคาถูก แต่ฉันต้องการสาธิตการใช้งานที่ไม่ซับซ้อนของสิ่งเหล่านั้น – ระบบรักษาความปลอดภัยสำหรับตู้เย็นที่มีการจดจำใบหน้า!

มันทำงานอย่างไร? กล้อง IP วางบนตู้เย็น เซ็นเซอร์ (สองปุ่ม) ตรวจจับเมื่อมีคนเปิดประตูตู้เย็น หลังจากนั้น Raspberry Pi ถ่ายรูปบุคคลนั้น (พร้อมกล้อง IP) แล้วส่งไปที่ Microsoft Face API เพื่อวิเคราะห์ภาพและรับชื่อบุคคล ด้วยข้อมูลนี้ Raspberry Pi จะสแกน “รายการเข้าถึง”: หากบุคคลนั้นไม่ได้รับอนุญาตให้เข้าถึงตู้เย็น Raspberry จะแจ้งให้เจ้าของทราบทางอีเมล ข้อความ และทวิตเตอร์! (ดูภาพด้านบน)

ทำไม? ระบบนี้ให้คุณควบคุมสมาชิกในครอบครัวได้ โดยเฉพาะเมื่อพวกเขากำลังลดน้ำหนัก หรือไม่ทานอาหารหลังเที่ยงคืน! หรือใช้เพียงเพื่อความสนุกสนาน!

ยิ่งไปกว่านั้น คุณสามารถตั้งค่ากล้องที่ประตูหน้าของคุณได้จริง และกำหนดค่าระบบให้เปิดประตูเมื่อคุณ สมาชิกในครอบครัว หรือเพื่อนของคุณกำลังเข้าใกล้ และนี่ไม่ใช่จุดจบ! ความเป็นไปได้ของแอปพลิเคชั่นไม่มีที่สิ้นสุด!

เอาล่ะ!

ขั้นตอนที่ 1: การเตรียมการ

การตระเตรียม
การตระเตรียม

คุณจะต้องการ:

  • Raspberry Pi 3 (คุณสามารถใช้รุ่นเก่ากว่าได้ แต่รุ่นที่สามมี Wi-Fi ดังนั้นจึงสะดวกมาก)
  • ปุ่ม
  • สายไฟ
  • สมาร์ทโฟนเครื่องเก่าหรือกล้อง Raspberry Pi

สิ่งแรกที่คุณต้องทำคือกำหนดค่า Raspberry Pi ของคุณ คำแนะนำโดยละเอียดเกี่ยวกับวิธีการทำที่คุณสามารถดูได้ที่นี่และที่นี่ แต่เราจะครอบคลุมขั้นตอนที่สำคัญที่สุดในคู่มือนี้

  1. ดาวน์โหลด Win32 DiskImager จากที่นี่ (หากคุณใช้ Windows)
  2. ดาวน์โหลด SD Formatter จากที่นี่
  3. ใส่การ์ด SD ลงในคอมพิวเตอร์ของคุณและฟอร์แมตด้วย SD Formatter
  4. ดาวน์โหลด Raspbian Image จากที่นี่ (เลือก "Raspbian Jessie with pixel")
  5. เรียกใช้ Win32 DiskImager เลือกการ์ด SD ระบุเส้นทางไปยังรูปภาพ Raspbian คลิก "เขียน"
  6. ใส่การ์ด SD ลงใน Raspberry Pi แล้วเปิดเครื่อง!

นอกจากนี้ คุณจะต้องกำหนดค่า Raspberry Pi เพื่อให้สามารถเข้าถึงระบบผ่าน SSH มีคำแนะนำมากมายในอินเทอร์เน็ต คุณสามารถใช้คำสั่งนี้ หรือจะแนบจอภาพและคีย์บอร์ดก็ได้

ตอนนี้ Pi ของคุณได้รับการกำหนดค่าและคุณพร้อมที่จะดำเนินการต่อ!

ขั้นตอนที่ 2: การสร้างเซนเซอร์

การสร้างเซนเซอร์
การสร้างเซนเซอร์
การสร้างเซนเซอร์
การสร้างเซนเซอร์
การสร้างเซนเซอร์
การสร้างเซนเซอร์

คำอธิบายขั้นตอน: ในขั้นตอนนี้ เราจะสร้างเซ็นเซอร์ที่ตรวจจับเมื่อมีคนเปิดประตูตู้เย็นและเปิดใช้งาน Raspberry Pi

ในการตั้งค่า คุณจะต้องมี 2 ปุ่มที่คุณได้เตรียมไว้ในตอนแรก ปุ่มแรกจะตรวจจับเมื่อเปิดประตู ปุ่มที่สองจะตรวจจับเมื่อเปิดประตูจนถึงจุดที่เรากำลังถ่ายภาพบุคคล

  1. ประสานสายเข้ากับปุ่ม
  2. ติดปุ่มแรกเข้ากับประตูตู้เย็นเพื่อดันเมื่อปิดประตู (ดูภาพด้านบน)
  3. ติดปุ่มที่สองเข้ากับประตูตู้เย็นตามภาพด้านบน ต้องปล่อยปุ่มนี้ตลอดเวลา ยกเว้นเมื่อประตูถึงจุดที่ระบบถ่ายภาพ ในการตั้งค่า คุณต้องแนบบางสิ่งกับตู้เย็นของคุณเพื่อที่ปุ่มนี้จะถูกกดเมื่อเปิดประตูตามขอบเขตที่ต้องการ (ดูรูปด้านบน)
  4. ต่อสายไฟจากปุ่มต่างๆ เข้ากับ Raspberry Pi: ปุ่มแรกกับ GPIO 23 และกราวด์ ปุ่มที่สองกับ GPIO 24 และกราวด์ (ดูแผนภาพ fritzing)

หมายเหตุ: ฉันใช้ BCM pinout (ไม่ใช่ Board) อ่านความแตกต่างเพิ่มเติมที่นี่

เมื่อเชื่อมต่อกับ Raspberry Pi ของคุณผ่าน SSH แล้ว หากต้องการเรียกใช้ python shell ให้พิมพ์เทอร์มินัล:

python3

หากคุณกำลังแนบจอภาพและแป้นพิมพ์กับ Raspberry Pi ให้เรียกใช้ "Python 3 IDLE" จากเมนู

ขั้นตอนต่อไปคือการทำให้ Raspberry Pi ทำงานกับปุ่มต่างๆ เราจะแนบตัวฟังพิเศษเข้ากับหมุด GPIO 23 และ 24 ซึ่งจะรับฟังเหตุการณ์ "ขอบขึ้น" และเหตุการณ์ "ขอบตก" บนหมุดเหล่านั้น ในกรณีของเหตุการณ์ ผู้ฟังจะเรียกใช้ฟังก์ชันที่เรากำหนดไว้ "ขอบที่เพิ่มขึ้น" หมายความว่าปุ่มถูกกดและตอนนี้ถูกปล่อย (ปุ่มแรก - ประตูเปิดอยู่) "ขอบที่ตกลงมา" หมายความว่าปุ่มถูกปล่อยและตอนนี้ถูกกด (ปุ่มที่สอง - ประตูมาถึงจุดที่กำหนดแล้ว) เพิ่มเติมเกี่ยวกับการทำงานของปุ่ม - ที่นี่

ขั้นแรก นำเข้าไลบรารีที่ให้เราเข้าถึงพิน:

นำเข้า RPi. GPIO เป็น GPIO

ตอนนี้กำหนดฟังก์ชันพิเศษที่จะเรียกเมื่อเหตุการณ์ถูกทริกเกอร์:

def sensor1 (ช่อง): พิมพ์ ("เซ็นเซอร์ 1 ทริกเกอร์") def sensor2 (ช่อง): พิมพ์ ("เซ็นเซอร์ 2 ทริกเกอร์)

ตั้งค่าประเภทพินเอาต์:

GPIO.setmode(GPIO. BCM)

กำหนดค่าพิน:

GPIO.setup(23, GPIO. IN, pull_up_down=GPIO. PUD_UP)GPIO.setup(24, GPIO. IN, pull_up_down=GPIO. PUD_UP)

แนบผู้ฟัง:

GPIO.add_event_detect (23, GPIO. RISING, โทรกลับ = เซ็นเซอร์ 1, เวลาตีกลับ = 300) GPIO.add_event_detect (24, GPIO. FALLING, โทรกลับ = เซ็นเซอร์ 2, เวลาตีกลับ = 300)

ตอนนี้คุณสามารถทดสอบได้! หากคุณกดปุ่ม 1 คุณจะเห็นข้อความในเทอร์มินัล “เซ็นเซอร์ 1 ถูกทริกเกอร์” ปุ่ม 2 จะแสดงข้อความว่า “เซ็นเซอร์ 2 ถูกทริกเกอร์”

หมายเหตุ: เมื่อคุณทำการทดลองเสร็จแล้ว อย่าลืมเรียกใช้ฟังก์ชันต่อไปนี้: GPIO.cleanup()

มาตั้งค่าอีกหนึ่งฟังก์ชั่นที่เรียกว่าเมื่อประตูมาถึงจุดที่ถ่ายรูปกัน! คุณสามารถทำได้ด้วยตัวเองหรือใช้การนำไปปฏิบัติที่ฉันแนบไว้ที่นี่ (sensor.py)

หมายเหตุ: sensor.py ใช้เพื่อวัตถุประสงค์ในการทดสอบเท่านั้น ไฟล์ที่มีฟังก์ชันการทำงานเต็มรูปแบบที่ฉันแนบมากับขั้นตอนสุดท้าย

ขั้นตอนที่ 3: กำหนดค่ากล้อง IP

กำหนดค่ากล้อง IP
กำหนดค่ากล้อง IP
กำหนดค่ากล้อง IP
กำหนดค่ากล้อง IP
กำหนดค่ากล้อง IP
กำหนดค่ากล้อง IP

คำอธิบายขั้นตอน: ตอนนี้เรากำลังจะกำหนดค่าสมาร์ทโฟนเครื่องเก่าเป็นกล้อง IP

การใช้สมาร์ทโฟนเป็นกล้อง IP ทำได้ผ่านแอพ มีแอพต่างๆ สำหรับ Android, iOS, Windows Phone ที่คุณสามารถใช้ได้ ฉันเลือกอันที่ชื่อว่า "IP Webcam" สำหรับ Android นี่เป็นแอพฟรีและกำหนดค่าได้ง่าย

เรียกใช้แอพ ไปที่ "การตั้งค่าวิดีโอ" เพื่อตั้งค่าความละเอียดของรูปภาพที่แอพจะมีให้ จากนั้นแตะ "เริ่มเซิร์ฟเวอร์" (ภาพแรกด้านบน) ที่ด้านล่างของหน้าจอ คุณต้องเห็นที่อยู่ IP ของกล้อง (ดูภาพที่สองด้านบน) ในเบราว์เซอร์ คุณสามารถพิมพ์ https://cam_ip_address/photo-j.webp

สุดท้ายติดกล้องไว้ที่ตู้เย็น (รูปสุดท้ายด้านบน)

ขั้นตอนที่ 4: ใบหน้า API

ใบหน้า API
ใบหน้า API

คำอธิบายขั้นตอน: ในขั้นตอนนี้ เราจะพูดถึง Face API ของ Microsoft ที่จดจำใบหน้าและระบุบุคคล

Face API ของ Microsoft เป็นบริการจดจำใบหน้า ซึ่งเราสามารถวิเคราะห์รูปภาพและระบุบุคคลในรูปภาพได้

ขั้นแรก คุณต้องมีบัญชี Microsoft Azure หากคุณไม่มีคุณสามารถสร้างได้ฟรีที่นี่

ประการที่สอง ไปที่ https://portal.azure.com คลิก "ใหม่" ที่ด้านซ้าย พิมพ์แบบฟอร์ม "Cognitive Services APIs" เลือกแล้วคลิก "สร้าง" หรือเปิดลิงค์นี้ได้เลยครับ ตอนนี้ คุณต้องป้อนชื่อบริการของคุณ เลือกประเภทของการสมัคร ประเภทของ API ที่คุณต้องการ (ในกรณีของเราคือ Face API) ตำแหน่ง ระดับราคา กลุ่มทรัพยากร และยอมรับข้อกำหนดทางกฎหมาย (ดูภาพหน้าจอที่เพิ่มในขั้นตอนนี้)

ประการที่สาม คลิก "ทรัพยากรทั้งหมด" เลือกบริการ Face API ของคุณและดูสถิติการใช้งาน ข้อมูลรับรอง ฯลฯ

ดูรายละเอียด Face API ได้ที่นี่ โดยมีตัวอย่างในภาษาการเขียนโปรแกรมต่างๆ สำหรับโครงการนี้เราใช้ python คุณสามารถอ่านเอกสารและสร้างชุดฟังก์ชันการทำงานของคุณเอง หรือคุณสามารถใช้ฟังก์ชันที่ให้ไว้ที่นี่ (นี่ไม่ใช่ชุดฟังก์ชันทั้งหมดที่มีให้โดย Microsoft เฉพาะจุดที่จำเป็นสำหรับโครงการนี้) ไฟล์ python ของฉันถูกแนบมากับขั้นตอนนี้

มาดูโครงสร้างการทำงานกับ Face API กัน ในการใช้ฟังก์ชัน "การระบุตัวตน" เราต้องสร้างไลบรารีของบุคคลที่ใช้บริการ Face API ที่จะจดจำรูปภาพที่แอปถ่าย ในการตั้งค่า โปรดทำตามขั้นตอน:

  1. สร้างกลุ่ม
  2. เพิ่มบุคคลในกลุ่มนี้
  3. เพิ่มใบหน้าให้กับบุคคลเหล่านี้
  4. กลุ่มรถไฟ
  5. ส่งรูปถ่ายกับบุคคลที่คุณต้องการระบุ (คุณต้องระบุรูปถ่ายและรหัสกลุ่มที่จะให้บริการค้นหาผู้สมัคร)
  6. ผลลัพธ์: ในการตอบกลับ คุณจะได้รับรายชื่อผู้สมัครที่สามารถอยู่ในรูปภาพที่คุณส่งมา

ฉันได้สร้างไฟล์สามไฟล์ที่มีฟังก์ชันเฉพาะที่ช่วยให้ทำงานกับกลุ่ม คนโสด และรูปถ่ายเดี่ยว:

  • PersonGroup.py - มีคุณสมบัติที่อนุญาต: สร้างกลุ่ม รับข้อมูลเกี่ยวกับกลุ่ม รับรายชื่อกลุ่มทั้งหมดของคุณ ฝึกอบรมกลุ่มและรับสถานะการฝึกอบรม
  • Person.py - มีคุณสมบัติที่อนุญาต: สร้างบุคคล รับข้อมูลบุคคล ระบุบุคคลทั้งหมดในกลุ่มที่ระบุ เพิ่มใบหน้าให้กับบุคคลที่ระบุ
  • Face.py - มีคุณสมบัติที่อนุญาต: ตรวจจับใบหน้าบนภาพ, ระบุตัวตน, รับชื่อบุคคลที่ระบุตัว

ในไฟล์ชื่อ "recognition.py" ฉันมีคุณสมบัติที่ช่วยให้คุณสามารถตรวจสอบได้ว่ารูปภาพมีใบหน้าหรือไม่และเพิ่มใบหน้าให้กับบุคคลที่ระบุ (เพิ่มใบหน้าจากรูปภาพจำนวนมากจากโฟลเดอร์ที่ระบุโดยอัตโนมัติ)

ดาวน์โหลดไฟล์ที่แนบมากับขั้นตอนนี้ แกะมันออก เปลี่ยนตัวแปรโกลบอล 'KEY' ในสามไฟล์นี้: PersonGroup.py, Person.py และ Face.py เป็นคีย์ของคุณเอง ซึ่งคุณสามารถหาได้: portal.azure.com > ทรัพยากรทั้งหมด > บริการ face api (หรือวิธีที่คุณเรียก) > แท็บคีย์ คุณสามารถใช้ปุ่มใดก็ได้จากสองปุ่ม

หมายเหตุ: ที่นี่ เราจะฝึกบริการ Face API ให้รู้จักผู้คน ดังนั้นการดำเนินการต่อไปนี้สามารถทำได้จากคอมพิวเตอร์ทุกเครื่อง (ไม่จำเป็นต้องใช้ Raspberry Pi สำหรับสิ่งนั้น) - การเปลี่ยนแปลงจะถูกบันทึกไว้บนเซิร์ฟเวอร์ของ Microsoft

หลังจากเปลี่ยน KEY แล้ว ให้รัน recognition.py และป้อนคำสั่งต่อไปนี้ใน python shell:

PersonGroup.create("family", 'fff-fff')) // คุณสามารถใช้ชื่อและรหัสของคุณเองสำหรับ

กลุ่ม printResJson(PersonGroup.getPersonGroup('fff-fff'))

คุณต้องดูข้อมูลเกี่ยวกับกลุ่มที่คุณเพิ่งสร้างขึ้น ตอนนี้ป้อน:

printResJson(Person.createPerson('fff-fff', 'ชื่อบุคคล'))

ตอนนี้คุณได้รับ ID บุคคล สร้างโฟลเดอร์ที่มีรูปภาพของบุคคลนี้เพื่อให้รูปภาพทั้งหมดมีใบหน้าของบุคคลนี้ คุณสามารถใช้ฟังก์ชัน detectFaceOnImages ใน Recognition.py ได้ ซึ่งจะแสดงให้คุณเห็นว่ามีการตรวจพบใบหน้าใดบ้าง ตอนนี้รันคำสั่ง:

addFacesToPerson('โฟลเดอร์ที่มีรูปภาพ', 'ID บุคคลที่คุณได้รับหลังจากคำสั่งก่อนหน้า', 'fff-fff')

จากนั้นเราต้องอบรมบริการของเราโดยเข้าไปดังนี้

PersonGroup.trainPersonGroup('fff-fff')printResJson(PersonGroup.getPersonGroupTrainingStatus('fff-fff'))

ตอนนี้กลุ่มของเราได้รับการฝึกฝนและพร้อมที่จะระบุตัวบุคคล

ในการตรวจสอบบุคคลในภาพ คุณสามารถ:

Face.checkPerson(รูปภาพ 'fff-ffff')

คุณจะได้รับรายชื่อผู้สมัครและความน่าจะเป็นที่จะอยู่ในรูปถ่ายเพื่อตอบกลับ

หมายเหตุ: ทุกครั้งที่คุณเพิ่มใบหน้าให้กับบุคคลหรือบุคคลในกลุ่ม คุณต้องฝึกกลุ่ม!

ขั้นตอนที่ 5: การกำหนดค่าโหนดสีแดง

การกำหนดค่าโหนด-แดง
การกำหนดค่าโหนด-แดง

คำอธิบายขั้นตอน: ในขั้นตอนนี้ เราจะสร้างกระแส Node-Red ซึ่งจะแจ้งให้คุณทราบเกี่ยวกับการละเมิดการเข้าถึงตู้เย็นของคุณ =)

หาก Raspberry Pi ของคุณทำงานบน Raspbian Jessie พฤศจิกายน 2015 หรือเวอร์ชันที่ใหม่กว่า คุณไม่จำเป็นต้องติดตั้ง Node-Red เนื่องจากมีการติดตั้งไว้ล่วงหน้าแล้ว คุณเพียงแค่ต้องอัปเดต โปรดใช้คู่มือที่นี่

ตอนนี้ เราต้องติดตั้งโหนด Twilio ไปที่ Node-Red เพื่อให้เราสามารถเรียกใช้ข้อความได้ เปิดเทอร์มินัลแล้วพิมพ์ใน:

cd ~/.node-rednpm ติดตั้ง node-red-node-twilio

ข้อมูลเพิ่มเติมเกี่ยวกับโหนด Twilio ที่นี่ หลังจากนั้นให้รัน Node-Red โดยพิมพ์ลงในเทอร์มินัล:

โหนดสีแดง

จากนั้นไปที่: https://127.0.0.1:1880/ - หากคุณเปิดเบราว์เซอร์บน Raspberry Pihttps://{raspberry_pi_ip}:1880/ - หากคุณต้องการเปิดตัวแก้ไข Node-Red จากคอมพิวเตอร์เครื่องอื่น

หากต้องการทราบที่อยู่ IP ของราสเบอร์รี่ pi ให้ใช้คำแนะนำนี้

ตอนนี้ คุณต้องค้นหาโหนด Twilio ในรายการโหนดในตัวแก้ไข Node-Red ของคุณ (โดยปกติจะปรากฏหลังกลุ่ม 'โซเชียล')

ถึงเวลาสร้างกระแส!

หมายเหตุ: คุณสามารถใช้โฟลว์ของฉันที่แนบมากับขั้นตอนนี้ แต่อย่าลืมกำหนดค่าโหนด: อีเมล ทวิตเตอร์ และ twilio อ่านเกี่ยวกับเรื่องนี้ในภายหลัง

ขั้นตอนของเราเริ่มต้นด้วยโหนด "แจ้ง" ที่ยอมรับคำขอ POST จากโปรแกรมหลักของเราพร้อมข้อมูลบางอย่างเกี่ยวกับการละเมิดการเข้าถึง (ตัวอย่างข้อมูลสามารถพบได้ในโหนดความคิดเห็น "เกี่ยวกับวัตถุที่ได้รับ") โหนดนี้ตอบสนองทันทีด้วยข้อความ "ตกลง" ดังนั้นโปรแกรมหลักจึงรู้ว่าได้รับข้อมูลแล้ว (โฟลว์: /notify > ตอบกลับด้วย Ok > ตอบกลับ) โหนดสีเขียวที่ด้านล่างที่มีชื่อ msg.payload มีไว้เพื่อจุดประสงค์ในการดีบัก: หากมีบางอย่างไม่ทำงาน คุณสามารถใช้มันได้

จากโหนดกำปั้น (/ แจ้ง) ข้อมูลที่เผยแพร่ไปยัง "หัวข้อข้อมูล" และ "หัวข้อรูปภาพ" โดยที่หัวข้อ "ข้อมูล" และ "รูปภาพ" เพิ่มตามลำดับ

ในโหนด "คอมไพล์" เราได้รับข้อมูล (ที่เราได้รับในระหว่างขั้นตอนแรก) ด้วยหัวข้อ "ข้อมูล" และรูปภาพที่มีหัวข้อ "รูปภาพ" (รูปภาพนำมาจาก /home/pi/image.jpg) ข้อความทั้งสองนี้ควรถูกคอมไพล์เป็นวัตถุเดียว แต่ได้รับสองวัตถุในเวลาต่างกัน! เพื่อจัดการกับสิ่งนี้ เราจะใช้คุณลักษณะ "บริบท" ที่ช่วยให้เราสามารถจัดเก็บข้อมูลระหว่างการเรียกใช้ฟังก์ชันได้

ขั้นตอนต่อไปคือการตรวจสอบว่าบุคคลจากรายการเข้าถึงของเราหรือเป็นคนแปลกหน้า (โหนด checkConditions) มีฟิลด์ "บุคคลที่เชื่อถือได้" ในข้อมูลที่เราได้รับ: "จริง" หมายความว่าเรารู้จักบุคคลนี้ แต่เขา/เธอละเมิดสิทธิ์การเข้าถึง "เท็จ" หมายความว่าบุคคลนั้นเป็นคนแปลกหน้า

เมื่อผลลัพธ์เป็น "จริง" เราจะส่งการแจ้งเตือนไปที่ twitter, twilio และอีเมล เมื่อผลลัพธ์เป็น "เท็จ" - เฉพาะอีเมลและ twilio เราสร้างวัตถุสำหรับอีเมลพร้อมข้อความ รูปภาพที่แนบมา และหัวเรื่องอีเมล ซึ่งเป็นวัตถุสำหรับ twilio พร้อมข้อความ สำหรับ twitter เราเพิ่มข้อมูลไปยังวัตถุหาก "trustedPerson" เป็นจริง จากนั้นส่งวัตถุทั้งสามนี้ไปยังโหนดที่ต่างกันสามโหนด

หมายเหตุ: หากโหนดต่อไปนี้ไม่ควรได้รับข้อความ เราก็แค่ส่ง "null" ไปที่โหนดนั้น

ได้เวลากำหนดค่าโหนดสำหรับการแจ้งเตือนแล้ว!

Twitter เพิ่มโหนด "twitter" ในโฟลว์ เปิดโดยดับเบิลคลิก คลิกดินสอข้าง "Twitter ID" จากนั้นคลิกที่ "คลิกที่นี่เพื่อรับรองความถูกต้องกับ Twitter" เข้าสู่บัญชี Twitter ของคุณและให้สิทธิ์ที่จำเป็นกับ Node-Red

EmailAdd โหนด "อีเมล" ในโฟลว์ หากคุณไม่ได้ใช้ Gmail คุณจะต้องเปลี่ยนข้อมูลในฟิลด์ต่อไปนี้ - "เซิร์ฟเวอร์" และ "พอร์ต" (คุณสามารถค้นหาเซิร์ฟเวอร์และพอร์ตใดที่คุณควรใช้ในหน้าความช่วยเหลือของตัวแทนอีเมลของคุณ) มิฉะนั้น อย่าเปลี่ยนสิ่งเหล่านี้ ฟิลด์

  • ถึง > ที่อยู่อีเมลที่จะส่งข้อความ
  • Userid > เข้าสู่ระบบจากอีเมลของคุณ (อาจเหมือนกับช่อง "ถึง")
  • รหัสผ่าน > รหัสผ่านจากบัญชีอีเมลของคุณ
  • ชื่อ > ชื่อโหนดนี้

Twilio ไปที่ https://www.twilio.com/try-twilio และลงทะเบียนบัญชี ตรวจสอบมัน ไปที่ https://www.twilio.com/console คลิกที่ "หมายเลขโทรศัพท์" (ไอคอน # ใหญ่) และสร้างหมายเลขฟรี หากคุณอยู่นอกสหรัฐอเมริกา คุณต้องเพิ่มการอนุญาต GEO ไปที่ https://www.twilio.com/console/sms/settings/geo-pe… และเพิ่มประเทศของคุณ

ตอนนี้ไปที่ตัวแก้ไข Node-Red เพิ่มโหนด Twilio ดับเบิลคลิกเพื่อกำหนดค่าและกรอกข้อมูลในฟิลด์ทั้งหมด:

  • ข้อมูลประจำตัว > ใช้ข้อมูลประจำตัวในเครื่อง
  • Twilio > แก้ไข

    • SID บัญชี > เอามาจากที่นี่
    • จาก > พิมพ์หมายเลขเสมือนที่คุณสร้างขึ้น
    • Token > เอามาจากที่นี่
    • ชื่อ > ทวิลิโอ
  • เอาท์พุต > SMS
  • ถึง > หมายเลขโทรศัพท์ของคุณ
  • ชื่อ > ชื่อสำหรับโหนดนี้

คลิกปรับใช้

ตอนนี้กระแสของคุณพร้อมแล้ว! คุณสามารถทดสอบได้โดยส่งคำขอ POST พร้อมวัตถุที่ระบุ!

ขั้นตอนที่ 6: รวบรวมโครงการทั้งหมด

รวบรวมโครงการทั้งหมด
รวบรวมโครงการทั้งหมด
รวบรวมโครงการทั้งหมด
รวบรวมโครงการทั้งหมด

คำอธิบายขั้นตอน: ในขั้นตอนนี้ เราจะรวบรวมทุกส่วนเข้าด้วยกันและทำให้ทำงานเป็นระบบที่แยกจากกัน

ในขั้นตอนนี้ คุณต้อง:

  1. กำหนดค่าสมาร์ทโฟนเครื่องเก่าเป็นกล้องไอพี
  2. มีเซ็นเซอร์ทำงาน
  3. Face API ของ Microsoft ที่ผ่านการฝึกอบรมมาแล้ว
  4. กำหนด Node-Red flow

ตอนนี้เราต้องปรับปรุงโค้ดที่เราเขียนไว้ในขั้นตอนที่ 2 โดยเฉพาะอย่างยิ่ง function process() ที่เรียกว่าเมื่อมีคนเปิดประตู ในฟังก์ชันนี้ เราจะทำสิ่งต่อไปนี้:

  1. รับภาพจากกล้องไอพีและบันทึกไว้ใน “/home/pi/” ด้วยชื่อ “image.jpg” (ฟังก์ชั่น “fromIpCam” ในไฟล์ “getImage”)
  2. รับชื่อบุคคลในภาพนั้น (ฟังก์ชั่น “checkPerson” ในไฟล์ “การรับรู้”)
  3. ตรวจสอบสิทธิ์การเข้าถึงของบุคคลนั้น (ฟังก์ชัน "ตรวจสอบ" ในไฟล์ "การเข้าถึง")
  4. ตามผลลัพธ์ของฟังก์ชัน “ตรวจสอบ” เขียนข้อความ
  5. ส่งข้อความประกอบไปยัง Node-Red (ฟังก์ชัน “toNodeRed” ในไฟล์ “sendData”)

หมายเหตุ: หากต้องการดูโค้ดทั้งหมดของฟังก์ชันที่กล่าวถึง โปรดดาวน์โหลดไฟล์ zip ที่แนบมากับขั้นตอนนี้

เกี่ยวกับฟังก์ชัน “fromIpCam” ฟังก์ชันนี้ส่งคำขอ GET ไปยังกล้อง IP ของคุณ รับภาพที่เน้นการตอบสนอง และบันทึกไปยังเส้นทางที่คุณระบุ คุณต้องระบุที่อยู่ IP ของกล้องสำหรับฟังก์ชันนี้

เกี่ยวกับฟังก์ชัน “checkPerson” ฟังก์ชั่นรับเส้นทางไปยังรูปภาพและกลุ่มที่คุณต้องการค้นหาบุคคลจากภาพถ่ายเป็นพารามิเตอร์ ประการแรก จะตรวจจับใบหน้าในรูปภาพที่ให้มา (ไฟล์ Face.py ฟังก์ชัน "ตรวจจับ") ในการตอบสนองจะได้รับ id หากตรวจพบใบหน้า จากนั้นจะเรียกฟังก์ชัน “ระบุ” (ไฟล์ Face.py) ที่ค้นหาบุคคลที่คล้ายกันในกลุ่มที่ระบุ ในการตอบสนองจะได้รับ ID บุคคลหากพบบุคคล จากนั้นเรียกใช้ฟังก์ชัน "บุคคล" (ไฟล์ Person.py) โดยมี ID บุคคลเป็นพารามิเตอร์ ฟังก์ชัน "บุคคล" ส่งกลับบุคคลที่มี ID ที่ระบุ เราได้รับชื่อของบุคคลและส่งคืน

เกี่ยวกับฟังก์ชัน "ตรวจสอบ" ฟังก์ชันนี้อยู่ในไฟล์ "การเข้าถึง" ซึ่งยังวาง "รายการเข้าถึง" เป็นตัวแปรส่วนกลางด้วย (คุณสามารถแก้ไขได้ตามที่คุณต้องการ) รับชื่อบุคคลจากฟังก์ชันก่อนหน้า ฟังก์ชัน "ตรวจสอบ" เปรียบเทียบบุคคลนี้กับรายการเข้าถึงและส่งคืนผลลัพธ์

หมายเหตุ: โปรเจ็กต์เต็มจะแนบไปกับขั้นตอนต่อไป

ขั้นตอนที่ 7: บทสรุป

ในขั้นตอนนี้ฉันได้แนบโปรเจ็กต์ฉบับเต็มซึ่งคุณควรเปิดเครื่องรูดและวางลงใน Raspberry Pi ของคุณ

เพื่อให้โครงการนี้ทำงานให้เรียกใช้ไฟล์ "main.py"

หากคุณควบคุม Raspberry Pi ผ่าน SSH คุณต้องเรียกใช้สองโปรแกรมจากเชลล์เดียว: โปรแกรม python และ Node-Red พิมพ์เทอร์มินัลต่อไปนี้:

โหนดสีแดง

กด "Ctrl + Z" แล้วพิมพ์:

งาน

คุณได้เห็นกระบวนการ Node-Red แล้ว ดู ID ของกระบวนการและพิมพ์:

bg

ตอนนี้ Node-Red ต้องเริ่มทำงานในพื้นหลัง จากนั้นไปที่ไดเร็กทอรีที่มีโปรเจ็กต์ของคุณและรันโปรแกรมหลัก:

python3 main.py

หมายเหตุ: อย่าลืมเปลี่ยน KEY ในไฟล์ python (ขั้นตอนที่ 4) และข้อมูลประจำตัวใน Node-Red flow (ขั้นตอนที่ 5)

เสร็จแล้ว! ตู้เย็นของคุณปลอดภัย!

ฉันหวังว่าคุณจะสนุกกับการรักษายากนี้! อย่าลังเลที่จะแสดงความคิดเห็น

ฉันจะขอบคุณถ้าคุณลงคะแนนให้กับโครงการของฉัน =)

ขอขอบคุณ!

แนะนำ: