Tabla de contenido:

Zombie Detecting Smart Security Owl (aprendizaje profundo): 10 pasos (con imágenes)
Zombie Detecting Smart Security Owl (aprendizaje profundo): 10 pasos (con imágenes)

Video: Zombie Detecting Smart Security Owl (aprendizaje profundo): 10 pasos (con imágenes)

Video: Zombie Detecting Smart Security Owl (aprendizaje profundo): 10 pasos (con imágenes)
Video: Como conectar grabador DVR sistemas de cámaras CCTV mediante cable 2024, Noviembre
Anonim

Hola a todos, ¡bienvenidos a T3chFlicks! En este tutorial de Halloween, le mostraremos cómo le damos un giro súper espeluznante a un clásico doméstico mundano: la cámara de seguridad.

¡¿Cómo?! Hemos creado un búho de visión nocturna que utiliza el procesamiento de imágenes para rastrear a las personas. ¡Ah, y ulula, como si fuera real!

Estamos muy entusiasmados con este proyecto y hemos estado esperando hacerlo desde que se lanzó la nueva Raspberry Pi 4. Tiene 4 GB de RAM, lo que abre la puerta a un montón de posibilidades realmente interesantes, incluido el procesamiento de imágenes con modelos de aprendizaje profundo en tiempo real.

Si quieres estar atento a los zombis que se acercan en Halloween, o simplemente revisar tu jardín el resto del año, este es el indicado para ti. ¡La seguridad no tiene que ser aburrida para ser efectiva!

Suministros

Para esta compilación, necesitará:

  • Raspberry Pi 4 (4 GB de RAM) Amazon
  • Cámara de visión nocturna Amazon
  • Micro Servo Amazonas
  • Búho falso Amazon
  • Pegamento Amazon
  • Pintar Amazon
  • Tornillos Amazon
  • Altavoz USB Amazon
  • Fuente de alimentación portátil grande (5v +) Amazon
  • Impresora 3D Amazon

Paso 1: Paso 1: Decapitar

Paso 1: decapitar
Paso 1: decapitar
Paso 1: decapitar
Paso 1: decapitar
Paso 1: decapitar
Paso 1: decapitar

una. Quítele la cabeza al búho (a veces solo tiene que ser brutal) tirando con fuerza de su cabeza donde se adhiere al resorte.

B. La cabeza del búho se conecta al cuerpo mediante un cilindro que se asienta sobre un gran resorte. Retire este cilindro sacando el tornillo.

C. El cilindro que acaba de quitar está hecho de dos partes, una copa de plástico y un cojinete que se encuentra en su interior. Retire el cojinete del cilindro con un destornillador (o herramienta similar).

D. Usando el tornillo que conectó el cilindro al resorte, conecte el servo al cilindro.

mi. Retire el resorte desatornillando los tres tornillos que lo fijan al cuerpo.

F. Haz un agujero en la parte superior del cuerpo del búho que sea lo suficientemente grande para que quepan algunos cables y el cable de la cámara. Usamos una combinación poco elegante de taladro y destornillador para hacer esto.

Paso 2: Paso 2: agregar Smart

Paso 2: agregue Smart
Paso 2: agregue Smart
Paso 2: agregue Smart
Paso 2: agregue Smart
Paso 2: agregue Smart
Paso 2: agregue Smart

una. Imprima en 3D la carcasa de la cámara y píntela para que coincida con el búho; utilizamos algunas pinturas acrílicas baratas. Pintar no es un paso vital, ¡pero mejora drásticamente el aspecto general!

B. Con la cabeza del búho boca abajo, atornille la parte superior de la carcasa de la cámara en el interior de su cabeza, donde sobresale el pico.

C. Coloque la cámara en el estuche y conecte el cable de la cámara.

D. Pega el servo al panel superior del resorte.

mi. Conecte cables largos a los pines del servo (5V, Gnd, señal)

F. Pasa el cable de la cámara y los cables del servo a través del resorte y por el orificio que hiciste en la parte superior del cuerpo para que queden dentro del cuerpo hueco de la lechuza.

Paso 3: Paso 3: Llénela

Paso 3: llénala
Paso 3: llénala
Paso 3: llénala
Paso 3: llénala
Paso 3: llénala
Paso 3: llénala
Paso 3: llénala
Paso 3: llénala

una. Retire el tapón de la parte inferior del búho y aumente el tamaño de este agujero cortando el plástico. Continúe aumentando el tamaño hasta que la Raspberry Pi y el altavoz quepan en el cuerpo del búho.

B. Una vez que el orificio sea lo suficientemente grande para que todos los componentes quepan en el interior, extraiga de la base el cable de la cámara que alimentó a través de la parte superior del búho y conéctelo a la Raspberry Pi.

C. Del mismo modo, pase los cables del servo y conéctelos a la Raspberry Pi:

  • + 5v en servo => + 5V en Pi
  • Gnd servo => gnd Pi
  • Servo de señal => pin 12 Pi

D. Conecte el altavoz USB al Pi.

mi. Inserta la tarjeta SD en el Pi.

F. Power Pi mediante fuente de alimentación portátil.

gramo. Inserte el Pi, la fuente de alimentación y el altavoz en el búho a través del orificio de la base.

Paso 4: Paso 4: Configura la Pi

Paso 4: configura la Pi
Paso 4: configura la Pi

TODO EL CÓDIGO SE PUEDE ENCONTRAR EN

una. Descarga Raspian y cárgalo en tu tarjeta SD usando Balena Etcher.

