DIY Pan and Tilt Network Security Cam con Raspberry Pi
Aprende cómo hacer una cámara de seguridad con movimiento panorámico e inclinación con una Raspberry Pi. Este proyecto se puede completar en una mañana con solo las partes más simples. Aquí está el resultado final:
Que necesitas
- Raspberry Pi 2 o 3 con tarjeta Micro SD
- Arduino UNO o similar
- 2 x servos micro o mini hobby
- Webcam USB
- Cables de conexión macho a macho
- Cables de conexión macho a hembra
- Tirantes surtidos
Construyendo la cámara de seguridad
Adjuntar un cuerno servo (el pequeño plástico “formas”) a cada servo utilizando el tornillo provisto. La forma particular no importa realmente, aunque cuanto más grande mejor. No apriete demasiado el tornillo.
Ahora use bridas para unir un servo al otro en ángulo recto. Uno de ellos será pan (de izquierda a derecha), mientras que el otro será inclinado (arriba y abajo). No importa cuál hace qué, puede ajustarse en el código.
Finalmente, conecta tu webcam a uno de los servos. Podrías usar tirantes para esto, aunque mi cámara web vino con un clip atornillado en la parte inferior. Lo quité y usé el tornillo para sujetarlo a la bocina. Para mayor estabilidad, es posible que desee montar toda la plataforma en una caja o caja. Una simple caja de cartón hace el truco bastante bien. Podría cortar un orificio cuadrado limpio y montar un servo a ras de la superficie, sin embargo, una brida será suficiente.
Una palabra sobre las cámaras web
No todas las cámaras web USB se crean por igual. Conecte su cámara web al puerto USB de su Pi y ejecute este comando:
lsusb
Este comando muestra información sobre todos los dispositivos USB conectados al Pi. Si su cámara web no está en la lista, puede probar un concentrador USB con alimentación y repetir el comando. Si aún no se reconoce la cámara web, es posible que tenga que comprar una cámara web compatible..
Configuración del Servo
Si bien los servos pueden parecer aterradores y complejos, en realidad son muy simples de conectar. Los servos funcionan con modulación de ancho de pulso (PWM), que es una forma en que los sistemas digitales imitan señales analógicas. Las señales PWM son esencialmente una rápida señal de ON - OFF. Una señal que está ENCENDIDA o ALTA se describe usando el ciclo de trabajo. El ciclo de trabajo se expresa como un porcentaje y describe durante cuánto tiempo está ENCENDIDA la señal. Una señal PWM de 25% de ciclo de trabajo estará ENCENDIDA durante el 25% del tiempo, y APAGADA para el 75% restante. La señal no está ENCENDIDA al inicio y luego APAGADA para siempre, se pulsa regularmente durante un período de tiempo muy corto.
Los servos escuchan estos pulsos y actúan en consecuencia. Usar un ciclo de trabajo del 100% sería lo mismo que “regular” 5v, y 0% sería lo mismo que tierra. No se preocupe si no entiende completamente cómo funciona PWM, aún puede controlar los servos (Extreme Electronics es un buen lugar para obtener más información).
Hay dos formas principales de usar PWM: hardware o software. El PWM de hardware a menudo proporciona una latencia menor (cuánto tiempo transcurre entre el servo que recibe el comando y el movimiento) que el PWM de software, sin embargo, el Pi solo tiene un pin capaz de PWM de hardware. Los circuitos externos están disponibles para proporcionar múltiples canales de hardware PWM, sin embargo, un Arduino simple también puede manejar la tarea, ya que tienen múltiples pines PWM de hardware.
Aquí está el circuito:
Vuelva a comprobar la configuración de pines para su Pi, varían ligeramente entre los modelos. Necesitas averiguar cómo están cableados tus servos. Los servos requieren tres cables para controlarlos, sin embargo, los colores varían ligeramente:
- Rojo es positivo, conecta esto a Pi + 5v
- Marrón o negro es negativo, conecte esto a GND en la Pi
- Naranja o blanco es señal, conecte esto a los pines 9 y 10 de Arduino.
Arduino Setup
¿Nuevo en Arduino? Comience aquí Comenzando con Arduino: una guía para principiantes Comenzando con Arduino: una guía para principiantes Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexibles y fáciles de usar. Está dirigido a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lee mas .
Una vez que los servos estén conectados, abra el IDE de Arduino en su computadora y cargue este código de prueba. No olvide seleccionar la placa y el puerto correctos de la Herramientas> Tablero y Herramientas> Puerto menús
#incluir // Importar la biblioteca Servo ServoPan, servoTilt; // Crear objetos servo int servoMin = 20, servoMax = 160; // Definir límites de servos void setup () // Configurar servos en pines con capacidad PWM servoPan.attach (9); servoTilt.attach (10); void loop () for (int i = servoMin; i < servoMax; ++i) 1 // Move servos from minimum to maximum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms for(int i = servoMax; i > servoMin; --i) // Mueve los servos de servoPan.write (i) máximo a mínimo; servoTilt.write (i); retraso (100); // espera 100ms
Todo bien, deberías ver a ambos servos moverse lentamente de un lado a otro. Date cuenta cómo “servoMin” y servoMax” Se definen como 20 y 160 grados (en lugar de 0 y 180). Esto se debe en parte a que estos servos baratos no pueden mover con precisión los 180 grados completos, y también debido al tamaño físico de la cámara web impide que se utilice el rango completo. Es posible que necesite ajustar estos para su configuración.
Si no están funcionando, vuelva a verificar que el circuito esté correctamente conectado. Las placas de pruebas a veces también pueden variar en calidad, así que considere invertir en un multímetro para verificar.
Los servos son casi demasiado poderosos para que los Arduino puedan usarlos, por lo que serán alimentados por el Pi. El riel de 5 V en el Pi está limitado a 750 mA provisto a todo el Pi, y el Pi consume aproximadamente 500 mA, dejando 250 mA para los servos. Estos microservos consumen aproximadamente 80 mA, lo que significa que el Pi debería poder manejar dos de ellos. Si desea utilizar más servos o modelos más grandes y con mayor potencia, es posible que deba usar una fuente de alimentación externa.
Ahora sube el siguiente código al Arduino. Esto escuchará los datos serie entrantes (serie como en Universal De serie Bus, o USB). El Pi enviará estos datos a través de USB al Arduino, diciéndole dónde mover los servos.
#incluir // Importar la biblioteca Servo ServoPan, servoTilt; // Crear un objeto servo String data = ""; // Almacenar comandos entrantes (búfer) void setup () // Configurar servos en los pines con capacidad PWM servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Iniciar la serie a 9600 bps (velocidad) void loop () while (Serial.available ()> 0) // Si hay datos char singleChar = Serial.read (); // Lea cada carácter si (singleChar == 'P') // Mueva pan servo servoPan.write (data.toInt ()); datos = ""; // Borrar el búfer else if (singleChar == 'T') // Mover el servo de inclinación servoTilt.write (data.toInt ()); datos = ""; // Borrar el búfer else data + = singleChar; // Añadir nuevos datos
Puede probar este código abriendo el monitor serie (arriba a la derecha> Monitor de serie) y enviando algunos datos de prueba:
- 90p
- 0P
- 20T
- 100T
Observe el formato de los comandos: un valor y luego una letra. El valor es la posición del servo, y la letra (en mayúsculas) especifica el servo de giro o inclinación. A medida que estos datos se transmiten desde el Pi en serie, cada personaje pasa por uno a la vez. El Arduino tiene que “almacenar” estos hasta que todo el comando ha sido transmitido. La letra final no solo especifica el servo, también le permite al Arduino saber que no hay más datos en este comando.
Finalmente, desconecte su Arduino de la computadora, y conéctelo a la Raspberry Pi a través de la conexión de puerto USB habitual.
Configuración de pi
Ahora es el momento de configurar el Pi. Primero, instale un sistema operativo Cómo instalar un sistema operativo en su Raspberry Pi Cómo instalar un sistema operativo en su Raspberry Pi A continuación le indicamos cómo instalar y ejecutar un nuevo sistema operativo en su Pi, y cómo clonar su configuración perfecta para un desastre rápido recuperación. Lee mas . Conecta la webcam y el Arduino al Pi USB..
Actualizar el Pi:
sudo apt-get update sudo apt-get upgrade
Instalar movimiento:
sudo apt-get install motion
Motion es un programa hecho para manejar streaming de webcam. Maneja todo el trabajo pesado, e incluso puede realizar grabaciones y detección de movimiento (intente construir un sistema de seguridad de captura de movimiento Construya un sistema de seguridad de captura de movimiento usando una Raspberry Pi Construya un sistema de seguridad de captura de movimiento usando una Raspberry Pi De los muchos proyectos que puede construir con la Raspberry Pi, uno de los más interesantes y útiles de forma permanente es el sistema de seguridad de captura de movimiento. Leer más). Abra el archivo de configuración de Motion:
sudo nano /etc/motion/motion.conf
Este archivo proporciona muchas opciones para configurar Motion. Configuración de la siguiente manera:
- daemon on - Ejecuta el programa
- velocidad de cuadros: 100 - Cuántos cuadros o imágenes / segundo transmitir
- stream_localhost off: permite el acceso a través de la red
- ancho 640 - ancho de video, ajuste para su webcam
- Altura 320 - Altura de video, ajuste para su webcam
- stream_port 8081 - El puerto para enviar video a
- output_picture off - No guardar ninguna imagen
Este es un archivo bastante grande, por lo que es posible que desee utilizar CTRL + W para buscar lineas. Una vez terminado, pulse CTRL + X y luego confirmar para guardar y salir.
Ahora edita un archivo más:
sudo nano / etc / default / motion
Conjunto “start_motion_daemon = yes”. Esto es necesario para asegurar que se ejecute Motion.
Ahora averigüe su dirección IP:
ifconfig
Este comando mostrará los detalles de la conexión de red para el Pi. Mira la segunda linea, inet addr. Es posible que desee establecer una dirección IP estática (¿qué es una IP estática? ¿Qué es una dirección IP estática, cómo obtengo una y sus ventajas / desventajas? ¿Qué es una dirección IP estática, cómo obtengo una y sus ventajas / desventajas?) En las redes domésticas, las direcciones IP no suelen ser fijas, pero sí están dentro de rangos específicos. Una dirección IP estática no cambia. ¿Cuáles son las ventajas de esto y por qué querría una? Leer más), pero por ahora toma nota de este numero.
Ahora comienza el movimiento:
servicio de sudo inicio de movimiento
Puede detener o reiniciar Motion cambiando “comienzo” a “detener” o “reiniciar”.
Cambie a su computadora y navegue a la Pi desde un navegador web:
http: //xxx.xxx.x.xx: 8081
Donde xxx.xxx.x.xx es la dirección IP de Pi. Los dos puntos seguidos por un número es el puerto que se configuró anteriormente. Todo bien, deberías ver la transmisión desde tu webcam! Intenta moverte y ver cómo se ven las cosas. Es posible que deba ajustar la configuración de brillo y contraste en el archivo de configuración. Es posible que deba enfocar la cámara web: algunos modelos tienen un pequeño anillo de enfoque alrededor de la lente. Gira esto hasta que la imagen sea la más nítida..
De vuelta en la Pi, crea una carpeta y navega en ella:
mkdir security-cam cd security-cam /
Ahora instala Twisted:
sudo apt-get install python-twisted
Twisted es un servidor web escrito en Python, que escuchará los comandos y luego actuará en consecuencia.
Una vez instalado, crea un script de Python para ejecutar comandos (mover los servos).
sudo nano servos.rpy
Observe cómo es la extensión de archivo “.rpy” en lugar de “py”. Aquí está el código:
# Importar archivos necesarios importar serial desde twisted.web.resource importar recurso # Configurar Arduino a la velocidad correcta probar: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) excepto: arduino = serial.Serial ('/ dev / ttyUSB1 ', 9600) clase MoveServo (Resource): isLeaf = True def render_GET (self, request): try: # Enviar valor a través de serial al Arduino arduino.write (request.args [' value '] [0]) return' Success 'except: return' Failure 'resource = MoveServo ()
Ahora inicia el servidor web:
sudo twistd -n web -p 80 --path / home / pi / security-cam /
Vamos a descomponerlo - “-p 80” Especifica el puerto (80). Este es el puerto predeterminado para páginas web.. “-ruta / home / pi / security-cam /” le dice a Twisted que inicie el servidor en el directorio especificado. Si realiza algún cambio en los scripts dentro de la “cámara de seguridad” carpeta que necesitará para reiniciar el servidor (CTRL + X para cerrar, luego ejecute el comando de nuevo).
Ahora crea la página web:
sudo nano index.html
Aquí está el código de la página web:
Hacer uso de la cámara de seguridad de bricolaje
Cambio “PI_IP_ADDRESS” (usado dos veces) a la dirección IP real de su Pi (raspberrypi.local También debería funcionar si está ejecutando el último Raspian). Reinicie el servidor web y luego navegue al Pi desde su computadora, sin necesidad de especificar el puerto. Debería poder desplazarse hacia la izquierda y hacia la derecha y ver el flujo de video:
Ahí tienes. Tu propia cámara de red Pan y Tilt. Si desea exponer su cámara web a Internet, recuerde considerar los peligros 5 peligros a considerar cuando apunta su cámara de seguridad en el hogar 5 peligros a considerar cuando apunta su cámara de seguridad en el hogar Es importante considerar cuidadosamente dónde ubica sus cámaras y qué Las partes de tu casa a las que apuntas. Mantener las cosas seguras es importante, pero también lo es mantener su privacidad. Lea más: luego examine el reenvío de puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Llora un poco por dentro cuando alguien le dice que hay un problema de reenvío de puertos y es por eso que su nueva aplicación no funcionará? Tu Xbox no te permitirá jugar juegos, tus descargas de torrent se rechazan ... Lee más, para que tu enrutador sepa dónde enviar las solicitudes entrantes. ¿Podría agregar una fuente de alimentación externa Pi to Go? 3 formas de alimentar una Raspberry Pi para proyectos portátiles Pi to Go? 3 formas de alimentar una Raspberry Pi para proyectos portátiles ¿Quiere sacar su Raspberry Pi de la casa e involucrarse en algunos proyectos móviles? Necesitarás una batería de algún tipo, pero hay varias opciones disponibles. Leer más y adaptador de Wi-Fi para una plataforma realmente portátil.
¿Has hecho algo genial con una webcam y un Pi? Déjame saber en los comentarios, me encantaría ver.!
Explorar más sobre: Seguridad para el hogar, Raspberry Pi, Webcam.