สารบัญ:

การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT: 4 ขั้นตอน
การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT: 4 ขั้นตอน

วีดีโอ: การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT: 4 ขั้นตอน

วีดีโอ: การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT: 4 ขั้นตอน
วีดีโอ: สอนวิธีการปลดล็อค google account frp ปลดล็อก Gmail ล้างเครื่องจำจีเมล์ไม่ได้ bypass FRP 2024, พฤศจิกายน
Anonim
การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT
การจดจำใบหน้า Smart Lock ด้วย LTE Pi HAT

การจดจำใบหน้ามีการใช้กันอย่างแพร่หลายมากขึ้นเรื่อย ๆ เราสามารถใช้เพื่อสร้างล็อคอัจฉริยะได้

ขั้นตอนที่ 1: สิ่งที่ใช้ในโครงการนี้

ส่วนประกอบฮาร์ดแวร์

  • Raspberry Pi 3 รุ่น B
  • โมดูลกล้อง Raspberry Pi V2
  • โกรฟ - รีเลย์
  • LTE Cat 1 Pi HAT (ยุโรป)
  • 10.1 นิ้ว 1200x1980 HDMI IPS LCD Display

แอพซอฟต์แวร์และบริการออนไลน์

  • WinSCP
  • แผ่นจดบันทึก++

ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

ในโครงการนี้ เราวางแผนที่จะถ่ายภาพด้วย picamera และจดจำใบหน้าในนั้น จากนั้นแสดงผลการจดจำบนหน้าจอ หากรู้ใบหน้าให้เปิดประตูและส่งผู้ที่เปิดประตูไปยังหมายเลขโทรศัพท์ที่ระบุทาง SMS

ดังนั้น คุณต้องเชื่อมต่อกล้องกับอินเทอร์เฟซกล้องของ Raspberry Pi และติดตั้งเสาอากาศและ Grove - รีเลย์ไปยังหมวก LTE Pi จากนั้นเสียบ HAT กับ Pi ของคุณ หน้าจอสามารถเชื่อมต่อกับ Raspberry Pi ผ่านสาย HDMI อย่าลืมต่อไฟเข้ากับหน้าจอและ Pi ของคุณ

ขั้นตอนที่ 3: การเขียนโปรแกรมซอฟต์แวร์

การจดจำใบหน้า

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

ขั้นตอนที่ 1. ใช้ raspi-config เพื่อกำหนดค่ากล้องและหน่วยความจำ GPU

sudo raspi-config

การเลือกตัวเลือกอินเทอร์เฟซ -- กล้องเพื่อเปิดใช้งาน picamera จากนั้นเลือก Advanced Options -- Memory Split เพื่อตั้งค่าหน่วยความจำ GPU ควรเปลี่ยนเป็น 64 หลังจากเสร็จสิ้น ให้รีบูต Raspberry Pi ของคุณ

ขั้นตอนที่ 2 ติดตั้งไลบรารีที่จำเป็น

sudo apt-get update

sudo apt-get upgrade sudo apt-get install build-essential / cmake / gfortran / git / wget / curl / graphicsmagick / libgraphicsmagick1-dev / libatlas-dev / libavcodec-dev / libavformat-dev / libboost-all-dev / libgtk2 0-dev / libjpeg-dev / liblapack-dev / libswscale-dev / pkg-config / python3-dev / python3-numpy / python3-picamera / python3-pip / zip sudo apt-get clean

ขั้นตอนที่ 3 ทำให้ picamerea รองรับอาร์เรย์

sudo pip3 ติดตั้ง -- อัปเกรด picamera [อาร์เรย์]

ขั้นตอนที่ 4 ติดตั้ง dlib และการจดจำใบหน้า

sudo pip3 ติดตั้ง dlib

sudo pip3 ติดตั้ง face_recognition

ขั้นตอนที่ 5. ดาวน์โหลดและเรียกใช้ตัวอย่างการจดจำใบหน้า

git clone -- สาขาเดียว

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

ข้อสังเกต: หากคุณได้รับ ImportError: libatlas.so.3: cannot open shared object file: No such file or directory, เรียกใช้คำสั่งต่อไปนี้เพื่อแก้ไข

รีเลย์

เมื่อการจดจำใบหน้าพร้อมแล้ว เราก็สามารถเพิ่มคุณสมบัติเพิ่มเติมได้ต่อไป เราเชื่อมต่อ Grove - Relay กับ LTE Cat 1 Pi HAT แต่ใช้พอร์ตดิจิทัลแทนพอร์ต I2C

นี่คือพินเอาต์สำหรับ Raspberry Pi 3B เราจะเห็นพิน SDA และพิน SCL อยู่ในพิน 3 และพิน 5 ของบอร์ด

ภาพ
ภาพ

ดังนั้นเราจึงสามารถควบคุมรีเลย์โดยเอาท์พุตสัญญาณดิจิตอลไปยังขา 5 รันตามโปรแกรม python บน Raspberry Pi ของคุณ ถ้าไม่มีอะไรผิดพลาด คุณจะได้ยิน Ti-Ta จากรีเลย์

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

RELAY_PIN = 5 GPIO.setmode (GPIO. BOARD) GPIO.setup (RELAY_PIN, GPIO. OUT) GPIO.output (RELAY_PIN, GPIO. HIGH)

