Mục lục:

Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT: 4 bước
Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT: 4 bước

Video: Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT: 4 bước

Video: Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT: 4 bước
Video: HƯỚNG DẪN KÍCH HOẠT DỊCH VỤ VÀ ĐĂNG NHẬP BẰNG VÂN TAY HOẶC FACE ID TRÊN VCB DIGIBANK 2024, Tháng bảy
Anonim
Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT
Khóa thông minh nhận dạng khuôn mặt với LTE Pi HAT

Nhận dạng khuôn mặt ngày càng được sử dụng rộng rãi, chúng ta có thể sử dụng nó để làm khóa thông minh.

Bước 1: Những thứ được sử dụng trong dự án này

Các thành phần phần cứng

  • Raspberry Pi 3 Mô hình B
  • Mô-đun máy ảnh Raspberry Pi V2
  • Grove - Tiếp sức
  • LTE Cat 1 Pi HAT (Châu Âu)
  • Màn hình LCD IPS 10.1 inch 1200x1980 HDMI

Ứng dụng phần mềm và dịch vụ trực tuyến

  • WinSCP
  • Notepad ++

Bước 2: Kết nối phần cứng

Kết nối phần cứng
Kết nối phần cứng

Trong dự án này, chúng tôi dự định chụp ảnh bằng picamera và nhận dạng khuôn mặt trong đó, sau đó hiển thị kết quả nhận dạng trên màn hình. Nếu biết khuôn mặt, hãy mở cửa và gửi người đã mở cửa đến số điện thoại được chỉ định qua SMS.

Vì vậy, bạn cần kết nối máy ảnh với giao diện máy ảnh của Raspberry Pi, đồng thời cài đặt ăng-ten và mũ Grove - Relay to LTE Pi, sau đó cắm HAT vào Pi của bạn. Màn hình có thể được kết nối với Raspberry Pi thông qua cáp HDMI, đừng quên kết nối nguồn cho màn hình và Pi của bạn.

Bước 3: Lập trình phần mềm

Nhận dạng khuôn mặt

Cảm ơn Adam Geitgey và dự án Nhận dạng khuôn mặt của anh ấy, chúng tôi có thể sử dụng thư viện nhận dạng khuôn mặt đơn giản nhất thế giới trên Raspberry Pi. Các bước sau đây sẽ hướng dẫn bạn cách thiết lập nhận dạng khuôn mặt trên Pi.

Bước 1. Sử dụng raspi-config để cấu hình camera và bộ nhớ GPU.

sudo raspi-config

Chọn Tùy chọn giao diện - Máy ảnh để bật picamera, sau đó chọn Tùy chọn nâng cao - Tách bộ nhớ để đặt bộ nhớ GPU, nó sẽ được thay đổi thành 64. Sau khi hoàn tất, hãy khởi động lại Raspberry Pi của bạn.

Bước 2. Cài đặt các thư viện cần thiết.

sudo apt-get cập nhật

sudo apt-get nâng cấp 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

Bước 3. Tạo mảng hỗ trợ picamerea.

sudo pip3 install - nâng cấp picamera [mảng]

Bước 4. Cài đặt dlib và nhận dạng khuôn mặt.

sudo pip3 cài đặt dlib

sudo pip3 cài đặt face_recognition

Bước 5. Tải xuống và chạy ví dụ nhận dạng khuôn mặt

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

LƯU Ý: Nếu bạn nhận được ImportError: libatlas.so.3: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục như vậy, hãy chạy lệnh sau để khắc phục.

Chuyển tiếp

Khi nhận dạng khuôn mặt đã sẵn sàng, chúng tôi có thể tiếp tục thêm các tính năng bổ sung. Chúng tôi đã kết nối Grove - Relay với LTE Cat 1 Pi HAT, nhưng nó sử dụng cổng kỹ thuật số thay vì cổng I2C.

Đây là chân cắm cho Raspberry Pi 3B, chúng ta có thể thấy chân SDA và chân SCL nằm ở chân 3 và chân 5 của bo mạch.

Hình ảnh
Hình ảnh

Vì vậy, chúng tôi có thể điều khiển rơ le bằng cách xuất tín hiệu kỹ thuật số đến chân 5. Chạy theo chương trình python xuống trên Raspberry Pi của bạn, nếu không có gì sai, bạn sẽ nghe thấy tiếng Ti-Ta từ rơ le.

nhập RPi. GPIO dưới dạng GPIO

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

