Cámara de seguridad de red cacerola y la inclinación de bricolaje con frambuesa pi

Aprende a hacer un molde de forma remota visible e inclinación de la cámara de seguridad con una Raspberry Pi. Este proyecto puede ser completado en una mañana con sólo el más simple de las piezas. Aquí está el resultado final:

Que necesitas

  • Frambuesa Pi 2 ó 3 con la tarjeta micro SD
  • UNO Arduino o similares
  • 2 x micro o mini-servos manía
  • cámara web USB
  • Macho a cables de conexión macho
  • Macho a cables de conexión hembra
  • Surtido de bandas de sujeción

La construcción de la cámara de seguridad

Adjuntar un cuerno servo (los pequeños de plástico “formas”) a cada servo utilizando el tornillo suministrado. La forma particular en realidad no importa, aunque cuanto más grandes mejor. No apriete demasiado el tornillo.

Ahora utilice bridas para conectar un servo a la otra en un ángulo recto. Uno de ellos será PAN (de izquierda a derecha), mientras que el otro será de inclinación (arriba y abajo). No importa lo que uno hace, se puede ajustar en el código.

Servo-Hardware

Por último, conecte la cámara web para uno de los servos. Se podría usar zip-dades para esto, aunque mi cámara viene con un clip atornillado a la parte inferior - Quité esto y utilicé el tornillo para sujetarlo a la bocina. Para la estabilidad, es posible que desee montar todo el equipo de perforación a un envase o caja. Una simple caja de cartón hace el truco muy bien. Se podría hacer un agujero cuadrado perfecto y montar un servo al ras de la superficie, sin embargo, una brida de plástico será suficiente.

Pi-Pan-Tilt-cámara

Una palabra acerca de Webcams

No todas las cámaras web USB son iguales. Conecta tu cámara web al puerto USB del Pi y ejecutar este comando:

lsusb

Este comando muestra información sobre todos los dispositivos USB conectados al Pi. Si su cámara no está aquí, es posible que desee probar un concentrador USB con alimentación y repetir el comando. Si todavía no se reconoce la cámara web puede que tenga que comprar una cámara web compatible.

Configuración del servo

Mientras que los servos pueden dar miedo y complejos, que son realmente muy fácil de conectar. Servos operan en Pulse Width Modulation (PWM), que es una manera para que los sistemas digitales de imitar las señales analógicas. señales PWM son esencialmente una rápida ON - OFF de la señal. Una señal que está en ON o ALTO se describe utilizando el ciclo de trabajo. El ciclo de trabajo se expresa como un porcentaje, y describe el tiempo que la señal está en ON para. Una señal PWM de ciclo de trabajo 25% estará en ON para el 25% del tiempo, y OFF para el 75% restante. La señal no está activado en el inicio y luego apagado para siempre, que es impulsado con regularidad durante un período muy corto de tiempo.

Servos escuchan para estos impulsos y actuar en consecuencia. El uso de un ciclo de trabajo del 100% sería el mismo que 5v “regular”, y 0% sería el mismo que el suelo. No se preocupe si no entiende completamente cómo funciona el PWM, todavía se puede controlar servos (Extreme Electronics es un buen sitio para más información).

Hay dos formas principales de usar PWM - hardware o software. PWM de hardware a menudo ofrece una menor latencia (el tiempo entre el servo de recibir la orden y en movimiento) de PWM de software, sin embargo, el Pi sólo tiene un pin PWM de hardware capaz. Los circuitos externos están disponibles para proporcionar múltiples canales de PWM de hardware, sin embargo, un simple Arduino también puede manejar la tarea, ya que tienen múltiples pines PWM de hardware.

Aquí está el circuito:

Pi-Servo-Conexión

Compruebe el pinout para su Pi, que varían ligeramente entre los modelos. Es necesario averiguar cómo se conectan los servos. Servos requieren tres cables de controlarlos, sin embargo, los colores varían ligeramente:

  • El rojo es positivo, conectarlo a Pi + 5v
  • Marrón o negro es negativo, conectar esta a GND del Pi
  • Naranja o blanco es la señal, se conectan a los pines de Arduino este 9 y 10

Configuración de Arduino

Nuevo en Arduino? Comience aquí.Primeros pasos con Arduino: una guía para principiantesPrimeros pasos con Arduino: una guía para principiantesArduino es una plataforma electrónica de prototipos de código abierto basado en flexible y fácil de usar hardware y software. Está pensado para artistas, diseñadores, aficionados y cualquier persona interesada en la creación de objetos interactivos o ambientes.Lee mas

Una vez que los servos están conectados, abrir el IDE de Arduino en su ordenador y cargar el código de prueba. No olvide seleccionar la junta correcta y el puerto de la Herramientas gt; Tablero y Herramientas gt; Puerto menús

#incluir  // Importar la bibliotecaservo servoPan, servoTilt- // crear objetos servoint servoMin = 20, ServoMax = 160- // Definir límites de servosvacío preparar() {// servos de configuración en la PWM pasadores capacesservoPan.adjuntar(9)-servoTilt.adjuntar(10)-}vacío lazo() {para(int yo = servoMin- yo lt; ServoMax- ++yo) { 1// Mover servos del mínimo al máximo servoPan.escribir(yo)-servoTilt.escribir(yo)-retrasar(100)- // Esperar 100 ms }para(int yo = ServoMax- yo gt; servoMin- --yo) {// Mover servos de máximo a mínimoservoPan.escribir(yo)-servoTilt.escribir(yo)-retrasar(100)- // Esperar 100 ms}}

Si todo va bien debería ver ambos servos se mueven lentamente hacia atrás y adelante. Observe cómo “servoMin” y ServoMax”se definen como 20 y 160 grados (en lugar de 0 y 180). Esto es parcialmente debido a que estos servos baratos son incapaces de moverse con precisión los 180 grados completos, y también debido al tamaño físico de la cámara web impide la gama completa que se utiliza. Es posible que tenga que ajustar estos para su instalación.

Si ellos no están funcionando en absoluto a comprobar el circuito está conectado correctamente. Breadboards pueden variar a veces en calidad, así, por lo que pensar en invertir en un multímetro para verificar.

Los servos son casi demasiado poderoso para el Arduino al poder, por lo que serán impulsados ​​por el Pi. El carril de 5v en el Pi se limita a 750 mA proporcionada a todo el Pi y Pi consume aproximadamente 500 mA, 250 mA para salir de los servos. Estos micro servos extraen aproximadamente 80 mA, que significa que el Pi debe ser capaz de manejar dos de ellos. Si desea utilizar más servos o grandes modelos de mayor potencia, puede que tenga que utilizar una fuente de alimentación externa.

Ahora descargue el código siguiente para el Arduino. Esto va a escuchar a los datos en serie entrantes (en serie como en universal De serie Bus, o USB). La IP enviar estos datos a través de USB a la placa Arduino, diciéndole dónde mover los servos.

#incluir  // Importar la bibliotecaservo servoPan, servoTilt- // Crear un objeto servodatos de cadena = ""- // almacena los comandos de entrada (tampón)vacío preparar() {// servos de configuración en la PWM pasadores capacesservoPan.adjuntar(9)-servoTilt.adjuntar(10)-De serie.empezar(9600)- // Iniciar serie a 9600 bps (velocidad)}vacío lazo() {mientras (De serie.disponible() gt; 0){// Si hay datoscarbonizarse singleChar = De serie.leer()- // Leer cada personajeSi (singleChar == `PAG`) {// Mover servo panservoPan.escribir(datos.Toint())-datos = ""- // Borrar búfer}más Si (singleChar == `T`) {// movimiento de inclinación del servoservoTilt.escribir(datos.Toint())-datos = ""- // Borrar búfer}más {datos += singleChar- // Agregar nuevos datos}}}

Puede probar este código al abrir el monitor de puerto serie (parte superior derecha gt; serial monitor) Y el envío de algunos datos de prueba:

  • 90P
  • 0P
  • 20T
  • 100T

Note el formato de los comandos - un valor y luego una carta. El valor es la posición del servo, y la letra (en mayúsculas) especifica el giro o inclinación servo. Como estos datos se transmite desde el Pi en serie, cada personaje viene a través de uno a la vez. El Arduino tiene que “tienda” éstas hasta que todo el comando ha sido transmitida. La última carta no sólo especifica el servo, sino que también permite al Arduino saben que no hay más datos en este comando.

Por último, desconecte el Arduino desde el ordenador, y conectarlo a la Frambuesa Pi a través de la conexión del puerto USB habitual.

Configuración del Pi

Ahora es el momento de configurar el Pi. Primero, instalar un sistema operativo. Conecte la cámara web y el Arduino al USB Pi.Cómo instalar un sistema operativo para su Frambuesa PiCómo instalar un sistema operativo para su Frambuesa PiAquí es cómo conseguir un nuevo sistema operativo instalado y funcionando en su pi - y cómo clonar su configuración perfecta para una recuperación rápida.Lee mas

Actualizar el Pi:

sudo apt-get actualizarsudo apt-get mejorar

Instalar el movimiento:

sudo apt-get instalar movimiento

El movimiento es un programa hecho para manejar streaming webcam. Se ocupa de todo el trabajo pesado, e incluso puede llevar a cabo la grabación y detección de movimiento (prueba la construcción de un sistema de seguridad de captura de movimiento). Abra el archivo de configuración de movimiento:Construir un sistema de seguridad de la captura de movimiento Utilizando un Frambuesa PiConstruir un sistema de seguridad de la captura de movimiento Utilizando un Frambuesa PiDe los muchos proyectos que se pueden construir con la Frambuesa Pi, uno de los más interesantes y permanentemente útil es el sistema de seguridad de captura de movimiento.Lee mas

sudo nano /etc/motion/motion.conf

Este archivo proporciona una gran cantidad de opciones para configurar movimiento. Configuración de la siguiente manera:

  • demonio en - Ejecutar el programa
  • imágenes por segundo: 100 - ¿Cuántos cuadros o imágenes / segundo para transmitir
  • stream_localhost fuera - Permitir el acceso a través de la red
  • anchura 640 - Anchura de vídeo, ajuste de la cámara web
  • altura 320 - Altura de vídeo, ajuste de la cámara web
  • stream_port 8081 - El puerto de salida de vídeo a
  • output_picture fuera - No guardar cualquier imagen

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

Ahora edite otro archivo:

sudo nano / Etc / default / movimiento

Ajuste “start_motion_daemon = yes”. Esto es necesario para asegurar movimiento se ejecuta.

Ahora averiguar su dirección IP:

ifconfig

Este comando mostrará los detalles de la 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 (lo que es una dirección IP estática?), Pero por ahora hacer una nota de este número.¿Qué es una dirección IP estática, ¿Cómo puedo obtener una? & Sus ventajas / desventajas¿Qué es una dirección IP estática, ¿Cómo puedo obtener una? & Sus ventajas / desventajasEn las redes domésticas, las direcciones IP no suelen ser fijos, pero que caen dentro de rangos específicos. Una dirección IP estática no cambia. ¿Cuáles son las ventajas de este, y ¿Por qué quieres uno?Lee mas

Vídeo: Raspberries from Chile

Ahora empieza movimiento:

sudo Servicio inicio de movimiento

Puede detener o reiniciar movimiento cambiando “Inicio” para “detener” o “reinicio”.

Cambiar a su computadora y vaya 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. El colon seguido de un número es el puerto que se configuró anteriormente. Si todo va bien debería ver la corriente de su cámara web! Trate de moverse y ver cómo se ven las cosas. Es posible que necesite ajustar la configuración de brillo y contraste en el archivo de configuración. Es posible que necesite para enfocar la cámara web - algunos modelos tienen un pequeño anillo de enfoque alrededor de la lente. Convertir esto hasta que la imagen es la más aguda.

De vuelta a la Pi, crear una carpeta y navegar en él:

mkdir seguridad-camdiscos compactos seguridad-cam /

Ahora instale Twisted:

sudo apt-get instalar python-torcido

Twisted es un servidor web escrito en Python, que atenderá las órdenes y luego actuar en consecuencia.

Una vez instalado, crear una secuencia de comandos de 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 de seriede retorcido.web.recurso importar Recurso# Configuración Arduino a la velocidad correctatratar:Arduino = de serie.De serie(`/ Dev / ttyUSB0`, 9600)excepto:Arduino = de serie.De serie(`/ Dev / ttyUSB1`, 9600)clase MoveServo(Recurso):isLeaf = Ciertodef render_GET(yo,solicitud):tratar:# Enviar valor con el de serie para el ArduinoArduino.escribir(solicitud.args[`valor`][0])regreso `Éxito`excepto:regreso `Fracaso`recurso = MoveServo()

Ahora inicie el servidor web:

sudo twistd web -n -p 80 --path / home / pi / seguridad-cam /

Vamos a descomponerlo - “-p 80” especifica el puerto (80). Este es el puerto por defecto para las páginas web. “-path / home / pi / seguridad-cam /” cuenta trenzado para iniciar el servidor en el directorio especificado. Si se realiza algún cambio en las secuencias de comandos dentro de la carpeta “seguridad-cam” tendrá que reiniciar el servidor (CTRL + X para cerrar, a continuación, ejecute el comando de nuevo).

Ahora crear la página web:

sudo nano index.html

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

lt;htmlgt;lt;cabezagt;lt;títulogt;Hacer uso de la cámara de seguridad de bricolajetítulogt;lt;estilo tipo="text / css"gt;#envase {/ * Centro el contenido * /margen: 0 auto-texto alineado: centrar-}estilogt;cabezagt;lt;cuerpogt;lt;div carné de identidad="envase"gt;lt;img src="http: // PI_IP_ADDRESS: 8081" / Gt;lt;guión src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"gt;guióngt;lt;br / Gt;lt;botón al hacer clic="servos.move (`PAG`, 10)"gt;Izquierdabotóngt;lt;botón al hacer clic="servos.move (`PAG`, -10)"gt;Derechabotóngt;lt;botón al hacer clic="servos.move (`T`, -10)"gt;Arribabotóngt;lt;botón al hacer clic="servos.move (`T`, 10)"gt;Abajobotóngt;divgt;cuerpogt;lt;guióngt;var servos-ps( documento ).Listo(función() {servos = moveServos()-})-función moveServos() {// guardar algunos ajustes, ajuste para adaptarsevar panPos = 70,tiltPos = 90,tiltMax = 170,tiltMin = 45,panMax = 170,panMin = 20-regreso {movimiento:función(servo, ajuste) {var valor-Si(servo == `PAG`) {Si(!((panPos gt; = panMax && ajuste gt; 0) || (panPos lt; = panMin && ajuste lt; 0))) {// Todavía dentro del rango permitido, "programar" el movimientopanPos += ajuste-}valor = panPos + `PAG`-}más Si(servo == `T`) {Si(!((tiltPos gt; = tiltMax && ajuste gt; 0) || (tiltPos lt; = tiltMin && ajuste lt; 0))) {// Todavía dentro del rango permitido, "programar" el movimientotiltPos += ajuste-}valor = tiltPos + `T`-}// Utiliza AJAX para mover los servos realidadps.obtener(`Http: //PI_IP_ADDRESS/servos.rpy value =` + valor)-},}}guióngt;htmlgt;

Cambio “PI_IP_ADDRESS” (usado dos veces) a la dirección IP real de su Pi (raspberrypi.local También debería funcionar si se está ejecutando la última Raspian). Reiniciar el servidor web y vaya a la Pi desde el ordenador, sin necesidad de especificar el puerto. Usted debe ser capaz mueva a la izquierda y derecha, y ver la secuencia de vídeo:

Pi-Pan-Tilt-cámara-web-View

Ahi tienes. Su propia cámara Giro horizontal y vertical de la red. Si desea exponer su cámara web con el Internet, recuerde que debe considerar los peligros - a continuación, buscar en el reenvío de puertos, por lo que el router sabe a dónde enviar las solicitudes entrantes. Se podría añadir una fuente de alimentación externa y el adaptador Wi-Fi para un equipo realmente portátil.5 Los peligros a tener en cuenta cuando se apunta sus cámaras de seguridad Inicio5 Los peligros a tener en cuenta cuando se apunta sus cámaras de seguridad InicioEs importante considerar cuidadosamente dónde colocar sus cámaras, y qué partes de su hogar les señalas. Mantener las cosas seguro es importante, pero también lo es el mantenimiento de su privacidad.Lee mas

¿Ha hecho algo fresco con una cámara web y una pi? Déjame saber en los comentarios, me gustaría ver!

Artículos Relacionados