นี่คือแนวคิด เราโหลดใบหน้าที่รู้จักจากโฟลเดอร์ จดจำใบหน้าที่ picamera จับได้ หากใบหน้าอยู่ในโฟลเดอร์ ให้ควบคุมรีเลย์เพื่อปลดล็อกประตู เราสามารถจัดแพ็คเกจให้กับคลาส นี่คือเมธอด load_known_faces() และเมธอด Unlock() โดยสามารถดาวน์โหลดโปรแกรมที่เสร็จสมบูรณ์ได้ในตอนท้ายของบทความนี้

def load_known_faces (ตัวเอง):

known_faces = os.listdir(self._known_faces_path) สำหรับ known_face ในknown_faces: self._known_faces_name.append(known_face[0: len(known_face) - len('.jpg')])known_face_image = face_recognition.load_image_file(ตัวเอง._known_faces_path) self._known_faces_encoding.append(face_recognition.face_encodings(known_face_image)[0]) คืนค่า len(self._known_faces_encoding) def unlock(self): if self._matched.count(True) > 0: GPIO.output(self._relay_pin, GPIO. HIGH) print('Door open') time.sleep(5) GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True self._retry_count += 1 print('Please try again…{ }'.format(self._retry_count)) คืนค่า False

คิดเหนือธรรมชาติ เราสามารถแสดงรูปภาพที่รับรู้ได้ ไลบรารี PIL และ matplotlib อาจมีประโยชน์ ในหมู่พวกเขา จำเป็นต้องติดตั้ง matplotlib ด้วยตนเอง เรียกใช้คำสั่งนี้ในเทอร์มินัลของ Raspberry Pi

sudo pip3 ติดตั้ง matplotlib

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

img = Image.open('{}/{}.jpg'.format(self._known_faces_path, self._known_faces_name[0]))

plt.imshow(img) plt.ion() GPIO.output(self._relay_pin, GPIO. HIGH) พิมพ์ ('Door open') plt.pause(3) plt.close() GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() คืนค่า True

ตอนนี้ หากจำใบหน้าได้แล้ว รูปภาพในโฟลเดอร์จะแสดงบนหน้าจอ

ภาพ
ภาพ

ข้อความ

บางครั้งเราอยากรู้ว่าใครอยู่ในห้องของเรา และตอนนี้ก็มีที่สำหรับ LTE Cat 1 Pi HAT แล้ว เสียบซิมการ์ดแล้วทำตามขั้นตอนเพื่อทดสอบว่าใช้งานได้หรือไม่

ขั้นตอนที่ 1. เปิดใช้งาน UART0 ใน Raspberry Pi

ใช้ nano เพื่อแก้ไข config.txt ใน /boot

sudo nano /boot/config.txt

เพิ่ม dtoverlay=pi3-disable-bt ที่ด้านล่างของมันและปิดการใช้งานบริการ hciuart

sudo systemctl ปิดการใช้งาน hciuart

จากนั้นลบ console=serial0, 115200 ใน cmdline.txt ใน /boot

sudo nano /boot/cmdline.txt

หลังจากทำทุกอย่างเสร็จแล้ว คุณควรรีบูท Raspberry Pi ของคุณ

ขั้นตอนที่ 2 ดาวน์โหลดตัวอย่างและเรียกใช้

เปิดเทอร์มินัลบน Raspberry Pi ของคุณ พิมพ์คำสั่งเหล่านี้ทีละบรรทัด

ซีดี ~

git clone https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd ublox_lara_r2_pi_hat sudo python setup.py ติดตั้ง cd ทดสอบ sudo python test01.py

หากคุณเห็นเอาต์พุตเหล่านี้ในเทอร์มินัลของคุณ แสดงว่า LTE Cat 1 Pi HAT ทำงานได้ดี

ตรวจพบส่วนหัว GPIO 40 พิน

เปิดใช้งาน CTS0 และ RTS0 บน GPIO 16 และ 17 rts cts เมื่อปลุก… ชื่อโมดูล: LARA-R211 RSSI: 3

ตอนนี้เรารู้แล้วว่า HAT ทำงานได้ดีแล้วจะใช้งานส่ง SMS ได้อย่างไร สิ่งแรกที่คุณต้องรู้คือ Raspberry Pi สื่อสารกับ HAT ผ่านคำสั่ง AT โดย UART คุณสามารถส่งคำสั่ง AT ไปยัง LTE HAT โดยเรียกใช้รหัสนี้ใน python

จากการนำเข้า ublox_lara_r2 *

u = Ublox_lara_r2() u.initialize() u.reset_power() # ปิดนวดแก้จุดบกพร่อง u.debug = False u.sendAT('')

คำสั่ง AT สำหรับส่ง SMS มีดังนี้

AT+CMGF=1

AT+CMGS=

ดังนั้นนี่คือ _send_sms() วิธีการ:

def _send_sms (ตัวเอง):

if self._phonenum == None: คืนค่า False สำหรับตัวปลดล็อคใน self._recognise_face_names(): if self._ublox.sendAT('AT+CMGF=1\r\n'): พิมพ์ (self._ublox.response) หากเป็นตัวเอง _ublox.sendAT('AT+CMGS="{}"\r\n'.format(self._phonenum)): print(self._ublox.response) ถ้า self._ublox.sendAT('{} เข้ามาในห้อง\ x1a'.format(unlocker)): พิมพ์ (self._ublox.response)

ประกาศ: ไลบรารีของ LTE Cat 1 Pi HAT เขียนโดย python2 ซึ่งไม่ค่อยเข้ากันได้กับ python3 หากคุณต้องการใช้กับการจดจำใบหน้า โปรดดาวน์โหลดจากลิงก์ท้ายบทความนี้

แนะนำ: