miércoles, 7 de diciembre de 2011

Intervalómetro DIY - Requisitos y software

Hola querido lector,

si recuerdas, hace tiempo comenté la idea de hacer un intervalómetro/circumpolómetro, pero quedó en el cajón de los proyectos pendientes, por varios motivos.
Como hace frío por estas fechas, y apenas hay bichos para macrear, o se esconden cuando yo llego, he retomado el trabajo con paisajes. Pero no todos los paisajes son diurnos, y tengo muy abandonada la fotografía nocturna, excusa ideal para retomar el proyecto que ocupa estas líneas.
Aunque el software estará centrado, inicialmente, en fotografía nocturna, la puerta queda abierta a las necesidades que surjan: intervalómetro puro y duro, circumpolómetro (estar varias horas dale que te pego al mando aburre), y un largo etc.

No lo comento explicitamente, pero este artículo presupone algunos conceptos sobre el manejo de una cámara reflex en modo manual, y la fotografía nocturna.
Si no has manejado esta disciplina, te recomiendo visitar la web de Noctámbulos, donde encontrarás amplia información.


Requisitos.

- Facilidad de uso: primordial porque no tiene sentido volverse loco navegando por menús, ni tocando mil botones. Todas las funciones deben estar en una sola pantalla.
- Simplicidad y bajo coste: no sólo es una cuestión económica, sino de circuitería: cuanto menos componentes, más simple de montar. No es lo mismo usar pilas, que una batería li-po, por ejemplo.
- Bajo consumo: de nada sirve tener un aparato estupendo si se queda fuera de servicio a mitad de una foto. Como todo, hay que buscar un compromiso, dependiendo de los componentes usados, y dependiendo de la batería.
- Batería: debe tener larga duración, aunque el consumo sea poco, y fácil de recargar.
- Nada intrusivo: si hay algo molesto en la fotografía nocturna, es que alguien encienda una luz, o quedarte ciego por un fogonazo del display de la cámara. El intervalómetro no debe violar ninguna de estas reglas.

Acorde a estos requisitos, he decidido usar un display LCD de 16x2 líneas (sumamente común),  y un arduino como cerebro.
El control de la cámara lo haré con un diodo led infrarrojo, a modo de mando a distancia.
¿Por qué hacerlo así? Esta es una cuestión muy particular: mi cámara, una Nikon D40, no tiene otra opción para dispararla en remoto. Así de simple.
Como por ahora voy a centrarme en un primer prototipo funcional, voy a dejar de lado el asunto de la batería, hasta analizar el consumo del circuito, y las dimensiones que pueda tener una vez ensamblado.
Sí puedo adelantar que voy a usar un display lcd de color rojo, el más discreto y cómodo que he visto por ahora para usar de noche.

Interfaz.
Dejando de lado cuestiones tan específicas, lo primero es lo primero: el interfaz.
Tal como dije anteriormente, debe ser muy simple de manejar, esta es una cuestión prioritaria.
¿Por qué? Si nunca has hecho fotografía nocturna, querido lector, imagina estar en un lugar recóndito a las tantas de la mañana, pasando frío, equipo a cuestas... lo último que necesitas es pelearte con un aparato, o tener que echar mano del móvil para calcular datos.

Pues bien: he optado por usar dos pantallas para el modo de fotografía nocturna.
Una primera se encargará de recoger los datos y procesarlos, y una segunda, de la cuenta atrás.

Primera pantalla: recogida y procesado de datos.

I1600 f5.6  1s
I 200 f8   16s

La primera línea son los datos de entrada (exposición calculada en la cámara con el mayor ISO y apertura de diafragma).
La segunda línea son los datos para calcular la exposición final.

Muy sencillito, ¿verdad?
En cuanto al manejo, el planteamiento inicial, y recalco, inicial, es moverse por los diferentes parámetros usando botones:

- select: entra en el modo de navegación (se mueve por los diversos parámetros), y también en el modo de edición (cambiar el valor de algún parámetro).
- cancel: sale del modo de navegación y edición.
- +: se mueve hacia la derecha en el modo de navegación, y aumenta el valor de un parámetro.
- -: se mueve hacia la izquierda en el modo de navegación, y decrementa el valor de un parámetro.

Insisto: es un planteamiento inicial, un prototipo.
Con el uso, iré viendo si se puede simplificar, no tanto por usar más o menos botones, sino por la agilidad en el manejo.

Por supuesto, este es el menú para recoger los datos.

Una vez recogidos los datos, hay que procesar la información, calcular el tiempo final de exposición (hay Recuerda: el intervalómetro va a funcionar como un mando a distancia que dispara el obturador, no tiene capacidad de manejar ninguna otra función.

Segunda pantalla: cuenta atrás.

Tan simple como dos mensajes.

Primero:
Cuenta atrás

Segundo:
9999s

El segundo mensaje se repetirá hasta agotar la cuenta atrás.
Un detalle importante: la cuenta atrás va en segundos. Parece obvio, pero no lo es tanto como aparenta.

Software.
Teniendo claros los requisitos y el interfaz, desarrollar el software es cuestión de pensar un poco, e implementarlo.
Según el hardware empleado, habrán algunas ligeras variaciones, pero siempre teniendo en mente la capacidad de ampliar funciones con poco trabajo.
No me voy a extender en detalles, porque el código fuente está en un repositorio público, y dado el amplio soporte de Arduino por parte de la comunidad, abundan los ejemplos y librerías para manejar el hardware.
Para los más curiosos, decir que tanto el software como los esquemas los voy a liberar bajo la licencia open source más liberal que encuentre.

Repositorio y primer prototipo.
Código, esquemáticos y demás información útil la puedes encontrar en https://github.com/cbolanos79/Nikon-Intervalometer

En cuanto al primer prototipo, lo puedes ver funcionando en http://youtu.be/BsPX2Q66zIs
La siguiente entrada tratará el montaje del hardware, y pruebas reales.

¡Hasta la próxima!

martes, 22 de noviembre de 2011

Carga tu equipo fotográfico sin dejarte la espalda en el intento

Hola querido lector,

discúlpame por haberme dejado ir tanto con el blog, pero ha sido una temporada un poquillo revuelta.
Quiero compartir contigo un descubrimiento interesante, y digo descubrimiento, porque varias personas se han sorprendido por lo evidente y simple de la cuestión.
El tema es el siguiente: como fotógrafo, aficionado o profesional, estarás habituado a cargar con toneladas de material a cuestas, especialmente si te gusta salir a la aventura.
No es extraño encontrar mochilas dignas de maniobras militares: cuerpo, objetivos de todo rango (gran angular, tele corto, tele, macro, etc), accesorios varios, y si vas a una sesión de modelaje, añade más cachibaches a la lista entre pies de flash, paraguas, modificadores de luz y mil cosas.
Y bien, te preguntarás cuál es el invento.
Pues ni más ni menos que ... el carrito de la compra, y no me refiero al del supermercado, que alguno estará pensando en cogerlo prestado para llevar todo el equipo, y al propio fotógrafo dentro.
Me refiero a esa cesta con ruedas que tanto se veía antaño, ahora menos, pero la mar de útil.
¿Sorprendido? Resérvate la sorpresa para cuando lo pruebes, y me cuentas qué tal te ha ido.
De momento, mi experiencia ha sido con uno que compré en Alcampo (20 y poco euros), con una cesta enorme, y todoterreno.
No, no me ha dado por tunearlo y ponerle ruedas gigantes: se trata de un carro con tres ruedas, muy útil para subir las escaleras, y para andar por caminos abruptos. No es exactamente el de la foto, pero se asemeja mucho, salvando la diferencia en las ruedas.
Obviamente, esta solución no vale para todo ni todos: hay carros más grandes, más pequeños, más endebles, más robustos, sin contar con un evidente sentido del ridículo, y quien no haya pensado esto último, dispare la primera foto.
Como decía, mi experiencia ha sido más que satisfactoria: me he movido por terreno llano, abrupto (quien viva en Gran Canaria y se haya pateado el confital de cabo a rabo, sabrá lo que digo), y el carro ha aguantado como un campeón.
Particularmente, he probado con dos configuraciones:

- Mochila bandolera, trípode giottos 9361B con rótula (pesa), bolsa con escarpines.
- Mochila bandolera, dos pies de flash con varios paraguas, estuche con dos flashes y rótulas para los piés de flash y geles y pilas, paraguas (el día no pintaba muy fino).

Puede parecer poco, pero te reto, querido lector, a cargar con la primera configuración durante kilómetro y medio por terreno más que abrupto, y con la segunda, yendo de un lado a otro durante tres horas.
Ten presente una cosa: la mochila llevaba una cuerpo reflex con objetivo, dos-tres objetivos más, portafiltros, filtros, y cacharros varios. El peso era considerable.

Un consejo: si tienes problemas de espalda, y hablo desde la experiencia, no hagas locuras y agénciate un cacharro de estos, de verdad vale la pena.

¡Hasta la próxima!

jueves, 3 de noviembre de 2011

Entrevista en Prisma Canario

Hola querido lector,
hoy voy a salirme de la temática habitual, y me voy a permitir hacerme eco de una entrevista que me ha hecho el grupo fotográfico "Prisma Canario".
No soy dado a hablar de mi mismo, pero estas cosas no pasan a menudo, y las alegrías hay que compartirlas :)
El enlace: http://www.prismacanario.es/web/2011/11/03/cristo-bolanos/

Felicitar desde aquí a Carlos Martín Milán por sacar adelante este nuevo grupo, y por el éxito de la primera quedada.

martes, 20 de septiembre de 2011

Lottie Lemon: el robot oficial de arduino diseñado por jóvenes españoles

Hola querido lector,

revisando las noticias del día, me he tropezado con esta en el blog de Bricogeek: http://blog.bricogeek.com/noticias/arduino/nuevos-arduinos/
Concretamente, con una novedad inesperada: un robot oficial de arduino, diseñado para facilitar los primeros pasos en robótica, pero lo más llamativo es que ha sido desarrollado por los chicos de Complubot, quienes cuentan con diversos premios en concursos internacionales de robótica.
El vídeo de presentación del robot es altamente recomendable: http://www.youtube.com/watch?v=NAiXv0Nvt0E&feature=player_embedded

Y repito: un robot oficial, avalado por el equipo de arduino.
De hecho, si has visto el vídeo, sabrás que fueron los padres de arduino quienes ofrecieron a los chicos de Complubot realizar este proyecto.


Llena de orgullo, y resulta esperanzador ver como, con esfuerzo, tesón y dedicación, todo es posible, en contra de los altos cargos en educación más pesimistas, incapaces de valorar, invertir y fomentar en el talento local.

miércoles, 14 de septiembre de 2011

Exposición fotográfica

Hola querido lector,

hoy tengo el placer, y el honor, de comentar que este viernes, día 16 de Septiembre, y hasta el día 30, los compañeros de la asociación FotoGranCanaria, y un servidor, expondemos en el Centro Comercial Atlántico, sito en Vecindario, Gran Canaria.

El mismo viernes por la tarde estaremos a las 19:00 con familiares, amigos, y aquellas personas que quieran compartir un rato.

¡Espero que lo disfrutes!



martes, 13 de septiembre de 2011

Pilas y flashes, flashes y pilas

Hola querido lector,

hoy voy a hablarte de mi experiencia con un quebradero de cabeza: las pilas y los flashes externos.

Opciones.
Voy a analizar la elección de las pilas, tomando en cuenta estas variables:

- Coste: las pilas no son nada económicas, máxime si hablamos de las alcalinas.
- Autodescarga: todas las pilas tienden a descargarse, es algo inherente a su química, unas lo harán más lento que otras.
- Carga: las pilas alkalinas dan un voltaje más elevado que las recargables, pero tienen menos carga (se acaban antes).
- Tiempo de reciclado: es vital porque no puedes tener al persona esperando mucho tiempo, ni perder una buena foto por esperar a las pilas.
- Frecuencia de uso: no es lo mismo usar el flash un par de veces al mes, que varios días a la semana.

Una vez vistas, hay una base para poder valorar, y decidir.
Obviamente, la variable más importante es el coste: las pilas no son nada económicas, y si usamos el flash con asiduidad, es una locura.
La siguiente variable importante es la frecuencia de uso: si usamos las pilas varias veces a la semana, o más de una vez, hay que replantearse las cosas.

¿Y el resto de variables? Dependen del tipo de pilas: alkalinas o recargables.

Como he dicho, me baso en mi experiencia, luego voy a dividir las opciones en dos: pilas alkalinas y pilas recargables.

- Pilas alkalinas: muy potentes (1.5V nominales y 1.7V a plena carga) , baja autodescarga (se pueden dejar en el cajón), pero muy caras y con poca carga.
- Pilas recargables: menos potentes (1.2V nominales y 1.4V a plena carga), alta autodescarga (está diseñadas para un uso frecuente), son caras pero tienen mucha carga (duran más).

¿Cuál elegir? Bajo mi experiencia, insisto, depende del uso:

- Varias veces al mes: pilas recargables, sin duda.
- Uso medio (2-3 veces al mes como yo): te recomendaría pilas normales, las puedes conseguir en Ikea por 2-3 euros y vienen en un pack de 8. Reciclan rápido, duran bastante guardadas sin usar.
- Uso esporádico: directamente, compra las pilas cuando te hagan falta.

Sobre las pilas recargables.
No te ofusques: no necesitas un cargador super sofisticado y carísimo, pero tampoco te compres uno rápido, hazme caso, si ves uno, sal corriendo y no mires atrás.
¿Por qué? Porque cargan las pilas con un voltaje muy superior al que admiten, logrando una carga muy rápida, pero a la vez, calentándolas en exceso, lo cual redunda en un tiempo de vida cada vez más corto.
En las primeras recargas no lo notarás, salvo cuando saques las pilas y te quemen al tacto (verídico), y pasado un tiempo, notes que te duran cada vez menos.
Si quieres un buen cargador, este modelo es interesante: http://www.amazon.co.uk/TechnoLine-BC-700-intelligent-Battery-Charger/dp/B004X4OZYG/ref=pd_cp_ce_1, no es caro y puede mostrar la capacidad de cada pila, cargarlas por separado, protección por exceso de temperatura, etc...
Sobre las pilas, te recomiendo las eneloop: tienen buena fama (las usan muchos usuarios exigentes, vaya), muy poca autodescarga y puedes conseguirlas por ebay o amazon con facilidad a precios interesantes.
Un detalle importante: búscalas de mucho amperaje. Cuanto más amperaje, más carga, y más durarán mientras las uses. Normalmente vienen de 2400-2500 mA. Desconfía de marcas poco conocidas y amperajes superiores (3000, 3200, etc...), porque suelen tener una carga real muy inerior a la indicada.

En caso de que te estés preguntando por qué no recomiendo usar esas pilas directamente, dado el bajo perfil de autodescarga, te invito a revisar este cálculo basado en el uso que les doy:

Dos veces al mes, aproximadamente, uso el flash, agotando, en el peor de los casos, 4 pilas.
Si me decanto por usar pilas de ikea, cada paquete me durará 2 meses.
Esto implica un gasto de aproximadamente, 1.5€/mes en pilas.
En cambio, si me decanto por las pilas recargables, tengo que conseguir un cargador, salvo que tenga uno, y comprar las pilas.
En el peor caso, unos 35 euros por el cargador y 4 pilas.

Haz tú mismo las cuentas ...

Conclusión.
En fin, como todo en esta vida, hay necesidades y necesidades, la cuestión es analizar y saber elegir.
Sin duda, la opción ideal sería tener pilas recargables con un buen cargador, pero si eres tan despistado como yo, y haces un par de salidas al mes, te vas a volver loco comprobando qué pilas están cargadas, cargarlas el día antes, etc...

Espero haberte ayudado.

¡Hasta la próxima!

La obsesión por la foto perfecta

Un artículo muy interesante http://www.dzoom.org.es/noticia-9117.html enviado por el compañero Suso.
No hay que ofuscarse con la imagen perfecta, sólo disfrutar ... o acabas frustrado porque nada te parece suficientemente bueno.

domingo, 11 de septiembre de 2011

Reducir el consumo de arduino

Hola querido lector,
si recuerdas la última entrada, expuse el proyecto de hacer un robot autónomo, y, como adelanto de la próxima entrega, hoy voy a hablarte, de manera breve (lo prometo, no muy extenso), sobre cómo reducir el consumo de arduino, concretamente, de los microcontroladores ATMega328 que montan las placas Duemillanova/Uno.
¿Por qué reducir el consumo? Si tienes tu arduino conectado a una toma de corriente, o un puerto usb, no será relevante, por supuesto, pero si pretendes montar un sistema alimentado por baterías (li-po, pilas, etc), el consmo pasa a ser crítico.
Un ejemplo práctico: el robot autónomo que estoy diseñando, agota una batería li-po de 2A en, aproximadamente, 36 horas.
No resulta especialmente crítico si puedes recargar la batería manualmente, pero después de unas pocas recargas, te darán ganas de tirarlo por la ventana.
Hay una solución, y es analizar el consumo energético de los componentes implicados.
En esta ocasión, voy a acotar el problema, y centrarme en la propia placa Duemillanova.

¿Por qué consume tanto?
Porque la placa no integra sólo el microcontrolador, sino un regulador de tensión, conversor Serie-USB, leds, condensadores, resistencias, cristal (marca los pulsos de reloj para hacer funcionar el microcontrolador a 16Mhz), diodos, etc.
Si juntamos todos los consumos, se dispara.
No cabe duda de que es una placa muy cómoda y sencilla de usar: enchufar y listo, si nos equivocamos con algún cable, los fusibles nos protegen, y l regulador de tensión se encarga de hacer el trabajo sucio si conectamos el arduino a un transformador.
Maravilloso, ¿verdad?
Pero es fácil perder de vista una cuestión clave: arduino se diseñó como una plataforma para facilitar el acceso a la computación física por parte de artistas, aficionados, etc... y ello supone un coste.
Si tienes curiosidad, puedes mirar el esquema de una placa duemillanova en http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf
Te adelanto que podemos reducir el esquema, y dejar sólo el microcontrolador.


Reducir el consumo
Antes de entrar en materia, y como ya dije, facilitar el acceso a la computación física tiene un coste, aunque por ahora, voy a centrarme en lo relativo al consumo eléctrico.

LO QUE VOY A COMENTAR A CONTINUACIÓN SE BASA EN MI EXPERIENCIA PERSONAL.
NO ME HAGO RESPONSABLE DE POSIBLES DAÑOS O CONTRATIEMPOS OCASIONADOS O DERIVADOS POR LA MANIPULACIÓN DE CUALQUIER COMPONENTE

El consumo de una placa duemillanova, como te dije, viene dado por la cantidad de componentes electrónicos que monta.
Si sabes un poquito de electrónica, reconocerás la función que desarrolla cada uno, pero si apenas tienes nociones, o no sabes nada, te hago un breve resumen.
Para alimentar el arduino a 16 Mhz, hace falta una fuente de alimentación que suministre 5V de manera estable (el puerto USB lo hace perfectamente), y según la cantidad de componentes que montemos en el circuito (sensores, leds, etc...), el consumo aumenta (necesitamos más amperios).
¿Cuál es el problema? El regulador de tensión, el adaptador USB-Serie, los leds, etc... consumen corriente, aunque no estén en funcionamiento.
Ojo, que depende de cada componente el pico de consumo: el regulador de tensión consumirá más cuando se le enchufe a un transformador, pero mientras, tiene un consumo mínimo.
Esta situación desencadena en alimentar una serie de componentes sin que tengan uso, siempre desde el punto de vista de un sistema autónomo alimentado por baterías.
Para ilustrar desde un punto de vista práctico el consumo, he montado el siguiente circuito:

Un circuito muy simple: arduino, led, alimentación (uso un portapilas con elevador de tensión para facilitar las medidas de corriente con el polímetro).
El código fuente lo tienes en los sketchs de ejemplo: Basic -> Blink
Midiendo con el polímetro, arroja un consumo de 29 mA.

Puede parecer poco, pero hagamos unas cuentas rápidas usando una batería de 2A:

(2000mA/Hora)/29mA = 69 horas

Es decir: tenemos una batería que suministra 2 amperios/hora (simplificando), y un circuito que demanda 29 miliamperios.
Convertimos amperios en miliamperios, dividimos y obtenemos un tiempo de vida aproximado de 69 horas.
Y digo aproximado, porque según se descargue la batería, el voltaje irá en descenso también (será más o menos lineal la caída de tensión), hasta no suministrar más corriente.
No está mal, ¿verdad? Podemos tener un led parpadeando durante, aproximadamente, 2 días y medio.
¡Pero se puede mejorar!
Antes comenté que la placa duemillanova funciona a 16 Mhz, una velocidad más que adecuada (todavía recuerdo mi i286 a 16 Mhz...), pero no necesariamente fija.
Si echas un ojo a las diferentes versiones de arduino, verás que hay placas que corren a 8 Mhz.
¿Por qué reducir la frecuencia del reloj e ir más lento? Porque consume menos.
Piensa: si procesas menos instrucciones por segundo, necesitas menos electricidad.
Es como el cuerpo humano: no es lo mismo andar, que ir corriendo, ¿verdad?
Habrán casos en los que se pueda sacrificar la capacidad de proceso (estamos basándonos en los ciclos de reloj), con tal de ganar batería.
Pero vayamos un paso más allá: como recordarás, el consumo de los componentes de la placa es constante, y créeme, elevado, para lo que es.
Vamos a hacer lo siguiente: pongamos el microcontrolador en una protoboard, sin nada más.
No voy a entrar en detalles, porque es una cuestión bien documentada en la página oficial: http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Verás varias opciones: me voy a basar en Minimal Circuit (Eliminating the External Clock)
Aunque es un proceso muy bien detallado, NO LO HAGAS SI NO ESTÁS SEGURO.

DETALLE: el arduino que va a recibir el nuevo bootloader, EL QUE ESTÁ EN LA PROTOBOARD, debe tener un cristal de 16Mhz o no será capaz de cargar el código. NO hará falta de nuevo cuando hayas cargado el nuevo bootloader. Es un pequeño error en la documentación oficial.

El nuevo montaje queda asi:


Si te fijas, no hay cristal para microcontrolador, ni electrónica adicional.
Esto es muy peliagudo: si enchufamos mal la alimentación, podemos romper los componentes.
Y te refresco la memoria: estoy usando un portapilas con elevador de tensión, no pilas sin más.
Una vez más, vamos a medir la corriente consumida: 11 mA.
Hemos reducido el consumo en 18mA, no parece mucho, pero hablamos de más del 50%, una magnitud respetable, ¿verdad?

Y aún podemos ir un paso más allá reduciendo la frecuencia hasta 1 Mhz.

Lento pero seguro.
Una característica muy interesante de prescindir del cristal externo, es poder reducir la frecuencia del microcontrolador: 8Mhz es una velocidad interesante, pero dependiendo de las necesidades, podemos bajar hasta 1 Mhz.
¿Por qué no usar siempre esta frecuencia? Según la capacidad de cálculo que necesites, puede ser una velocidad muy muy lenta, pero para casos muy simples, puede ser más que suficiente.
Hay dos maneras de hacerlo: modificar el bootloader (complejo y requiere un grabador), o modificar el reloj del sistema dinamicamente. Si tienes un portátil, te sonará aunque sea de oídas: se modifica la frecuencia del procesador según demanda, economizando en batería.
Aquí vamos a hacerlo mismo, pero con un microcontrolador, claro.
Si quieres profundizar en esta cuestión, puedes leerte este post del foro de arduino: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163418637/all

En esencia, la manera de modificar la frecuencia del reloj en un microcontrolador ATMega328, es insertar este código fuente en el programa allá donde querramos modificar la frecuencia:

CLKPR = (1<<CLKPCE);
CLKPR = B00000011;

La primera línea activa el escalado dinámico, y la segunda, indica la cifra por la que se divide el reloj interno (extraído de http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1163418637/all):

0000 - 1
0001 - 2
0010 - 4
0011 - 8
0100 - 16
0101 - 32
0110 - 64
0111 - 128
1000 - 256
Es decir: vamos a dividir por 8 la frecuencia interna del reloj, quedando en 1Mhz. OJO: no se puede incrementar la frecuencia, sólo dividirla. Para el caso que estamos manejado, con el parpadeo de un led, vamos a insertar este código en la función setup, antes de ejecutar nada. Tranquilo: puedes usar este código sin problema, no afecta al microcontrolador de manera permanente, es inocuo, y sólo funciona mientras funcione el programa en ejecución. Bien, cargamos el programa, ejecutamos y ... el led parpadea muy despacio, se mantiene mucho tiempo encendido. ¿Qué es esto?¿Se ha roto algo? Calma, está todo bien.
Como sabrás, hemos reducido la frecuencia del reloj, por lo cual, se ralentizan todas las funciones de entrada/salida, delay, etc...
Esto se deriva de las librerías de arduino: para facilitarnos el trabajo, encapsulan las llamadas al sistema, cálculos, etc ... dejando en nuestras manos un API muy sencillo.
Y me reitero: todo tiene un coste: en este caso, no poder controlar, aparentemente, la duración de dichas llamadas cuando se modifica la frecuencia del sistema.
¿O sí? Claro que sí.
Como dije, las librerías de arduino encapsulan la parte más compleja, y entre las abstracciones, está la de adecuar la velocidad de las llamadas de entrada/salida, y delay, a la frecuencia del sistema.
Esta frecuencia ha de definirse al compilar el código fuente, y si no indicamos al compilador que la nueva frecuencia es 1Mhz, tendremos unas llamadas que funcionan 8 veces más lentas (hemos pasado de 8Mhz a 1Mhz).
Cuidado con este baile de frecuencias: en este ejemplo tan simple, podemos ajustar la frecuencia a 8Mhz o 1Mhz, pero debes tener claro en qué momentos te conviene modificarla dinamicamente, y en qué va a afectar, o te volverás loco solucionando errores.
Hecha la aclaración, veamos donde indicar la nueva frecuencia del reloj del microcontrolador.
Editamos el fichero breadboard/breadboards.txt (recuerda leer el enlace donde se explica el proceso para usar un arduino en una protobard sin necesidad de cristal externo), y cambiamos la línea 18:

atmega328bb.build.f_cpu=8000000L


pasa a ser:
atmega328bb.build.f_cpu=1000000L


Compilamos, cargamos el código ... ¡et voilá! El led parpadea de manera correcta.
¿Y el consumo de corriente? ¿Ha variado? ¡Sí, y mucho! Ahora consume 5mA, un 50% menos que funcionando a 8Mhz, y un 17% menos que la placa duemillanova a 16 Mhz.
Impresionante, ¿verdad?

Aún se puede reducir más el consumo poniendo el microcontrolador en modo de reposo (sleep), aunque este modo implica no ejecutar ninguna instrucción (igual a cuando dejamos la tele en standby o el portátil durmiendo). Dejo para una próxima entrega la implementación y el análisis de consumos.
En resumen, para el ejemplo de parpadear un led:

Duemillanove 16Mhz: 29 mA
Protoboard 8Mhz: 11 mA
Protoboard 1Mhz: 5 mA

Me reitero en lo dicho: no hay una solución universal, todo depende de las necesidades que tengamos.
No es lo mismo manejar una matriz de leds, haciendo transiciones, o un motor de corriente contínua con las salidas PWM, que recopilar información de sensores a intervalos de tiempo, sin contar con la complejidad del código (más instrucciones, más ciclos y más tiempo procesando).
Hasta aquí esta entrega, espero que te haya resultado útil.
¡Hasta la próxima!

martes, 6 de septiembre de 2011

Facebook y los cambios constantes

Hola querido lector,

hoy me voy a permitir el lujo de hablar sobre esta gran red social, y digo gran, por el número de usuarios y la comunidad, porque en otros aspectos, bajo mi experiencia como usuario y desarrollador, cada vez languidece más.
Por una parte, hace pocos días advertí un cambio a la hora de visualizar imágenes: en vez de mostrar un popup (cuadro emergente) con fondo negro, como venía siendo habitual, se muestra uno con fondo blanco.
¿Qué relevancia tiene? Pues mucha: el fondo blanco distrae, el enlace para cerrarlo no es suficientemente visible, las flechas de navegación tampoco, y no favorece tampoco a las imágenes.
Si no, está el ejemplo de flickr: cuando realizó el último cambio de interfaz, añadió la posibilidad de ver las fotos sobre un fondo negro, y vaya si realza la imagen y ayuda a aislarla del entorno, porque, en definitiva, se trata de eso: centrar la atención en la imagen, sin distracciones, y realzarla.
Y esto sin hablar con los cambios en la disposición de la barra de chat, cada vez menos accesible.
Pero lo más molesto, pero realmente molesto, son los cambios en el API, y la cantidad de agujeros en la misma, algo que, personalmente, me pone nervioso: no sólo tienes que atender los requisitos de un desarrollo, sino encima, pelearte con un API mutante, que cambia sin previo aviso y no tiene el suficiente soporte, como para migrar.
Está muy bien mejorar, de hecho, debería ser una exigencia, tanto personal como profesional: la constante mejora y la excelencia, pero no a costa de dejar atrás a usuarios y desarrolladores.
Y es que nada frustra más que pegarte horas y horas indagando cómo hacer algo a base de atar cabos sueltos, buscando ejemplos (no todos usamos PHP) y haciéndolos funcionar.

Un ejemplo práctico: se me dio la necesidad de publicar en el muro de una página de Facebook, desde una aplicación en Ruby On Rails.
¿Problemas? A punta pala, como se dice en mi pueblo.
El problema radica en la arquitectura del API, y me corrija alguien si me equivoco: todas las publicaciones se hacen usando como identificador el ID de una aplicación, y un valor denominado ACCESS TOKEN, el cuál está ligado al objeto donde quieres publicar (página, aplicación, etc...).
Visto así, parece fácil, ¿cierto? Pero aún queda otro problema: ¿cómo obtienes el valor ACCESS TOKEN?
Para una aplicación es trivial: en la configuración de la misma, te viene dado, pero si quieres usar el muro de una aplicación, la cosa cambia enormemente.
A grandes rasgos: hay ejemplos, y se agradecen que existan, en stack overflow, pero pueden funcionarte (ves la ventana de Facebook pidiendo autorización para dar permisos de una aplicación sobre tu página y luego obtienes el ACCESS TOKEN), o no (obtienes el ACCESS TOKEN).
¿Solución? Usar el explorador del Graph API, poner el ID de la página para ver la información de la misma (al lado de donde pone GET), pulsar sobre "Get Access Token", ¡et voilá!: tienes el cuadro de diálogo pidiendo los permisos.
Asignas los permisos (publish_stream, manage_pages, offline_access), obtienes el ACCESS TOKEN y ¡¡maravilla!! tu aplicación postea en el muro de la página.

En esta página tienes un ejemplo de uso: http://stackoverflow.com/questions/4883699/easy-way-of-posting-on-facebook-page-not-a-profile-but-a-fanpage

Y aquí termina esta entrada, no sin antes aclarar que no comento con acritud, pero sí con ánimo de animar y mejorar una plataforma puntera, y facilitar la vida a quienes desean colaborar y crear alrededor de.

¡¡Hasta la próxima!!

viernes, 2 de septiembre de 2011

Robot autónomo con arduino

Hola querido lector,

tras un largo período sin publicar, vuelvo a retomar este pequeño rincón virtual, armado de nuevos proyectos y técnicas por experimentar.
¿Qué mejor manera de celebrar la vuelta que documentando un proyecto basado en arduino?
A grandes rasgos, consiste en desarrollar un robot capaz de recabar información sobre su entorno (temperatura, humedad, etc...), que no requiera intervención humana (autónomo) y tolerante a fallos.
Visto asi, el proyecto suena muy ambicioso, pero nada más allá de la realidad: en vez de comenzar desde cero y lidiar con mil y un problemas, voy a documentar a lo largo de varias entregas, el proceso, yendo desde el robot más básico (avanza, gira, avanza, gira), hasta un sistema tan autónomo como sea posible.
Y digo bien: tan autónomo como sea posible.
No es mi intención analizar un problema que podría dar para varias tesis doctorales, sino realizar un aprendizaje gradual, y por supuesto, compartirlo.
Huelga decir que estoy abierto a sugerencias, mejoras y críticas constructivas. Animo a cualquier persona que esté interesada, a participar activamente.
Dicho esto, aquí está el enlace al primer documento con los primeros pasos, y nunca mejor dicho: el robot empezará en una terraza semitechada, huyendo del sol con un algoritmo muy simple.
¡Hasta la próxima!

miércoles, 5 de enero de 2011

Los reyes magos son...

Lo vi en facebook, posteado por Lola Caraiba, y no puedo evitar hacerme eco de este hermoso relato.

Realmente la magia y la realidad pueden coexistir, sólo hay que ser sutiles...

Los Reyes Magos son realmente los padres … descubre por qué.

Apenas su padre se había sentado al llegar a casa, dispuesto a escucharle como todos los días lo que su hija le contaba de sus actividades en el colegio, cuando ésta en voz algo baja, como con miedo, le dijo:

- ¿Papa?

- Sí, hija, cuéntame

- Oye, quiero… que me digas la verdad

- Claro, hija. Siempre te la digo -respondió el padre un poco sorprendido

- Es que… -titubeó Cristina

- Dime, hija, dime.

- Papá, ¿existen los Reyes Magos?

El padre de Cristina se quedó mudo, miró a su mujer, intentando descubrir el origen de aquella pregunta, pero sólo pudo ver un rostro tan sorprendido como el suyo que le miraba igualmente.

- Las niñas dicen que son los padres. ¿Es verdad?

La nueva pregunta de Cristina le obligó a volver la mirada hacia la niña y tragando saliva le dijo:

- ¿Y tú qué crees, hija?

- Yo no se, papá: que sí y que no. Por un lado me parece que sí que existen porque tú no me engañas; pero, como las niñas dicen eso.

- Mira, hija, efectivamente son los padres los que ponen los regalos … pero…

- ¿Entonces es verdad? -cortó la niña con los ojos humedecidos-. ¡Me habéis engañado!

- No, mira, nunca te hemos engañado porque los Reyes Magos sí que existen –respondió el padre cogiendo con sus dos manos la cara de Cristina .

- Entonces no lo entiendo. papá.

- Siéntate, cariño, y escucha esta historia que te voy a contar porque ya ha llegado la hora de que puedas comprenderla -dijo el padre, mientras señalaba con la mano el asiento a su lado.

Cristina se sentó entre sus padres ansiosa de escuchar cualquier cosa que le sacase de su duda, y su padre se dispuso a narrar lo que para él debió de ser la verdadera historia de los Reyes Magos:

-Cuando el Niño Dios nació, tres Reyes que venían de Oriente guiados por una gran estrella se acercaron al Portal para adorarle. Le llevaron regalos en prueba de amor y respeto, y el Niño se puso tan contento y parecía tan feliz que el más anciano de los Reyes, Melchor, dijo:

- ¡Es maravilloso ver tan feliz a un niño! Deberíamos llevar regalos a todos los niños del mundo y ver lo felices que serían.

- ¡Oh, sí! -exclamó Gaspar-. Es una buena idea, pero es muy difícil de hacer. No seremos capaces de poder llevar regalos a tantos millones de niños como hay en el mundo.

Baltasar, el tercero de los Reyes, que estaba escuchando a sus dos compañeros con cara de alegría, comentó:

- Es verdad que sería fantástico, pero Gaspar tiene razón y, aunque somos magos, ya somos ancianos y nos resultaría muy difícil poder recorrer el mundo entero entregando regalos a todos los niños. Pero sería tan bonito.

Los tres Reyes se pusieron muy tristes al pensar que no podrían realizar su deseo. Y el Niño Jesús, que desde su pobre cunita parecía escucharles muy atento, sonrió y la voz de Dios se escuchó en el Portal:

- Sois muy buenos, queridos Reyes, y os agradezco vuestros regalos. Voy a ayudaros a realizar vuestro hermoso deseo. Decidme: ¿qué necesitáis para poder llevar regalos a todos los niños?

- ¡Oh, Señor! -dijeron los tres Reyes postrándose de rodillas. Necesitaríamos millones y millones de pajes, casi uno para cada niño que pudieran llevar al mismo tiempo a cada casa nuestros regalos, pero no podemos tener tantos pajes., no existen tantos.

- No os preocupéis por eso -dijo Dios-. Yo os voy a dar, no uno sino dos pajes para cada niño que hay en el mundo.

- ¡Sería fantástico! Pero, ¿cómo es posible? -dijeron a la vez los tres Reyes con cara de sorpresa y admiración.

- Decidme, ¿no es verdad que los pajes que os gustaría tener deben querer mucho a los niños? -preguntó Dios.

- Sí, claro, eso es fundamental – asistieron los tres Reyes.

- Y, ¿verdad que esos pajes deberían conocer muy bien los deseos de los niños?

- Sí, sí. Eso es lo que exigiríamos a un paje -respondieron cada vez más

entusiasmados los tres.

- Pues decidme, queridos Reyes: ¿hay alguien que quiera más a los niños y los

conozca mejor que sus propios padres?

Los tres Reyes se miraron asintiendo y empezando a comprender lo que Dios estaba planeando, cuando la voz de nuevo se volvió a oír:

- Puesto que así lo habéis querido y para que en nombre de los Tres Reyes de Oriente todos los niños del mundo reciban algunos regalos, YO, ordeno que en Navidad, conmemorando estos momentos, todos los padres se conviertan en vuestros pajes, y que en vuestro nombre, y de vuestra parte regalen a sus hijos los regalos que deseen. También ordeno que, mientras los niños sean pequeños, la

entrega de regalos se haga como si la hicieran los propios Reyes Magos. Pero cuando los niños sean suficientemente mayores para entender esto, los padres les contarán esta historia y a partir de entonces, en todas las Navidades, los niños harán también regalos a sus padres en prueba de cariño. Y, alrededor del Belén,

recordarán que gracias a los Tres Reyes Magos todos son más felices.

Cuando el padre de Cristina hubo terminado de contar esta historia, la niña se levantó y dando un beso a sus padres dijo:

- Ahora sí que lo entiendo todo papá. Y estoy muy contenta de saber que me queréis y que no me habéis engañado.

Y corriendo, se dirigió a su cuarto, regresando con su hucha en la mano mientras decía:

- No sé si tendré bastante para compraros algún regalo, pero para el año que viene ya guardaré más dinero.

Y todos se abrazaron mientras, a buen seguro, desde el Cielo, tres Reyes Magos contemplaban la escena tremendamente satisfechos

Me hago eco a través de Lola Caraiba, con permiso... es la historia más bonita que podrían contar sobre los reyes:

Los Reyes Magos son realmente los padres … descubre por qué.


Apenas su padre se había sentado al llegar a casa, dispuesto a escucharle como todos los días lo que su hija le contaba de sus actividades en el colegio, cuando ésta en voz algo baja, como con miedo, le dijo:


- ¿Papa?- Sí, hija, cuéntame- Oye, quiero… que me digas la verdad- Claro, hija. Siempre te la digo -respondió el padre un poco sorprendido- Es que… -titubeó Cristina- Dime, hija, dime.- Papá, ¿existen los Reyes Magos?


El padre de Cristina se quedó mudo, miró a su mujer, intentando descubrir el origen de aquella pregunta, pero sólo pudo ver un rostro tan sorprendido como el suyo que le miraba igualmente.


- Las niñas dicen que son los padres. ¿Es verdad?


La nueva pregunta de Cristina le obligó a volver la mirada hacia la niña y tragando saliva le dijo:


- ¿Y tú qué crees, hija?- Yo no se, papá: que sí y que no. Por un lado me parece que sí que existen porque tú no me engañas; pero, como las niñas dicen eso.- Mira, hija, efectivamente son los padres los que ponen los regalos … pero…- ¿Entonces es verdad? -cortó la niña con los ojos humedecidos-. ¡Me habéis engañado!- No, mira, nunca te hemos engañado porque los Reyes Magos sí que existen –respondió el padre cogiendo con sus dos manos la cara de Cristina .- Entonces no lo entiendo. papá.- Siéntate, cariño, y escucha esta historia que te voy a contar porque ya ha llegado la hora de que puedas comprenderla -dijo el padre, mientras señalaba con la mano el asiento a su lado.


Cristina se sentó entre sus padres ansiosa de escuchar cualquier cosa que le sacase de su duda, y su padre se dispuso a narrar lo que para él debió de ser la verdadera historia de los Reyes Magos:


-Cuando el Niño Dios nació, tres Reyes que venían de Oriente guiados por una gran estrella se acercaron al Portal para adorarle. Le llevaron regalos en prueba de amor y respeto, y el Niño se puso tan contento y parecía tan feliz que el más anciano de los Reyes, Melchor, dijo:


- ¡Es maravilloso ver tan feliz a un niño! Deberíamos llevar regalos a todos los niños del mundo y ver lo felices que serían.


- ¡Oh, sí! -exclamó Gaspar-. Es una buena idea, pero es muy difícil de hacer. No seremos capaces de poder llevar regalos a tantos millones de niños como hay en el mundo.


Baltasar, el tercero de los Reyes, que estaba escuchando a sus dos compañeros con cara de alegría, comentó:


- Es verdad que sería fantástico, pero Gaspar tiene razón y, aunque somos magos, ya somos ancianos y nos resultaría muy difícil poder recorrer el mundo entero entregando regalos a todos los niños. Pero sería tan bonito.Los tres Reyes se pusieron muy tristes al pensar que no podrían realizar su deseo. Y el Niño Jesús, que desde su pobre cunita parecía escucharles muy atento, sonrió y la voz de Dios se escuchó en el Portal:


- Sois muy buenos, queridos Reyes, y os agradezco vuestros regalos. Voy a ayudaros a realizar vuestro hermoso deseo. Decidme: ¿qué necesitáis para poder llevar regalos a todos los niños?


- ¡Oh, Señor! -dijeron los tres Reyes postrándose de rodillas. Necesitaríamos millones y millones de pajes, casi uno para cada niño que pudieran llevar al mismo tiempo a cada casa nuestros regalos, pero no podemos tener tantos pajes., no existen tantos.


- No os preocupéis por eso -dijo Dios-. Yo os voy a dar, no uno sino dos pajes para cada niño que hay en el mundo.


- ¡Sería fantástico! Pero, ¿cómo es posible? -dijeron a la vez los tres Reyes con cara de sorpresa y admiración.


- Decidme, ¿no es verdad que los pajes que os gustaría tener deben querer mucho a los niños? -preguntó Dios.


- Sí, claro, eso es fundamental – asistieron los tres Reyes.


- Y, ¿verdad que esos pajes deberían conocer muy bien los deseos de los niños?


- Sí, sí. Eso es lo que exigiríamos a un paje -respondieron cada vez másentusiasmados los tres.


- Pues decidme, queridos Reyes: ¿hay alguien que quiera más a los niños y losconozca mejor que sus propios padres?Los tres Reyes se miraron asintiendo y empezando a comprender lo que Dios estaba planeando, cuando la voz de nuevo se volvió a oír:


- Puesto que así lo habéis querido y para que en nombre de los Tres Reyes de Oriente todos los niños del mundo reciban algunos regalos, YO, ordeno que en Navidad, conmemorando estos momentos, todos los padres se conviertan en vuestros pajes, y que en vuestro nombre, y de vuestra parte regalen a sus hijos los regalos que deseen. También ordeno que, mientras los niños sean pequeños, laentrega de regalos se haga como si la hicieran los propios Reyes Magos. Pero cuando los niños sean suficientemente mayores para entender esto, los padres les contarán esta historia y a partir de entonces, en todas las Navidades, los niños harán también regalos a sus padres en prueba de cariño. Y, alrededor del Belén,recordarán que gracias a los Tres Reyes Magos todos son más felices.Cuando el padre de Cristina hubo terminado de contar esta historia, la niña se levantó y dando un beso a sus padres dijo:


- Ahora sí que lo entiendo todo papá. Y estoy muy contenta de saber que me queréis y que no me habéis engañado.


Y corriendo, se dirigió a su cuarto, regresando con su hucha en la mano mientras decía:


- No sé si tendré bastante para compraros algún regalo, pero para el año que viene ya guardaré más dinero.


Y todos se abrazaron mientras, a buen seguro, desde el Cielo, tres Reyes Magos contemplaban la escena tremendamente satisfechos