Índice:

Zombie Detecting Smart Security Owl (Deep Learning): 10 etapas (com imagens)
Zombie Detecting Smart Security Owl (Deep Learning): 10 etapas (com imagens)

Vídeo: Zombie Detecting Smart Security Owl (Deep Learning): 10 etapas (com imagens)

Vídeo: Zombie Detecting Smart Security Owl (Deep Learning): 10 etapas (com imagens)
Vídeo: Skibidi toilet zombie Vs cameraman 4 2024, Novembro
Anonim

Olá a todos, bem-vindos ao T3chFlicks! Neste tutorial de Halloween, mostraremos como colocamos um toque super assustador em um clássico doméstico mundano: a câmera de segurança.

Quão?! Fizemos uma coruja de visão noturna que usa processamento de imagem para rastrear pessoas. Ah, e apita, exatamente como a coisa real!

Estamos muito entusiasmados com este projeto e esperamos para realizá-lo desde que o novo Raspberry Pi 4 foi lançado. Ele tem 4 GB de RAM, o que abre a porta para muitas possibilidades realmente interessantes, incluindo processamento de imagem com modelos de aprendizado profundo em tempo real.

Se você quiser ficar de olho na aproximação de zumbis no Halloween, ou apenas dar uma olhada no seu jardim o resto do ano, este é o lugar para você. A segurança não precisa ser entediante para ser eficaz!

Suprimentos

Para esta construção, você precisará de:

  • Raspberry Pi 4 (4 GB de RAM) Amazon
  • Night Vision Camera Amazon
  • Micro Servo Amazon
  • Fake Owl Amazon
  • Cola amazona
  • Pintar amazona
  • Parafusos Amazon
  • Alto-falante USB Amazon
  • Fonte de alimentação portátil grande (5v +) Amazon
  • Impressora 3D Amazon

Etapa 1: Etapa 1: decapitar

Etapa 1: decapitar
Etapa 1: decapitar
Etapa 1: decapitar
Etapa 1: decapitar
Etapa 1: decapitar
Etapa 1: decapitar

uma. Puxe a cabeça da coruja (às vezes você só precisa ser brutal) puxando com força sua cabeça onde ela se prende à mola.

b. A cabeça da coruja se conecta ao corpo por um cilindro que fica no topo de uma grande mola. Remova este cilindro retirando o parafuso.

c. O cilindro que você acabou de remover é feito de duas partes, um copo de plástico e um rolamento que fica dentro dele. Remova o rolamento do cilindro usando uma chave de fenda (ou ferramenta semelhante).

d. Usando o parafuso que conectou o cilindro à mola, prenda o servo ao cilindro.

e. Remova a mola desapertando os três parafusos que a prendem ao corpo.

f. Faça um orifício na parte superior do corpo da coruja que seja grande o suficiente para caber alguns fios e o cabo da câmera. Usamos uma combinação deselegante de uma broca e uma chave de fenda para fazer isso.

Etapa 2: Etapa 2: adicionar Smart

Etapa 2: Adicionar Smart
Etapa 2: Adicionar Smart
Etapa 2: Adicionar Smart
Etapa 2: Adicionar Smart
Etapa 2: Adicionar Smart
Etapa 2: Adicionar Smart

uma. Imprima em 3D o estojo da câmera e pinte-o para combinar com a coruja - usamos algumas tintas acrílicas baratas. Pintar não é uma etapa vital, mas melhora drasticamente a aparência geral!

b. Com a cabeça da coruja de cabeça para baixo, aparafuse a parte superior do estojo da câmera no interior de sua cabeça, onde o bico se projeta.

c. Coloque a câmera no estojo e conecte o cabo da câmera.

d. Cole o servo no painel superior da mola.

e. Conecte os fios longos aos pinos do servo (5V, Gnd, sinal)

f. Passe o cabo da câmera e os fios do servo pela mola e pelo orifício que você fez na parte superior do corpo para que fiquem dentro do corpo oco da coruja.

Etapa 3: Etapa 3: Encha-a

Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a
Etapa 3: Encha-a

uma. Remova o tampão da parte inferior da coruja e aumente o tamanho deste orifício cortando o plástico. Continue aumentando o tamanho até que o Raspberry Pi e o alto-falante possam caber no corpo da coruja.

b. Quando o orifício for grande o suficiente para que todos os componentes caibam, puxe o cabo da câmera que você alimentou pela parte superior da coruja para fora da base e conecte-o ao Raspberry Pi.

c. Da mesma forma, puxe os fios do servo e conecte-os ao Raspberry Pi:

  • + 5V no servo => + 5V no Pi
  • Gnd servo => gnd Pi
  • Servo de sinal => pino 12 Pi

d. Conecte o alto-falante USB ao Pi.

e. Insira o cartão SD no Pi.

f. Power Pi usando fonte de alimentação portátil.

g. Insira o Pi, a fonte de alimentação e o alto-falante na coruja através do orifício na base.

Etapa 4: Etapa 4: configurar o Pi

Etapa 4: configurar o Pi
Etapa 4: configurar o Pi

TODO O CÓDIGO PODE SER ENCONTRADO EM

uma. Baixe o Raspian e envie-o para o seu cartão SD usando Balena Etcher.

b. Para acessar seu pi remotamente

  • Adicione um arquivo chamado ssh ao seu cartão SD de inicialização
  • Adicione um arquivo chamado wpa_supplicant.conf e coloque suas credenciais wi-fi em

    ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1

    rede = {ssid = "MySSID" psk = "MyPassword"}

c. Insira o cartão SD no pi e tente um acesso via ssh.

Etapa 5: Etapa 5: mover a cabeça

Etapa 5: mover a cabeça
Etapa 5: mover a cabeça

Tutorial de código para mover a cabeça (controlando um servo com um pi de framboesa)

Para controlar um servo rodando no Pi, vamos criar um script que controla os pinos GPIO aos quais o servo está conectado.

uma. Conecte o servo ao Pi:

  • + 5V no servo => + 5V no Pi
  • Gnd servo => gnd em Pi
  • Servo de sinal => pino 12 em Pi

b. Você deve primeiro configurar os pinos gpio para usar PWM no pino de sinal do servo.

c. Então, é tão simples quanto selecionar o ciclo de trabalho (explicado aqui) do pino de sinal para mover o servo de 90 graus com um ciclo de trabalho de 7,5 a 0 graus quando o ciclo de trabalho é 2,5 e 180 graus com um ciclo de trabalho de 12,5

importar RPi. GPIO como GPIO

tempo de importação GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7,5) # 90 graus time.sleep (1) p. ChangeDutyCycle (2,5) # 0 graus time.sleep (1) p. ChangeDutyCycle (12,5) # 180 graus time.sleep (1) exceto KeyboardInterrupt: p.stop () GPIO.cleanup ()

Etapa 6: Etapa 6: Fazendo o Hoot

Etapa 6: Fazendo o Hoot
Etapa 6: Fazendo o Hoot
Etapa 6: Fazendo o Hoot
Etapa 6: Fazendo o Hoot

Tutorial de código para fazer o pio da coruja (reproduzindo áudio com um pi de framboesa)

uma. Conecte o alto-falante USB.

b. Baixe um som - escolhemos uma piada assustadora.

c. Toque o som executando este comando: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Se isso não funcionar, verifique qual saída seu Pi está usando e em que volume usando o comando alsamixer - você será saudado com a tela do mixer, onde poderá alterar o volume e selecionar seu dispositivo de mídia. Para aumentar o volume do som, execute o comando como este omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Para reproduzir este som usando Python, dê uma olhada em nosso script de teste.]

subprocesso de importação

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocesso. Popen (command.split (''), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocesso. TUBO)

Etapa 7: Etapa 7: Transmita o vídeo do Pi

Etapa 7: Transmita o vídeo do Pi
Etapa 7: Transmita o vídeo do Pi
Etapa 7: Transmita o vídeo do Pi
Etapa 7: Transmita o vídeo do Pi

Tutorial de código criando um stream de câmera raspberry pi

uma. Execute python app.py e visualize em sua rede local em https://raspberrypi.local: 5000

b. Este código foi retirado e ligeiramente adaptado de Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… ele explica muito bem como é feito e seus tutoriais são ótimos - deffo dê uma olhada nele! O conceito básico é que usamos threading e geradores para melhorar a velocidade de streaming.

Etapa 8: Etapa 8: Detecção do corpo

Etapa 8: Detecção do corpo
Etapa 8: Detecção do corpo

Código para detecção de corpo (ImageNetSSD em um stream de vídeo com raspberry pi)

uma. Como estamos usando o Raspberry Pi 4, pensamos que seria melhor experimentar alguns modelos de aprendizado profundo nele, em vez do método HaarCascade básico ao qual estávamos limitados até agora.

b. Nós demos uma olhada em alguns dos modelos pré-treinados por aí, como o YOLOv3 que parece super legal. Pesos minúsculos YOLOv3, que seriam perfeitos para o Pi, mas não conseguimos fazê-lo funcionar:(c. Em vez disso, optamos pelo modelo MobileSSD que podemos executar usando o módulo openCVs DNN (deep neural net), como aprendemos com este código: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 e do herói dos tutoriais de processamento de imagem, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv /

d. No entanto, como estamos tentando transmitir esse conteúdo e rodar modelos em cada quadro, isso resulta em um vídeo fragmentado e com lag. Aprendemos novamente com Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ e usamos o módulo de multiprocessamento Python para colocar nossas imagens em filas onde eles podem ser processados sem bloquear o fluxo da câmera tão fortemente.

e. Tente executar o código você mesmo:)

Etapa 9: Etapa 9: Enviando notificações de zumbis

Etapa 9: Enviando notificações de zumbis
Etapa 9: Enviando notificações de zumbis
Etapa 9: Enviando notificações de zumbis
Etapa 9: Enviando notificações de zumbis

Código para enviar uma notificação (python para telefone)

uma. Decidimos usar o serviço de notificação

b. Você pode obter uma conta gratuita e baixar o aplicativo e realmente rapidamente configurar para fazer notificações móveis. Criamos as notificações usando um script python como este.

pedidos de importação

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "A coruja detectou um zumbi." } r = requests.post ("https://api.pushed.co/1/push", data = payload)

É super simples e você pode personalizar seu nome de notificação!

Etapa 10: que pio

O que é uma buzina!
O que é uma buzina!

Esperamos que você tenha gostado do nosso projeto Smart Security Owl! Este tem sido um fazer super divertido e me sinto muito mais seguro sabendo que minha casa está sendo guardada por nossa fiel coruja.

Se você acha que esta seria uma adição fabulosa de Halloween à sua casa inteligente, vote em nós no concurso de Halloween do Instructables e, como de costume, lembre-se de curtir, comentar e se inscrever!

Inscreva-se na nossa lista de discussão!

Recomendado: