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 (las pequeñas "formas" de plástico) 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.

Servo-Hardware

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.

instagram viewer

Pi-Pan-Tilt-Camera

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 aún no se reconoce la cámara web, es posible que deba comprar un cámara web compatible.

Configuración de servo

Si bien los servos pueden parecer atemorizantes 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 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 5v "regular", y 0% sería lo mismo que tierra. No se preocupe si no comprende 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 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. 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:

Pi-Servo-Connection

Verifique dos veces el pinout para tu Pi, varían ligeramente entre 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í Comenzando con Arduino: una guía para principiantesArduino 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. 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 del Herramientas> Tablero y Herramientas> Puerto menús

#incluir // Importar la biblioteca Servo servoPan, servoTilt; // Crea 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. Observe 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 están funcionando en absoluto, 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 es limitado a 750 mA proporcionado a todo el Pi, y el Pi consume aproximadamente 500 mA, dejando 250 mA para el 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 utilizar 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 por USB al Arduino, diciéndole dónde mover los servos.

#incluir // Importar la biblioteca Servo servoPan, servoTilt; // Crear objeto servo. Datos de cadena = ""; // 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 carácter 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 "almacenarlos" 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, instalar un sistema operativo Cómo instalar un sistema operativo en una Raspberry PiAquí 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. Lee mas . Conecte la cámara web y el Arduino al Pi USB.

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ámara 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 Construya un sistema de seguridad de captura de movimiento usando una Raspberry PiDe los muchos proyectos que puede construir con Raspberry Pi, uno de los más interesantes y útiles de forma permanente es el sistema de seguridad de captura de movimiento. Lee mas ). Abra el archivo de configuración de Motion:

sudo nano /etc/motion/motion.conf

Este archivo ofrece muchas opciones para configurar Motion. Configurar de la siguiente manera:

  • daemon on - Ejecuta el programa
  • framerate: 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

Establezca "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 necesitas unoUna dirección IP estática es aquella que nunca cambia. Las direcciones IP dinámicas cambian. Explicamos por qué no necesita una dirección IP estática. Lee mas ), 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 "iniciar" 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 anillo de enfoque pequeño 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 cámara de seguridad. 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 Python para ejecutar comandos (mover los servos).

sudo nano servos.rpy

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

# Importar archivos necesarios. Importar serial. from twisted.web.resource import Resource # Setup Arduino a la velocidad correcta. intente: arduino = serial. Serie ('/ dev / ttyUSB0', 9600) excepto: arduino = serial. Serial ('/ dev / ttyUSB1', 9600) clase MoveServo (Recurso): isLeaf = True def render_GET (self, request): try: # Send value over serial al Arduino arduino.write (request.args ['value'] [0]) return 'Success' excepto: return 'Failure' 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. "–Path / 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 carpeta "security-cam", deberá 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:

Hacer uso de la cámara de seguridad de bricolaje


Cambie "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 a la Pi desde su computadora, sin necesidad de especificar el puerto. Debería poder desplazarse hacia la izquierda y hacia la derecha y ver la transmisión de video:

Pi-Pan-Tilt-Camera-Web-View

Ahí tienes. Su propia cámara de red Pan y Tilt. Si desea exponer su cámara web a Internet, recuerde considerar los peligros 5 peligros a tener en cuenta al señalar las cámaras de seguridad de su hogarEs importante considerar cuidadosamente dónde coloca sus cámaras y a qué partes de su hogar las apunta. Mantener las cosas seguras es importante, pero también lo es mantener su privacidad. Lee mas - luego mira en reenvío de puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf explica]¿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á? Tu Xbox no te permitirá jugar, tus descargas de torrents se rechazan ... Lee mas , para que su enrutador sepa dónde enviar las solicitudes entrantes. Podrías agregar una fuente de alimentación externa 3 paquetes de baterías Raspberry Pi para proyectos portátilesUna batería Raspberry Pi puede convertir una Pi normal en una computadora portátil. Necesitará una de estas soluciones de batería para comenzar. Lee mas 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!

Joe se graduó en Ciencias de la Computación de la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se lo puede encontrar tomando fotos o produciendo videos.