Los sistemas de transmisión de cámaras se han vuelto populares y permiten a los usuarios grabar y/o transmitir videos en vivo a través de Internet. La cámara Raspberry Pi (RPi) se usa ampliamente por su función de transmisión, ya que captura fácilmente imágenes y videos en vivo. Además, es fácil conectar la cámara RPi con la Raspberry Pi 2/3/4 – o cualquier otro microordenador.
Para este proyecto, estamos diseñando un sistema de vigilancia doméstica en línea utilizando Raspberry Pi Camera V2 y Raspberry Pi 4B (tenga en cuenta que RPi ahora también ofrece una cámara de alta calidad para imágenes de alta resolución). Podrá ver el vídeo en vivo de la cámara, que se transmite en línea, desde cualquier navegador web.
El módulo de la cámara se controla fácilmente con códigos Python limpios. La única condición es que el RPi y el dispositivo que abre el navegador estén conectados a la misma red.
Componentes necesarios
1. Frambuesa Pi 2B/3B/4B x1
2. Cámara Raspberry Pi V2 x1
3. Cable plano para conectar la cámara Raspberry Pi x1
Conexiones de circuito
Para diseñar este proyecto, necesita conectar el módulo de la cámara Raspberry Pi con RPi. Afortunadamente, el RPi ya tiene una interfaz serie de cámara (CSI).
Primero, ubique el puerto CSI en la Raspberry Pi quitando con cuidado el clip de plástico del puerto. Inserte el cable plano del módulo de la cámara en el puerto CSI de modo que los conectores en la parte inferior del cable miren a los contactos del puerto.
Luego, vuelva a colocar el clip de plástico para asegurar el cable plano. Una vez conectado al RPi, el módulo de la cámara debería verse como en la siguiente ilustración.
El dispositivo ya está listo para funcionar. Puede proteger todo el conjunto en una carcasa de cámara Raspberry Pi, como se muestra aquí...
Configurando frambuesa pi
Antes de utilizar el sistema de cámaras de vigilancia de su hogar, existen algunos pasos adicionales:
1. Habilite el puerto CSI en Raspberry Pi.
2. Escriba código Python para transmisión en vivo desde el módulo de la cámara.
3. Busque la dirección IP del RPi para acceder a la transmisión en vivo.
4. Configure el RPi para ejecutar automáticamente el código Python al inicio.
De forma predeterminada, el módulo de la cámara está deshabilitado en Raspberry Pi. Para habilitar el puerto CSI, vaya al menú principal y abra la herramienta de configuración Raspberry Pi. También puedes abrir esta herramienta en la terminal escribiendo: sudo raspi-config .
En la herramienta de configuración, seleccione la pestaña de interfaces, asegurándose de que la cámara esté habilitada. La Raspberry Pi se reiniciará con la cámara activada.
El código Python se proporciona y explica a continuación. Puede escribir el código utilizando Thonny IDE en el sistema operativo Raspbian guardando el archivo de secuencia de comandos con un nombre adecuado.
Para verificar la dirección IP, abra la terminal bash y ejecute este comando: pi@framboesa:~ $ ifconfig
Este comando enumera varios parámetros de la interfaz de red. Uno de estos parámetros es la dirección IP de la red, lo que garantiza que el RPi esté conectado.
Para este proyecto, la dirección IP es 192.168.29.242. Como la transmisión en vivo de RPi estará disponible en el puerto 8000, se puede acceder a ella a través del enlace HTTP:
Para nosotros, esto es 192.168.29.242:8000. Sin embargo, la transmisión de video se puede capturar en cualquier dispositivo que ejecute un navegador a través del enlace HTTP anterior.
Dado que nos gustaría que el script Python se inicie cada vez que se inicie RPi, abra el archivo de perfil en la terminal Bash ejecutando este comando: sudo nano /etc/profile
Guarde el script de Python con el nombre: onlineHomeSurveillance.py . Para hacer esto, vaya al final del archivo y agregue las siguientes líneas:
sudo python /home/pi/ onlineHomeSurveillance.py &
Tenga en cuenta el signo comercial al final de la línea, que permite que el script se ejecute repetidamente sin detenerse.
Secuencia de comandos de Python...
Cómo funciona el proyecto
La cámara Raspberry Pi está conectada al puerto CSI de Raspberry Pi (RPi). Con el soporte de la biblioteca picamera, el módulo de la cámara se puede configurar para transmitir por Internet el vídeo capturado por el módulo.
El código de este proyecto es una receta de la biblioteca picamera. Utiliza el módulo http.server integrado de Pytho para utilizar RPi como servidor de transmisión de video. El vídeo se transmite en formato MJPEG.
Puedes encontrar más recetas de picamera en la documentación oficial de la biblioteca .
Cómo funciona el código
El código Python ejecuta un controlador de “prueba y excepción” con un objeto instanciado de la clase PiCamera. Captura una salida de streaming utilizando la clase StreamingOutput en una variable de "Salida".
Esto es lo que sucede a continuación:
- La clase StreamingOutput utiliza las funciones de la biblioteca IO para capturar la transmisión de video sin procesar.
- Se llama al método start_recording, que comienza a grabar el objeto de la cámara (la transmisión de video).
- El "servidor de objetos" (del módulo http.server) se crea una instancia en el servidor de socket utilizando la clase StreamingServer.
- El servidor de transmisión de video se configura utilizando la clase StreamingHandler.
- El método server_forver se llama en el objeto servidor para ejecutar el servidor de transmisión de video indefinidamente.
Eche un vistazo más de cerca a las siguientes líneas de código:
con picamera.PiCamera(resolución='640×480′, framerate=24) como cámara:
salida = StreamingOutput
#Descomenta la siguiente línea para cambiar la rotación de la cámara de tu Pi (en grados)
#rotación.de.cámara = 90
cámara.start_recording(salida,formato='mjpeg')
intentar:
dirección = (”, 8000)
servidor = StreamingServer(dirección, StreamingHandler)
servidor.serve_forever
finalmente:
cámara.detener_grabación
Los resultados