Vì vậy, đây là ý tưởng, chúng tôi tải các khuôn mặt đã biết từ một thư mục, nhận dạng khuôn mặt được chụp bởi picamera, nếu khuôn mặt trong thư mục, điều khiển rơle để mở khóa cửa. Chúng ta có thể đóng gói chúng thành một lớp, ở đây là phương thức load_known_faces () và phương thức unlock (), chương trình đã hoàn thành có thể được tải xuống ở phần cuối của bài viết này.

def load_known_faces (self):

known_faces = os.listdir (self._ known_faces_path) cho known_face trong known_faces: self._ known_faces_name.append (known_face [0: len (known_face) - len ('. jpg')]) known_face_image = face_recognition.load_image_file (self._ath + known_faces) self._ known_faces_encoding.append (face_recognition.face_encodings (known_face_image) [0]) return len (self._ known_faces_encoding) def unlock (self): if self._ match.count (True)> 0: GPIO.output (self._ relay_pin, GPIO. HIGH) print ('Cửa đã mở') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True self._ retry_count + = 1 print ('Vui lòng thử lại… { } '. format (self._ retry_count)) trả về False

Hãy suy nghĩ một cách siêu việt, chúng ta có thể hiển thị bức tranh mà ai đã nhận ra, thư viện PIL và matplotlib có thể hữu ích, trong số đó, matplotlib cần được cài đặt theo cách thủ công, hãy chạy lệnh này trong thiết bị đầu cuối Raspberry Pi của bạn.

sudo pip3 cài đặt matplotlib

Nhập chúng vào mã của bạn và thay đổi if block trong phương thức unlock () như sau:

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) print ('Cửa đã mở') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True

Bây giờ, nếu một khuôn mặt được nhận dạng, ảnh trong thư mục sẽ được hiển thị trên màn hình.

Hình ảnh
Hình ảnh

tin nhắn

Đôi khi chúng tôi muốn biết ai đang ở trong phòng của mình và bây giờ có một nơi cho LTE Cat 1 Pi HAT. Cắm thẻ SIM vào nó và làm theo các bước sau để kiểm tra xem nó có hoạt động hay không.

Bước 1. Bật UART0 trong Raspberry Pi

Sử dụng nano để chỉnh sửa config.txt trong / boot

sudo nano /boot/config.txt

thêm dtoverlay = pi3-disable-bt vào cuối trang và tắt dịch vụ hciuart

sudo systemctl vô hiệu hóa hciuart

sau đó xóa console = serial0, 115200 trong cmdline.txt trong / boot

sudo nano /boot/cmdline.txt

Sau khi mọi thứ hoàn tất, bạn nên khởi động lại Raspberry Pi của mình.

Bước 2. Tải xuống ví dụ và chạy nó.

Mở một thiết bị đầu cuối trên Raspberry Pi của bạn, gõ từng dòng lệnh này vào nó.

cd ~

git clone https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd ublox_lara_r2_pi_hat sudo python setup.py install cd test sudo python test01.py

Nếu bạn thấy các đầu ra này trong thiết bị đầu cuối của mình, LTE Cat 1 Pi HAT hoạt động tốt.

Đã phát hiện tiêu đề GPIO 40 chân

Bật CTS0 và RTS0 trên cts GPIO 16 và 17 rts khi thức dậy… tên mô-đun: LARA-R211 RSSI: 3

Bây giờ chúng ta đã biết HAT hoạt động tốt, làm thế nào để sử dụng nó để gửi SMS? Điều đầu tiên bạn cần biết là Raspberry Pi giao tiếp với HAT thông qua lệnh send AT của UART. Bạn có thể gửi lệnh AT tới LTE HAT bằng cách chạy mã này trong python

từ ublox_lara_r2 nhập *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Đóng xoa bóp gỡ lỗi u.debug = False u.sendAT ('')

Lệnh AT để gửi SMS như sau

AT + CMGF = 1

AT + CMGS =

vì vậy đây là phương thức _send_sms ():

def _send_sms (bản thân):

if self._ phonenum == Không: trả về False cho người mở khóa._ Recogse_face_names (): if self._ ublox.sendAT ('AT + CMGF = 1 / r / n'): print (self._ ublox.response) nếu self. _ublox.sendAT ('AT + CMGS = "{}" / r / n'.format (self._ phonenum)): print (self._ ublox.response) nếu tự._ ublox.sendAT (' {} vào phòng. / x1a'.format (trình mở khóa)): in (tự._ ublox.response)

LƯU Ý: Thư viện của LTE Cat 1 Pi HAT được viết bởi python2, không tương thích lắm với python3, nếu bạn muốn sử dụng nó với tính năng nhận dạng khuôn mặt, vui lòng tải xuống từ liên kết ở cuối bài viết này.

Đề xuất: