Timelapse con Canon Rebel (EOS), Arduino, y FFMPEG
July 20, 2009Introducción
Éste pequeño tutorial (WIP), si es que merece llamarse así, muestra cómo tomar fotografías automáticamente cada cierto lapso de tiempo, para luego generar un video con las mismas, logrando el bien conocido efecto “Timelapse“.
El código es bastante sencillo, espero mejorarlo en algún momento y agregar mas inputs para hacerlo autónomo y no depender de una computadora si es que se quiere modificar el valor.
Materiales utilizados
- Canon Rebel XT (ó 300 / 350D)
- Cable USB / Mini USB
- Seeeduino (Arduino Diecimila Compatible). Se puede adquirir en Ditentec
- Optoacoplador 4N26 (ó 4N28, 4N35) = u$s0,63 en Ditentec
- Plug 2.5 mm Stereo(3/32″)
Softwares utilizados
Proceso
Las cámaras Canon Rebel o EOS nos permiten conectar un control remoto a través de un plug estándar de 2.5 mm (3/32″), para disparar a distancia, lo cual facilita automatizar la tarea, en este caso con un Arduino (Seeeduino) y un Optoacoplador 4N26.
“Un optoacoplador, también llamado optoaislador o aislador acoplado ópticamente, es un dispositivo de emisión y recepción de luz que funciona como un interruptor excitado mediante la luz. La mencionada luz es emitida por un diodo LED que satura un componente optoelectrónico, normalmente en forma de fototransistor. De este modo se combinan en un solo dispositivo semiconductor, un fotoemisor y un fotorreceptor cuya conexión entre ambos es óptica. Estos elementos se encuentran dentro de un encapsulado que por lo general es del tipo DIP. Se suelen utilizar como medio de protección para dispositivos muy sensibles.” – http://es.wikipedia.org/wiki/Optoacoplador
Imágenes

Esquema del circuito.

Prototipo funcionando.


1: Digital Pin 9 del Arduino.
2: GND del Arduino.
3: No se usa.
4: Tip del plug.
5: GND de la camara, si juntáramos el cable verde con el rojo,
cerraríamos el circuito y se dispararía la cámara.
6: No se usa.

Shield: GND de la cámara.
Ring: Foco, equivalente al “Half Press”, no lo usamos en este caso.
Tip: Disparador (“Shutter”)
Código
Generando el video a partir de los .JPG’s
En GNU/Linux, teniendo instalado FFMPEG, éste comando obtenido en http://www.munz.li/?p=48 me dió excelentes resultados (Hacer cd /path/a/fotos/ ):
$ cd /path/a/fotos/
$ mencoder -nosound mf://*.jpg -mf w=800:h=371:type=jpg:fps=15 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2160000:mbd=2:keyint=132:v4mv:vqmin=3:lumi_mask=0.07:dark_mask=0.2:mpeg_quant:scplx_mask=0.1:tcplx_mask=0.1:naq -o time_lapse-test.avi
Bibliografía
http://wordpress.bolanski.com/
http://www.image-in.com/fredmiranda/Detector.doc
http://www.munz.li/?p=48

July 22, 2009 a las 10:12 am
[...] Fuente: Fernando.com.ar [...]
July 24, 2009 a las 12:30 pm
ya mismo me compro un seeeeeeeduino
August 29, 2009 a las 5:34 pm
[quote]ya mismo me compro un seeeeeeeduino [/quote]
cuanto cuesta aprox?
juani
December 11, 2009 a las 10:54 am
Estoy en los inicios con esta plaquita y es la primera experiencia.
He probado el código en un adruino Duemilanove 328 y supongo que debido a la conversión que hace me aparecen errores constantemente (he cargado el archivo en lugar de copiarlo).
Los primeros errores se debian a la diferencia entre la doble comilla ” y la simple `
en cualquier caso ahora me aparece un error que no consido depurar:
In function ‘void loop()’:
error: ‘i’ was not declared in this scop
y queda marcada la siguiente linea del código:
for(i=0; i<60; i++ ){
algúna forma de solucionarlo.
Gracias.
December 11, 2009 a las 4:48 pm
Antonio, acá esta la solución:
for(int i=0; i<60; i++ ){http://www.arduino.cc/en/Reference/For
December 12, 2009 a las 4:12 pm
Muchísimas gracias Fernando, la dichosa i, me tenía desorientado.
Lo he probado y tras algunas modificaciones mas, el programa funciona.
Aprovecho para preguntarte habría alguna forma de transforma este sistema (ya comentabas algo al inicio del hilo, para que fuera autónomo?
Enhorabuena una magnífico y creativo trabajo.