B. Para acceder a su pi de forma remota

  • Agregue un archivo llamado ssh a su tarjeta SD de arranque
  • Agregue un archivo llamado wpa_supplicant.conf y ponga sus credenciales de wifi en

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

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

C. Inserte la tarjeta SD en el pi e intente acceder a través de ssh.

Paso 5: Paso 5: Mover la cabeza

Paso 5: Mover la cabeza
Paso 5: Mover la cabeza

Tutorial de código para mover la cabeza (controlando un servo con una raspberry pi)

Para controlar un servo que se ejecuta en el Pi, vamos a crear un script que controle los pines GPIO a los que está conectado el servo.

una. Conecte el servo al Pi:

  • + 5v en servo => + 5V en Pi
  • Gnd servo => gnd en Pi
  • Servo de señal => pin 12 en Pi

B. Primero debe configurar los pines gpio para usar PWM en el pin de señal del servo.

C. Entonces, es tan simple como seleccionar el ciclo de trabajo (explicado aquí) del pin de señal para mover el servo de 90 grados con un ciclo de trabajo de 7.5 a 0 grados cuando el ciclo de trabajo es 2.5 y a 180 grados con un ciclo de trabajo de 12,5

importar RPi. GPIO como GPIO

tiempo de importación 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 grados time.sleep (1) p. ChangeDutyCycle (2.5) # 0 grados time.sleep (1) p. ChangeDutyCycle (12.5) # 180 grados time.sleep (1) excepto KeyboardInterrupt: p.stop () GPIO.cleanup ()

Paso 6: Paso 6: Haciéndolo ulular

Paso 6: Haciéndolo ulular
Paso 6: Haciéndolo ulular
Paso 6: Haciéndolo ulular
Paso 6: Haciéndolo ulular

Tutorial de código para hacer el búho ululante (reproducir audio con una raspberry pi)

una. Conecte el altavoz USB.

B. Descarga un sonido: elegimos un pitido espeluznante.

C. Reproduzca el sonido ejecutando este comando: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[D. Si esto no funciona, verifique qué salida está usando su Pi y a qué volumen usando el comando alsamixer; será recibido con la pantalla del mezclador donde puede cambiar el volumen y seleccionar su dispositivo multimedia. Para aumentar el volumen de su sonido, ejecute el comando como este omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Para reproducir este sonido usando Python, eche un vistazo a nuestro script de prueba.]

subproceso de importación

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

Paso 7: Paso 7: Transmita el video desde el Pi

Paso 7: transmita el video desde el Pi
Paso 7: transmita el video desde el Pi
Paso 7: transmita el video desde el Pi
Paso 7: transmita el video desde el Pi

Tutorial de código creando una transmisión de cámara raspberry pi

una. Ejecute python app.py y vea en su red local en https://raspberrypi.local: 5000

B. Este código fue tomado y adaptado ligeramente de Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… él explica muy bien cómo se hace y sus tutoriales son geniales. ¡Deffo échale un vistazo! El concepto básico es que usamos subprocesos y generadores para mejorar la velocidad de transmisión.

Paso 8: Paso 8: Detección de cuerpos

Paso 8: Detección de cuerpos
Paso 8: Detección de cuerpos

Código para la detección del cuerpo (ImageNetSSD en una transmisión de video con raspberry pi)

una. Dado que usamos Raspberry Pi 4, pensamos que era mejor probar algunos modelos de aprendizaje profundo en él en lugar del método básico de HaarCascade al que nos hemos limitado hasta ahora.

B. Echamos un vistazo a algunos de los modelos previamente entrenados, como YOLOv3, que se ve genial. Pequeños pesos YOLOv3, que habrían sido perfectos para el Pi, pero no pudimos hacerlo funcionar:(C. En su lugar, optamos por el modelo MobileSSD que podemos ejecutar usando el módulo DNN (red neuronal profunda) de openCV, como aprendimos de este código: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 y del héroe de los tutoriales de procesamiento de imágenes, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv /

D. Sin embargo, como estamos tratando de transmitir este contenido y ejecutar modelos en cada cuadro, esto da como resultado un video fragmentado y retrasado. Aprendimos nuevamente de Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ y usamos el módulo de multiprocesamiento de Python para poner nuestras imágenes en colas donde se pueden procesar sin bloquear tanto la transmisión de la cámara.

mi. Intente ejecutar el código usted mismo:)

Paso 9: Paso 9: Envío de notificaciones de zombies

Paso 9: Envío de notificaciones de zombies
Paso 9: Envío de notificaciones de zombies
Paso 9: Envío de notificaciones de zombies
Paso 9: Envío de notificaciones de zombies

Código para enviar una notificación (python al teléfono)

una. Decidimos utilizar el servicio de notificación

B. Puede obtener una cuenta gratuita y descargar la aplicación y configurar rápidamente las notificaciones móviles. Creamos las notificaciones usando un script de Python como este.

solicitudes de importación

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "El búho ha detectado un zombi". } r = request.post ("https://api.pushed.co/1/push", data = payload)

¡Es súper simple y puedes personalizar el nombre de tu notificación!

Paso 10: ¡Qué puntazo

¡Qué pitido!
¡Qué pitido!

¡Esperamos que haya disfrutado de nuestro proyecto Smart Security Owl! Esta ha sido una experiencia súper divertida y me siento mucho más seguro sabiendo que mi casa está siendo custodiada por nuestro fiel búho.

Si cree que esta sería una adición fabulosa de Halloween a su hogar inteligente, vote por nosotros en el concurso de Halloween de Instructables y, como de costumbre, ¡recuerde dar me gusta, comentar y suscribirse!

¡Suscríbase a nuestra lista de correo!

Recomendado: