Frambuesa Pi movimiento sensible cámara (20 / 21 paso)

Paso 20: Cómo los programas de Python funcionan

Hay dos cliente programas Python utilizados en este instructable para crear la cámara sensible de frambuesa Pi movimiento.

RPI-ms-camera.py

El primer programa de "rpi-ms-camera.py" se inicia con el comando:

en el archivo de sistema "/ etc/network/interfaces". Se ejecuta el comando "después en" cuando las interfaces de red están funcionando.

Listados 1 a 6 muestran el código fuente del programa rpi-ms-camera.py:

Líneas 4-26 (Listado 1) las bibliotecas de importación necesitada y definir constantes que se utilizarán en el programa.

  • Líneas 4-6 importación las librerías que se requieren para emitir comandos del sistema, el módulo de la cámara de control, obtener el tiempo y permitir el programa de lectura y escritura de los pines GPIO.
  • 10 de línea define que pin GPIO se utiliza para detectar el movimiento detectado por el sensor de PIR.
  • Las líneas 13 y 14 son constantes que se utilizan para los mensajes de salida que indican qué modo está funcionando la cámara.
  • Línea 17 define qué directorio se utilizará para almacenar la foto o vídeo capturado por la cámara más reciente.
  • Línea 20 define la ubicación del programa que se utiliza para subir archivos a Dropbox.
  • Línea 23 establece el número de segundos de video en el que se registrarán cuando se detecta movimiento. Esto puede modificarse para adaptarse a sus necesidades. Los segundos más de vídeo grabado, más tiempo tomará para subir a Dropbox.
  • Línea 26 establece el número de segundos que esperará el programa después de ajustar una foto o grabar un vídeo. Este retardo se utiliza para evitar tomar muchas fotos y vídeos en una fila del mismo evento. Esto puede cambiar si más frecuentes o menos frecuentes fotos o vídeos se van a tomar.

Líneas 28-31 (Listado 2) definir la función de "generate_file_name". Esta función se utiliza para generar un nombre de archivo único basado en la fecha y hora. Este nombre de archivo se utilizará para las fotos o vídeos. El formato del nombre generado es "yyyy-mm-dd-hh-MM-ss-tz" donde aaaa es el año, mm es el mes, dd es el día, hh es la hora, MM es el minuto, ss es los segundos y tz es la zona horaria.

Líneas 33-46 (Listado 2) definir la función de "motion_detected". Esta función es llamada cuando el sensor PIR detecta movimiento. Esta función se ajusta una foto o video, registros sube la foto o el vídeo a Dropbox y elimina el archivo de la Raspberry Pi.

  • Línea 36 crea el nombre del archivo que se utilizará para la foto o el vídeo.
  • Línea 37 imprime un mensaje indicando que se ha detectado movimiento.
  • Líneas 38-40 se ejecutan si se ha establecido el modo de cámara para tomar fotos.
    • Línea 39 añade la extensión ".jpg" en el nombre del archivo.
    • Línea 40 llama a la función "snap_photo" para tomar la fotografía.
  • Líneas 41-43 se ejecutan si la cámara se ha puesto a grabar video.
    • Línea 42 añade la extensión ".h264" en el nombre del archivo.
    • Línea 43 llama a la función "record_video" para grabar el video.
  • Línea 44 llama a la función "upload_to_dropbox" para subir la foto o el vídeo a Dropbox.
  • Línea 45 borra la foto o vídeo. Esto se hace para evitar que la tarjeta SD de frambuesa Pi llenando con fotos o videos.
  • Línea 46 imprime un mensaje indicando que el archivo ha sido borrado.

Líneas 48-53 (Listado 3) definen la función de "snap_photo". Esta función se utiliza para tomar una foto.

  • Línea 51 establece la resolución de la foto.
  • Línea 52 se encaja a presión la foto y almacena en el archivo especificado.
  • Línea 53 imprime un mensaje que indica que se tomó una foto.

Líneas 55-64 (Listado 3) definen la función de "record_video". Esta función se utiliza para grabar un video.

  • Línea 59 establece la resolución del vídeo.
  • Línea 60 empieza a grabar el video y almacena en el archivo especificado.
  • Línea 61 imprime un mensaje indicando que ha comenzado la grabación de vídeo.
  • Línea 62 hace que el programa espere hasta que el número de segundos especificado.
  • Línea 63 detiene la grabación del vídeo.
  • Línea 64 imprime un mensaje indicando que el video ha dejado de grabar.

Líneas 66-74 (Listado 3) define la función de "upload_to_dropbox". Esta función cargará el archivo especificado a Dropbox.

  • Línea 70 extrae sólo el nombre del archivo el nombre de archivo completo que fue aprobado en la función. Este será el nombre del archivo almacenado en Dropbox.
  • Línea 71 imprime un mensaje acerca de qué archivo se subirá.
  • Línea 72 define el comando completo que se utilizará para cargar hasta el archivo. El comando consiste en el nombre y la ubicación del programa de carga, la opción de "subir" para el comando, el nombre de archivo local y el nombre que debe utilizarse para el archivo en Dropbox.
  • Línea 74 utiliza la función del sistema "subprocess.call" para ejecutar el comando.

Líneas 76-85 (listado 4) definir la función de "upload_ip_address". Esta función se utiliza para crear un archivo con la dirección IP de la Raspberry Pi y subirla a Dropbox. El propósito de subir un archivo con la dirección IP es hacer más fácil obtener la dirección IP de la Raspberry Pi para propósitos de depuración. Con la dirección IP, es posible utilizar "ssh" para abrir una sesión de terminal a la frambuesa Pi y emitir comandos de Linux.

  • Línea 80 imprime un mensaje que indica que la dirección IP se subirá a Dropbox.
  • Línea 81 crea el nombre del archivo que contendrá la dirección IP.
  • Línea 82 construye el comando para obtener la dirección IP del sistema. Es el comando "hostname-I >" seguido del nombre del archivo.
  • Línea 83 utiliza la función del sistema "subprocess.call" para ejecutar el comando.
  • Línea 84 llamadas "upload_to_dropbox" para subir el archivo a Dropbox.
  • Línea 85 elimina el archivo de la Raspberry Pi.

Líneas 87-91 (listado 4) definir la función de "first_time_config". Esta función se llama durante el proceso de configurar el Raspberry Pi cuando se emite el comando "python rpi-ms-camera.py - firsttime". Este comando se utiliza en el paso 9 de este instructivo.

  • Línea 91 utiliza la función del sistema "subprocess.call" para emitir el comando que carga archivos a Dropbox. Cuando se emite este comando por primera vez, solicita al usuario ingresar la información necesaria para conectarse a Dropbox.

Líneas 93-99 (listado 4) definir la función de "test_dropbox". Esta función se llama durante el proceso de configurar la frambuesa cuando el comando "python rpi-ms-camera.py - prueba" se publica. Este comando crea un archivo de prueba que contiene la dirección IP del Raspberry Pi y sube a Dropbox. Si envía con éxito el archivo, luego el Raspberry Pi ha correctamente constituido para su uso con Dropbox. Se utiliza en el paso 9 de este instructivo.

  • Línea 97 imprime un mensaje indicando que la conexión de Dropbox está a punto de ser probado.
  • Línea 98 llama a la función "upload_ip_address" para crear y cargar un archivo que contiene la dirección IP de la Raspberry Pi.
  • Línea 99 imprime un mensaje indicando que la carga ha finalizado y le pide al usuario que Compruebe la carpeta de la aplicación de Dropbox para verificar el archivo ha subido con éxito.

Líneas 100-133 (listado 5) son el principio del programa principal.

  • 107-110 las líneas son comentarios que muestran todas las opciones del programa.
  • Línea 113 comprueba para ver si las opciones que han sido especificadas. Si tienen opciones se ha especificado que el programa continúa en la línea 114. Si no hay opciones han sido especificados, el programa va a la línea 127.
  • Líneas 114-115 Compruebe si se ha especificado la opción para tomar fotos y si así establece el modo de cámara fotos.
  • Líneas 116-117 Compruebe si se ha especificado la opción de grabación de vídeo y si tan establece el modo de cámara en videos.
  • Líneas 118-120 si se especificó la primera opción de tiempo y si lo llama a la función "first_time_config" y luego sale el programa.
  • Líneas 121-123 para ver si se especifica la opción de prueba y si lo llama a la función "test_dropbox" y luego sale el programa.
  • Líneas de 124-126 se alcanzan si se especifica alguna otra opción. Desde esta opción no reconocida, se imprime un mensaje de error y el programa sale.
  • Líneas 127-133 se ejecutan cuando no se ha especificado ninguna opción. Impresión de líneas 128-132 lo que todas las opciones válidas son y luego la línea 133 sale el programa.

Líneas 135-164 (listado 6) realizar operaciones de inicialización para el programa principal.

  • Líneas es a partir de 135-136 impresión mensajes indicando la cámara sensible de frambuesa Pi movimiento y modo de (foto o video) que se utilizará.
  • Líneas de 138-141 establece el módulo de cámara. Línea 139 inicializa la cámara. Líneas 140-141 indican a la cámara para voltear la imagen para que esté derecha arriba desde la perspectiva del usuario. La imagen de los bancos es necesario debido a la forma de que la cámara se monta en el panel frontal.
  • Las líneas 143-145 establece el pin GPIO para el sensor de movimiento PIR. Hay dos esquemas de numeración de los pines GPIO: línea 144 indica al software GPIO qué esquema utiliza este programa. Línea 145 establece el pin para el sensor de PIR un pin de entrada.
  • Línea 149 llama a la función "upload_ip_address" para subir un archivo a Dropbox que contiene la dirección IP asignada a este Pi de frambuesa. Se utiliza para la depuración pero también para hacerle saber que la cámara está arriba y funcionando.

Líneas 152-163 (listado 6) es el bucle principal del programa.

  • Línea 152 define un bucle que se repetirá indefinidamente hasta que el se apaga, el Raspberry Pi.
  • Línea 154 imprime un mensaje que indica que la cámara estará esperando para detectar el movimiento.
  • Línea 155 espera una señal desde el sensor PIR que indica que se ha detectado movimiento.
  • Línea 156 llama a la función "motion_detected" para sacar una fotografía o grabar un vídeo y subirlo a Dropbox.
  • Línea 157 imprime un mensaje que indica que la cámara va a dormir durante unos segundos. El objetivo de este retraso es evitar demasiadas fotos y videos de ser tomado para el mismo evento de movimiento.
  • Línea 158 duerme durante el número especificado de segundos.
  • Después de dormir ha terminado, el programa vuelve a la línea 154.

Líneas 159-163 (listado 6) se utilizan para propósitos de depuración. Estas líneas se ejecutarán si el programa se ejecuta desde la línea de comando y se presiona Ctrl/C para detenerlo.

  • Línea 160 imprime un mensaje indicando que el usuario haya dejado el programa
  • Línea 161 para el módulo de cámara.
  • Línea 162 para el monitoreo de los pines GPIO.
  • Línea 163 para el lazo haciendo que el programa de salida.

RPI-alto-btn.py

El segundo programa "rpi-fin-btn.py" se inicia durante el proceso de arranque mediante el comando

en el archivo de sistema "/ etc/rc.local". El "&" al final del comando hacen que el programa ejecute como un proceso separado que sigue funcionando hasta que salga el programa.

El listado 7 muestra el código fuente del programa rpi-alto-btn.py:

Las líneas 2-13 inicializan el programa.

  • Líneas 2-3 importar las librerías necesarias para controlar los dispositivos conectados a los pines GPIO, comandos de edición del sistema, permite al programa dormir.
  • Líneas 6 y 7 definen el pin que supervisará el interruptor de apagado y el pin que controla la iluminación del LED en el interruptor.
  • La línea 8 dice el software GPIO qué esquema de numeración el programa utilizará para los pines GPIO.
  • Línea 9 establece el pin GPIO para controlar el LED en el interruptor para ser un pin de salida.
  • Línea 10 establece el pin GPIO para monitorear el interruptor para prensas a un pin de entrada.
  • Línea 11 ilumina el LED en el interruptor por el valor del pin en true.
  • Línea 13 imprime un mensaje que indica que el interruptor ahora se está controlando.

Línea 18 hace que el programa espere a que el interruptor al ser presionado.

Líneas 19-21 se utilizan para la depuración. Se ejecutará cuando el programa se ejecuta desde la línea de comandos y pulse Ctrl/C estas líneas.

  • Línea 20 a imprimir un mensaje que indica que el usuario detiene el programa.
  • Línea 21 para el monitoreo de los pines GPIO.

Líneas 22-26 se ejecutan presionando el interruptor de apagado.

  • Línea 23-25 causa el LED en el interruptor para apagar brevemente para proporcionar información al usuario que se presionó el interruptor.

    • Línea 23 apaga el LED.
    • Línea 24 hace que el programa a dormir durante medio segundo.
    • Línea 25 nuevamente enciende el LED.
  • La línea 26 utiliza la función "subprocess.call" para ejecutar el comando "sudo halt" que hará que el Pi de frambuesa para apagar.

Cuando el Raspberry Pi ha apagado el LED en el interruptor de apagado apaga indicando que es seguro desconectar la cámara de la toma de corriente.

Artículos Relacionados

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

necesitaba un reloj para mi oficina en casa (donde me paso las mañanas del fin de semana construyendo robots y tal) y quería que encajen en la decoración de mi banco de trabajo electrónica. Me decidí a construir uno con todas las "entrañas" expu
Detección de movimiento barato cámara de vida silvestre

Detección de movimiento barato cámara de vida silvestre

Siempre he querido una forma barata para tomar fotos sin ser visto de la vida silvestre en mi barrio.  Este instructable tiene dos existentes instructables y trae junto con características agregadas para crear una detección de movimiento barato cámar
Cámara llavero de Arduino modificar movimiento detectar cámara

Cámara llavero de Arduino modificar movimiento detectar cámara

Encienda la videocámara llavero en movimiento detectar cámara.Cuando HC SR501 PIR sensor detecta movimiento, cámara encienda, tomar una foto y apagar, esperando el siguiente movimiento.Paso 1: cableado El cableado es muy simple.Después de extraer la
Movimiento accionada cámara con frambuesa Pi

Movimiento accionada cámara con frambuesa Pi

Frambuesa Pi con HC-SR501 Sensor infrarrojo pasivo para detectar la aparición de la ardilla y luego activar A6300 SONY para grabar el video en el mejor ángulo y distancia.Paso 1: Lo que usted necesita: Una cámara, he usado SONY A6300Frambuesa Pi, el
Movimiento de cámara de seguridad activada usando Intel Edison

Movimiento de cámara de seguridad activada usando Intel Edison

El objetivo de este proyecto es hacer una cámara de seguridad que es activada por un sensor de movimiento. Un sensor de movimiento infrarrojo pasivo (PIR) supervisa de forma continua para cualquier movimiento en su campo de visión. Cuando se detecta
RainBerry: Caja compacta, resistente a la intemperie para frambuesa Pi A + y cámara Pi

RainBerry: Caja compacta, resistente a la intemperie para frambuesa Pi A + y cámara Pi

RainBerry caso es un caso compacto, diseño, resistente a la intemperie para Raspberry Pi y Pi de la cámara. Este proyecto nace de la necesidad de vigilar y proteger el jardín con una cámara elegante de Pi de visión por computador.Paso 1: Característi
Movimiento sensible bobina de Tesla

Movimiento sensible bobina de Tesla

este año me decidí a hacer mi garaje en una casa embrujada poco. Para agregar algo de diversión y puntos de miedo graves, escribí algo de código y uno de mis bobinas de Tesla a un sensor de movimiento conectado a través de mi Arduino. Ahora se convie
Movimiento sensibles LED Throwies

Movimiento sensibles LED Throwies

diseñado para ser colocado/arrojadas sobre blancos móviles, estos throwies utilizan un sensor de movimiento crudo.Paso 1: Juntar las pilas En vez de usar las baterías cr2032, usar 2 pilas de botón. 1Ponga las pilas (- a +) Enrolle las dos pilas peque
Movimiento sensibles ojos brillantes que iluminan al azar y guiñan hacia fuera lentamente

Movimiento sensibles ojos brillantes que iluminan al azar y guiñan hacia fuera lentamente

¿En busca de un ejército entero de ojos brillantes que guiñan en y entonces lentamente guiño hacia fuera como sus huéspedes caminar por tu camino? ¿O tal vez su ejército de minions malvados despierta cuando sus invitados alcanzan un placer? Yo te ens
Usar una MCU en su circuito

Usar una MCU en su circuito

utilizando microcontroladores puede abrir un nuevo mundo para sus circuitos.  Mientras que mantenerlos simples y por más que programada es bueno un todo, llega un punto donde escribir un programa para un circuito es mucho mejor.  Con MCU puede automa
La BoBoBoT 5MP 1080 HD seguridad cámara frambuesa Pi Robot de seguridad

La BoBoBoT 5MP 1080 HD seguridad cámara frambuesa Pi Robot de seguridad

Módulo de cámara HD 5 Mega Pixel 1080 con visión nocturna NOIRTecnología de captura de movimientoAlertas de correo electrónico de captura de movimientoReloj Web Feed directo desde tu teléfono inteligenteSD tarjeta DVRFrambuesas pines GPIO de PiLEDWi-
Movimiento detección usando frambuesa Pi

Movimiento detección usando frambuesa Pi

aquí explico un proyecto de detección de movimiento simple. Plataforma utilizada es frambuesa pi. Movimiento es detectado usando las librerías de simplecv en python.¿Qué es SimpleCV?SimpleCV es un framework de código abierto para crear aplicaciones d
3D impreso frambuesa Pi cámara de seguridad

3D impreso frambuesa Pi cámara de seguridad

Artículo en 3Ders.orgActualización: Si quieres mi voto por favor instructable para mí en el desafío de frambuesa Pi y Epilog. También actualizaré el paso 5 para incluir cómo configurar movimiento en el primer arranque. Gracias por tus clics y gracias
Danza de Dave en un traje de luz sensible Movimiento basados en un Arduino

Danza de Dave en un traje de luz sensible Movimiento basados en un Arduino

Un basados en Arduino movimiento sensible ligero trajeTambién puede mostrar patrones y tal aunque sólo la detección de movimiento en el vídeo. Utiliza un acelerómetro ADXL335 para detectar el movimiento de los portadores. Mi amigo Dave amablemente pu