Cámara de seguridad de red DIY Pan and Tilt con Raspberry Pi

  • Mark Lucas
  • 0
  • 4025
  • 960
Anuncio

Aprenda a hacer una cámara de seguridad de giro e inclinación visible de forma remota 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 de hobby micro o mini
  • Cámara web USB
  • Cables de conexión macho a macho
  • Cables de conexión macho a hembra
  • Corbatas variadas

Construyendo la cámara de seguridad

Adjunte una bocina de servo (el pequeño plástico “formas”) a cada servo usando el tornillo provisto. La forma particular realmente no importa, 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á panorámico (de izquierda a derecha), mientras que el otro será inclinado (arriba y abajo). No importa cuál haga qué, se puede ajustar en el código.

Finalmente, conecta tu cámara web a uno de los servos. Podrías usar bridas para esto, aunque mi cámara web venía 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 todo el equipo en una caja o caja. Una simple caja de cartón funciona bastante bien. Puede 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 a la Pi. Si su cámara web no aparece en la lista, puede probar un concentrador USB con alimentación y repetir el comando. Si la cámara web aún no se reconoce, es posible que deba comprar una cámara web compatible.

Configuración de servo

Si bien los servos pueden parecer aterradores y complejos, en realidad son bastante simples de conectar. Los servos funcionan con modulación de ancho de pulso (PWM), que es una forma para que los sistemas digitales imiten señales analógicas. Las señales PWM son esencialmente una señal rápida de ENCENDIDO - APAGADO. 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á activada la señal. Una señal PWM del ciclo de trabajo del 25% estará ENCENDIDA el 25% del tiempo y APAGADA el 75% restante. La señal no está ENCENDIDA al comienzo 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 suelo. No se preocupe si no comprende completamente cómo funciona PWM, aún puede controlar los servos (Extreme Electronics es un buen lugar para aprender más).

Hay dos formas principales de utilizar PWM: hardware o software. El hardware PWM a menudo proporciona una latencia más baja (cuánto tiempo entre el servo que recibe el comando y el movimiento) que el software PWM, sin embargo, el Pi solo tiene un pin compatible con hardware PWM. 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 verificar el pinout para su Pi, varían ligeramente entre los modelos. Debes descubrir cómo están conectados tus servos. Los servos requieren tres cables para controlarlos, sin embargo, los colores varían ligeramente:

  • El rojo es positivo, conecta esto a Pi + 5v
  • Marrón o negro es negativo, conéctelo a GND en el Pi
  • La señal es naranja o blanca, conéctela a los pines 9 y 10 de Arduino

Arduino Setup

¿Nuevo en Arduino? Comience aquí Comenzar con Arduino: una guía para principiantes Comenzar 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 flexible y fácil de usar. Está destinado a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos.. .

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 del Herramientas> Tablero y Herramientas> Puerto menús

#include // 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  servoMin; --i) // Mueve los servos del máximo al mínimo servoPan.write (i); servoTilt.write (i); retraso (100); // Espera 100 ms

Todo bien, deberías ver que ambos servos se mueven 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 evita que se use el rango completo. Es posible que deba ajustarlos para su configuración.

Si no funcionan, verifique que el circuito esté conectado correctamente. Los paneles de prueba a veces también pueden variar en calidad, así que considere invertir en un multímetro para verificar.

Los servos son casi demasiado poderoso para que el Arduino lo alimente, por lo que serán alimentados por el Pi. El riel de 5v en el Pi está limitado a 750 mA proporcionado a todo el Pi, y el Pi consume aproximadamente 500 mA, dejando 250 mA para los servos. Estos micro servos consumen aproximadamente 80 mA, lo que significa que el Pi debería ser capaz de manejar dos de ellos. Si desea usar más servos o modelos más grandes y de mayor potencia, es posible que necesite usar una fuente de alimentación externa.

Ahora suba el siguiente código al Arduino. Esto escuchará los datos seriales entrantes (seriales 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.

#include // Importar la biblioteca Servo servoPan, servoTilt; // Crear servo objeto String data = ""; // Almacenar comandos entrantes (buffer) void setup () // Configurar servos en pines con capacidad PWM servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Iniciar serie a 9600 bps (velocidad) void loop () while (Serial.available ()> 0) // Si hay datos char singleChar = Serial.read (); // Leer cada caracter if (singleChar == 'P') // Mover pan servo servoPan.write (data.toInt ()); datos = ""; // Clear buffer else if (singleChar == 'T') // Move tilt servo servoTilt.write (data.toInt ()); datos = ""; // Borrar búfer else data + = singleChar; // Añadir nuevos datos

Puede probar este código abriendo el monitor en serie (arriba a la derecha> Monitor en 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 llega de uno en uno. El Arduino tiene que “almacenar” estos hasta que se haya transmitido todo el comando. La carta 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.

Pi Setup

Ahora es el momento de configurar el Pi. Primero, instale un sistema operativo Cómo instalar un sistema operativo en una Raspberry Pi Cómo instalar un sistema operativo en una Raspberry Pi Aquí le mostramos cómo instalar un sistema operativo en su Raspberry Pi y cómo clonar su configuración perfecta para una recuperación rápida ante desastres. . Conecte la cámara web y el Arduino al USB Pi.

Actualiza el Pi:

sudo apt-get update sudo apt-get upgrade

Instalar movimiento:

sudo apt-get install motion

Motion es un programa hecho para manejar la transmisión de cámaras web. 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 Cree 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 Construido con Raspberry Pi, uno de los más interesantes y permanentemente útiles es el sistema de seguridad de captura de movimiento. Abra el archivo de configuración de Motion:

sudo nano /etc/motion/motion.conf

Este archivo ofrece 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 - Permitir acceso a través de la red
  • ancho 640 - Ancho de video, ajuste para su cámara web
  • height 320 - Altura del video, ajuste para su cámara web
  • stream_port 8081 - El puerto para salida de video a
  • output_picture off: no guarde ninguna imagen

Este es un archivo bastante grande, por lo que es posible que desee utilizar CTRL + W para buscar líneas. Una vez terminado, presione CTRL + X y luego confirme para guardar y salir.

Ahora edite un archivo más:

sudo nano / etc / default / motion

Conjunto “start_motion_daemon = yes”. Esto es necesario para garantizar que Motion se ejecute.

Ahora descubra su dirección IP:

ifconfig

Este comando mostrará los detalles de conexión de red para el Pi. Mira la segunda línea, 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? He aquí por qué no necesita una) ¿Qué es una dirección IP estática? He aquí por qué no necesita una IP asignada por el enrutador las direcciones cambian ocasionalmente, mientras que las direcciones IP estáticas no. He aquí por qué realmente no necesita una), pero por ahora tome nota de este número.

Ahora comienza Motion:

inicio de movimiento de servicio de sudo

Puede detener o reiniciar Motion cambiando “comienzo” a “detener” o “reiniciar”.

Cambie a su computadora y navegue a 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 de un número es el puerto que se configuró anteriormente. ¡Todo bien, deberías ver la transmisión desde tu cámara web! 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 del lente. Gire esto hasta que la imagen sea la más nítida.

De vuelta en el Pi, crea una carpeta y navega hacia ella:

mkdir security-cam cd security-cam /

Ahora instale 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, cree un script de Python para ejecutar comandos (mueva los servos).

sudo nano servos.rpy

Observe cómo es la extensión del archivo “.rpy” en vez de “py”. Aquí está el código:

# Importar archivos necesarios importar serial de twisted.web.resource import Recurso # Configurar Arduino a la velocidad correcta intente: arduino = serial.Serial ('/ dev / ttyUSB0', 9600) excepto: arduino = serial.Serial ('/ dev / ttyUSB1 ', 9600) clase MoveServo (Recurso): isLeaf = True def render_GET (self, request): try: # Enviar valor en serie al Arduino arduino.write (request.args [' value '] [0]) return' Success 'except: return' Fallo 'resource = MoveServo ()

Ahora inicie 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 las páginas web.. “-ruta / inicio / pi / security-cam /” le dice a Twisted que inicie el servidor en el directorio especificado. Si realiza algún cambio en los scripts dentro del “cámara de seguridad” carpeta necesitará reiniciar el servidor (CTRL + X para cerrar, luego ejecute el comando nuevamente).

Ahora crea la página web:

sudo nano index.html

Aquí está el código de la página web:

   Haga uso de la cámara de seguridad de bricolaje #container / * centre el contenido * / margin: 0 auto; alinear texto: centro;      

Ahí tienes. Su propia cámara de red Pan y Tilt. Si desea exponer su cámara web a Internet, recuerde tener en cuenta los peligros 5 peligros que debe tener en cuenta al apuntar las cámaras de seguridad de su hogar 5 peligros que debe tener en cuenta al apuntar las cámaras de seguridad de su hogar Es importante considerar cuidadosamente dónde coloca sus cámaras y qué partes de su hogar que usted señala. Mantener las cosas seguras es importante, pero también lo es mantener su privacidad. - luego mire 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 me puede ayudar? [Explica MakeUseOf] ¿Lloras un poco por dentro cuando alguien te dice que hay un problema de reenvío de puertos y es por eso que tu nueva aplicación brillante no funcionará? Su Xbox no le permitirá jugar, sus descargas de torrents se rechazan ..., por lo que su enrutador sabe a dónde enviar las solicitudes entrantes. Puede agregar una fuente de alimentación externa 3 paquetes de baterías Raspberry Pi para proyectos portátiles 3 paquetes de baterías Raspberry Pi para proyectos portátiles Una batería Raspberry Pi puede convertir un Pi normal en una computadora portátil. Necesitará una de estas soluciones de batería para comenzar. y adaptador de Wi-Fi para una plataforma realmente portátil.

¿Has hecho algo genial con una cámara web y un Pi? Déjame saber en los comentarios, me encantaría ver!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.