Índice:

Smart Lock de reconhecimento facial com LTE Pi HAT: 4 etapas
Smart Lock de reconhecimento facial com LTE Pi HAT: 4 etapas

Vídeo: Smart Lock de reconhecimento facial com LTE Pi HAT: 4 etapas

Vídeo: Smart Lock de reconhecimento facial com LTE Pi HAT: 4 etapas
Vídeo: Face Recognition and Identification | Arduino Face ID using openCV python and Arduino. 2024, Novembro
Anonim
Smart Lock de reconhecimento facial com LTE Pi HAT
Smart Lock de reconhecimento facial com LTE Pi HAT

O reconhecimento de rosto está se tornando cada vez mais usado, podemos usá-lo para fazer um bloqueio inteligente.

Etapa 1: Coisas usadas neste projeto

Componentes de hardware

  • Raspberry Pi 3 Modelo B
  • Módulo de câmera Raspberry Pi V2
  • Grove - Relé
  • LTE Cat 1 Pi HAT (Europa)
  • Tela LCD IPS HDMI 1200x1980 de 10,1 polegadas

Aplicativos de software e serviços online

  • WinSCP
  • Notepad ++

Etapa 2: Conexão de Hardware

Conexão de Hardware
Conexão de Hardware

Neste projeto, planejamos tirar fotos com picamera e reconhecer rostos nelas e, em seguida, exibir o resultado do reconhecimento na tela. Se os rostos forem conhecidos, abra a porta e envie quem abriu a porta para o número de telefone especificado via SMS.

Portanto, você precisa conectar uma câmera à interface da câmera do Raspberry Pi e instalar a antena e o Grove - Relay para o chapéu LTE Pi e, em seguida, conecte o HAT ao seu Pi. A tela pode ser conectada ao Raspberry Pi por meio de um cabo HDMI, não se esqueça de conectar a alimentação à tela e ao Pi.

Etapa 3: Programação de software

Reconhecimento facial

Obrigado por Adam Geitgey e seu projeto Face Recognition, podemos usar a biblioteca de reconhecimento facial mais simples do mundo no Raspberry Pi. As etapas a seguir mostrarão como configurar o reconhecimento de rosto em Pi.

Etapa 1. Use raspi-config para configurar a câmera e a memória GPU.

sudo raspi-config

Escolhendo Opções de Interface - Câmera para habilitar a picamera, então escolhendo Opções Avançadas - Divisão de Memória para definir a memória GPU, ela deve ser alterada para 64. Após terminar, reinicie seu Raspberry Pi.

Etapa 2. Instale as bibliotecas necessárias.

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

Etapa 3. Faça picamerea support array.

sudo pip3 install --upgrade picamera [array]

Etapa 4. Instale o dlib e o reconhecimento facial.

sudo pip3 install dlib

sudo pip3 install face_recognition

Etapa 5. Baixe e execute um exemplo de reconhecimento facial

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

AVISO: Se você obteve ImportError: libatlas.so.3: não é possível abrir o arquivo de objeto compartilhado: Não existe esse arquivo ou diretório, execute o seguinte comando para corrigi-lo.

Retransmissão

Quando o reconhecimento de rosto estiver pronto, podemos continuar a adicionar recursos adicionais. Conectamos o Grove-Relay ao LTE Cat 1 Pi HAT, mas ele usa a porta digital em vez da porta I2C.

Esta é a pinagem do Raspberry Pi 3B, podemos ver o pino SDA e o pino SCL localizados nos pinos 3 e 5 da placa.

Imagem
Imagem

Portanto, podemos controlar o relé por meio de saídas de sinal digital para o pino 5. Execute o programa python seguinte em seu Raspberry Pi, se nada der errado, você ouvirá um Ti-Ta do relé.

importar RPi. GPIO como GPIO

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

Então aqui está a ideia, carregamos rostos conhecidos de uma pasta, reconhecemos rostos capturados por picamera, se o rosto está na pasta, controlamos o relé para destravar a porta. Podemos empacotá-los em uma classe, aqui está o método load_known_faces () e o método unlock (), o programa completo pode ser baixado no final deste artigo.

def load_known_faces (self):

faces_conhecidas = os.listdir (self._caminho_faces_conhecidas) para face_conhecida em faces_conhecidas: self._nome_faces_conhecidas.append (face_conhecida [0: len (face_conhecida) - len ('. jpg')]) imagem_conhecida_face = face_recognition.load_image_faces) self._ known_faces_encoding.append (face_recognition.face_encodings (known_face_image) [0]) retornar len (self._ known_faces_encoding) def unlock (self): if self._ matched.count (True)> 0: GPIO.output (self._ relay_pin, GPIO. HIGH) print ('Porta aberta') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True self._ retry_count + = 1 print ('Por favor, tente novamente… { } '. format (self._ retry_count)) return False

Pense transcendentalmente, podemos mostrar a imagem que reconheceu, as bibliotecas PIL e matplotlib podem ser úteis, dentre elas, o matplotlib precisa ser instalado manualmente, execute este comando no terminal do seu Raspberry Pi.

sudo pip3 install matplotlib

Importe-os em seu código e altere o método block in unlock () desta forma:

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 ('Porta aberta') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True

Agora, se um rosto for reconhecido, a imagem da pasta será exibida na tela.

Imagem
Imagem

SMS

Às vezes queremos saber quem está em nossa sala, e agora há um lugar para LTE Cat 1 Pi HAT. Conecte um cartão SIM a ele e siga as etapas abaixo para testar se funciona ou não.

Etapa 1. Habilite UART0 no Raspberry Pi

Use o nano para editar config.txt em / boot

sudo nano /boot/config.txt

adicione dtoverlay = pi3-disable-bt na parte inferior e desative o serviço hciuart

sudo systemctl disable hciuart

em seguida, exclua console = serial0, 115200 em cmdline.txt em / boot

sudo nano /boot/cmdline.txt

Depois de tudo feito, você deve reiniciar o Raspberry Pi.

Etapa 2. Baixe o exemplo e execute-o.

Abra um terminal em seu Raspberry Pi, digite estes comandos linha por linha.

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

Se você vir essas saídas em seu terminal, o LTE Cat 1 Pi HAT funciona bem.

Cabeçalho GPIO de 40 pinos detectado

Habilitando CTS0 e RTS0 em GPIOs 16 e 17 rts cts ao despertar … nome do módulo: LARA-R211 RSSI: 3

Agora que sabíamos que o HAT funciona bem, como usá-lo para enviar SMS? A primeira coisa que você precisa saber é que o Raspberry Pi se comunica com o HAT por meio de comandos de envio AT pelo UART. Você pode enviar comandos AT para LTE HAT executando este código em python

de importação ublox_lara_r2 *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Fechar massagem de depuração u.debug = False u.sendAT ('')

O comando AT para enviar SMS é o seguinte

AT + CMGF = 1

AT + CMGS =

então aqui está o método _send_sms ():

def _send_sms (self):

if self._ phonenum == None: retorna False para o destravador em self._ reconhece_face_names (): if self._ ublox.sendAT ('AT + CMGF = 1 / r / n'): print (self._ ublox.response) se self. _ublox.sendAT ('AT + CMGS = "{}" / r / n'.format (self._ phonenum)): print (self._ ublox.response) if self._ ublox.sendAT (' {} entrar na sala. / x1a'.format (unlocker)): print (self._ ublox.response)

AVISO: A biblioteca LTE Cat 1 Pi HAT escrita por python2, que não é muito compatível com python3, se você quiser usá-la com reconhecimento facial, faça o download do link no final deste artigo.

Recomendado: