¿Nos ayudas a pagar el Hosting?

Compartir en facebook Compartir en twitter Compartir en linkedin

Construye un fotomatón con Orange Pi

Publicado en Septiembre de 2016

Los fotomatones (cabina o quiosco de fotos) se han convertido en algo muy popular en bodas y otros eventos, proporcionando un montón de diversión para los asistentes a la fiesta. Así que me he decidido a crear uno que almacenará las fotografías para luego poder repartirlas a los invitados.

Que necesitas:

Alimentación
Alimentación
Pulsador
Pulsador empotrable

Antes de nada, un par de opciones. Voy a usar una webcam para simplificar el proceso, pero puedes cambiarla por una cámara digital o una reflex, que tendrán muchísima más calidad, todo depende de lo que quieras hacer con las fotos finales (y lo que quieras complicar tu proyecto...). La mayoría de las cámaras se pueden controlar con un programa que se llama gphoto2 o disponen de un puerto en el que conectar un cable que, mediante un pulsador, dispara la cámara. Se puede simular esta pulsación a través de los puertos GPIO.

También puedes conectar un monitor para que la gente pueda ver en directo como saldrán en la foto. Si usas una webcam, puedes usar motion y hacer que en pantalla se vea la captura de la webcam, pero impidiendo que el programa motion haga ninguna captura, ya que se hará a través de un pulsador. Incluso podríamos dejar que entre en modo de suspensión y activarlo mediante un sensor de presencia como vimos en esta guía y que, cuando alguien se ponga delante, mágicamente la pantalla se active. Muy efectista.

También podemos elegir entre almacenar las imágenes en la propia tarjeta de la Pi, o enviarlas a, por ejemplo, Dropbox si disponemos de conexión a internet. Para el envío de imagenes a Dropbox mirad esta guía. Las imágenes se enviarán a la nube y mantendremos el espacio en la Orange Pi. O ambas cosas, con el riesgo de llenar la tarjeta.

Lo primero que haremos será actualizar con update y upgrade, (como siempre) y luego configurar la webcam. Yo he usado Armbian y para tomar imágenes, vamos a usar un sencillo programa que se llama fswebcam:

sudo apt-get install fswebcam

Una vez instalado, podemos probar que todo funciona con:

fswebcam foto.jpg -r 1280x720

Tendremos una fotografía en el directorio desde el que ejecutamos el comando llamada foto.jpg y con una resolución de 1280x720 pixels. La cámara ya funciona.

Como nos interesa disparar la cámara desde un pulsador, vamos a escribir un pequeño programa que lo haga usando un puerto GPIO. Necesitamos instalar cualquiera de las librerías que manejan el BUS GPIO. Para este ejemplo usaré la librería de duxingkei33. Para instalar consulta este otro artículo. Crea un fichero llamado disparo.py con tu editor favorito y escribe el siguiente código:

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
# author    : "javier pérez santos para orangepiweb.es"
# credits   : "javier pérez santos, orangepiweb.es"
# copyright : "Copyright 2017, orangepiweb.es"

"""
   ___                             ____  ___        __   _
  / _ \ _ __ __ _ _ __   __ _  ___|  _ \(_) \      / /__| |__   ___  ___
 | | | | '__/ _` | '_ \ / _` |/ _ \ |_) | |\ \ /\ / / _ \ '_ \ / _ \/ __|
 | |_| | | | (_| | | | | (_| |  __/  __/| | \ V  V /  __/ |_) |  __/\__ \
  \___/|_|  \__,_|_| |_|\__, |\___|_|   |_|  \_/\_/ \___|_.__(_)___||___/
                        |___/

Construye un fotomatón con Orange Pi
"""
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
import datetime
import subprocess

sensor = port.PA6

gpio.init()
gpio.setcfg(sensor, gpio.INPUT)

while True:
	if gpio.input(sensor) == 0:
		print("Espera 3 segundos")
		time.sleep(3)
		sufijo = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
		nombre = "orangepi-" + sufijo + ".jpg"
		subprocess.call(["fswebcam", "-r", "1280x720", nombre])
	time.sleep(0.5)

Para probar nos vale con este código. En mi caso, el PIN PA6 (PIN número 7) está en HIGH (valor 1), tengo que conectar el pulsador a través de una resistencia de 10KΩ a GND (masa o tierra). Comprueba el estado del PIN antes de hacer las pruebas. Vamos a ver un diagrama:

Cada vez que se oprima el pulsador, el valor del PIN PA6 será igual a 0, con lo que se hará una pausa de 3 segundos y disparará una fotografía cuyo nombre estará compuesto por la fecha y hora del momento del disparo, así el nombre será único. Ahora tú debes elegir como avisar de la pausa. Puedes hacerlo con leds con un programa muy sencillo que parpadee o si has hecho que se vea la salida de la cámara en un monitor, avisar mediante mensajes. Las posibilidades son infinitas. Imprime una hoja explicando el funcioamiento para pegar sobre la carcasa.

También puedes hacer que dispare varias fotografías con una pausa en medio y luego elegir la mejor o presentarlas como una tira de 4 fotografías como hacen los fotomatones. Repito: las posibilidades son infinitas...

Un apunte. Si tienes poca capacidad de almacenamiento y quieres que las fotos se suban a la nube y borrar cada vez que se haga una nueva foto, simplemente cambia las lineas:

sufijo = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
nombre = "orangepi-" + sufijo + ".jpg"
subprocess.call(["fswebcam", "-r", "1280x720", nombre])

por esta única linea:

subprocess.call(["fswebcam", "-r", "1280x720", "captura.jpg"])

Después sube cada foto, por ejemplo, a dropbox y el archivo se borrará después de cada nueva fotografía, salvando así espacio en disco. Al subirse el archivo, ya se le asigna un nombre único. Esto es bastante arriesgado si se corta la conexión a internet... así que habría que darle una vuelta para no perder ninguna fotografía.

Mételo en una caja, haz los agujero para el objetivo, alimentación y pulsador. Puede caber en una caja del tamaño de una de zapatos. Mi primera prueba la hice con una de botellas de vino.

Al final, he quedado un proyecto muy abierto, con muchos detalles en el aire, porque hay muchas variantes. Si necesitas cualquier tipo de ayuda, escríbeme y resolveremos el problema.

Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.


Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.

Todos los comentarios serán validados antes de su publicación.

Sergio

Hola Javier, gracias por el articulo del fotomaton con la orange pi2, esta genial.
Estoy muy interesado en crear un fotomaton para la boda de mi hermana. Mi intencion es que quede profesional porque es posible que lo utilice en mas eventos. Pero tengo algunas dudas y queria saber si podrias ayudarme en el proceso.
Mi idea es poner un monitor de 15\" que tengo, un pulsador para hacer las fotos, una webcam hd y una impresora canon selphy. Ahi es donde tengo la duda, se puede conectar una impresora y que haga dos copias con cada foto?, supongo que habrá que crear algo mas de codigo para que funcione. Yo domino bastante el codigo php, css, html5 y algo de javascript (de javascript poco jaja).
Supongo que no, pero por si las moscas te lo pregunto, con la orange pi 2 ya no es necesario un pc o portatil no?
Bueno en resumen, fotomaton compuesto por:
- Pantalla de 15\"
- Webcam hd
- Pulsador para hacer la foto
- Impresora canon selphy
- Placa orange pi2

Es posible lo que digo?
De antemano muchas gracias.
Un saludo, Sergio.

P.D. Buscando la orange pi2 por internet he encontrado esta con camara incluida:
----------------------


No se hasta que punto puede ser valida la camara que viene con esta orange pi2, dime si tu lo sabes o donde puedo comprar la orange pi2, gracias


Administrador OrangePiWeb.es

Hola Sergio.

Si que es posible montar el fotomatón con esa configuración. En principio, se puede conectar cualquier impresora que tenga drivers para Linux e imprimir automáticamente desde Python.

Supongo que vas a usar Armbian, así que lo primero que hay que hacer es instalar los drivers de la impresora en Linux. Luego puedes imprimir directamente desde la linea de comandos de Linux con:

$ lp /nombre_documento.txt -d EPSON_LX-300

por poner un ejemplo. Yo te recomiendo que instales un programa que se llama CUPS, es un servidor de impresoras que te permite imprimir desde Python. Puedes ver como instalarlo desde este artículo:
http://orangepi2.esy.es/impresoras.php

Y luego el código para imprimir desde Python es bastante sencillo:
printFile (nombre_de_la_impresora, nombre_de_fichero_a_imprimir, título, opcions)

Así, en el fichero Python puedes escribir:
fichero = "/home/pi/foto.jpg"
conn.printFile (nombre_de_la_impresora, fichero , "Imprimiendo Foto", {})

Tendrás que tomar las fotos a un determinado tamaño o convertirlas antes de imprimirlas y hacer pruebas para ver que es lo que se imprime. Hacer dos copias debería ser sencillo.

La cámara del enlace es de sólo 200MP, así que la resolución es muy pobre. Yo tengo una y funciona correctamente, pero aunque valdría por ejemplo, para una videoconferencia o para detectar movimiento, yo no la usaría para sacar fotos con un mínimo de calidad, mejor la webcam HD.

Para comprar la Orange Pi, el distribuidor oficial es https://es.aliexpress.com.

Espero que te sirva de ayuda, si tienes más dudas, por aquí andaré.

Muchas gracias a ti, me animas a seguir.
Javier


Sergio

Muchisimas gracias!!, aunque se me olvidó decirte que tambien queria poner dos ojos de buey para que hagan de flash. ¿Es posible recibir corriente desde la placa en el momento del disparo?, aunque los ojos de buey se enciendan unos segundos antes hasta despues de cada foto. Mi idea es poner un relé con una bobina del voltaje que sea capaz de emitir la orange pi y ya luego, pasar los 220v para los ojos de buey por los contactos del relé. Si es así ya me animo a comprar todo el material y, si te parece bien, me gustaria poder comunicarme contigo por email para montarlo todo.
Otra cosa es que aparte de imprimirlas necesitaria que se guardaran en un usb para los novios. Tengo mas dudas, por eso lo del correo jajaj.
Podria ir haciendo fotos de todo el montaje y luego lo puedes publicar aqui si quieres.
Gracias de antemano


Administrador OrangePiWeb.es

Si que sería posible activar un relé desde la OPI y así encender unos focos, hacer una pausa, disparar las fotos y apagar los focos. Busca 'Relé para Arduino' y encontrarás lo que necesitas por un par de euros.
Quizás te interesaría plantearte cambiar la webcam por una cámara digital que dispare un flash, así tendrás, además de mucha más calidad, control sobre la iluminación.
Para la copia de las fotos, tendrás que poner una MicroSD lo más grande posible, o un disco duro externo. Y si además las subes a dropbox (contando con que tienes una conexión a internet) tendrás una copia de seguridad.
Ánimo, el proyecto es complejo, pero más sencillo de lo que parece. Todo lo que necesites, no dudes en consultarlo, y si haces alguna foto, la añadiremos aquí.


Sergio

Hola Javier, que modelo de orange pi me recomiendas para el fotomaton?
Creo que necesitaré 4 usb, webcam, impresora, teclado + raton y pen drive.
Gracias


Administrador OrangePiWeb.es

Hola Sergio.
Yo he probado con la Orange Pi 2 y funciona muy bien. Te recomiendo de esa para arriba. Si quieres poner un disco duro SATA por capacidad de almacenamiento de fotos, tendrás que tirar de PLUS o PLUS2. Tengo ganas de ver alguna foto del montaje ....


Nombre*

Email* Nunca será publicado ni compartido

Comentario*



Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.

OK | Más información