Desde que escribí el artículo del Arduino controlando el riego en el patio de casa se ha convertido en uno de los apuntes más visitados, y de los que más preguntas y confusión han generado, especialmente en lo referente a servir los datos de nuestra estación Arduino en una página web y desde ella dar órdenes a la placa.
Voy a tratar de explicar como y porqué lo tengo yo instalado sin enrollarme demasiado.

Página de control ArduinoPágina de control Arduino

En la imagen una captura de pantalla de la página de control de mi CCCP (Centro de Control Centralizado Patiota, un poco de pitorreo siempre viene bien) desde donde puedo consultar el estado del patio y dar algunas órdenes (regar, pulverizar, alimentar peces y encender luz del patio – Interruptor 3).
Esta página contiene NO está generada por Arduino si no por mi propio ordenador (servidor web GNU-Linux) que es el que sirve los datos, realiza el control de visitas/autentificación, genera archivos de registro/log y estadísticas (temperatura, humedad, etc… ), compone la página y todo su código correspondiente (css/javascript/php), y permite dar órdenes sencillas al Arduino (p. ejem: riega 10 segundos) pulsando un botón pero siempre después de realizar comprobaciones de autentificación y funcionamiento (p. ejem: antes de ordenar a Arduino que riegue hay que comprobar que no está ya regando, o pulverizando o que por error no le hemos dicho “riega durante 3 días”).


Inconvenientes

Todo este trabajo si bien podría (teóricamente, aunque esto no es estrictamente cierto) hacerlo Arduino es del todo desaconsejable por varios motivos:
1/ Arduino carece de la potencia necesaria para atender un volumen bajo-muy bajo de visitas. Si trabajáis con la tarjeta Ethernet notaréis en seguida como sube la temperatura de esta en cuanto le solicitáis que haga algo muy sencillo.
2/ La estabilidad de Arduino cuando tienen que atender muchas visitas se resiente y la placa se resetea si el volumen de trabajo aumenta.
3/ Hacer que Arduino sirva todo el código HTML de la página de control, además del enorme volumen de trabajo que le supondría sería impracticable cada vez que quisiéramos realizar un cambio mínimo en la página. Imagina tener que cambiar algún detalle del código HTML tener que descolgar el Arduino del patio, conectarlo a tu ordenador, subir a la placa el nuevo código, probarlo, volver la placa a su sitio. Una verdadera locura.

Sigue leyendo…

Jueves, 28 de mayo de 2015 (Hace más de 2 semanas)

Llevaba tiempo queriendo instalar un interruptor así y me ha costado lo mio, porque a mis nulos conocimientos de electrónica se suma la poca documentación que he encontrado sobre estos dispositivos usados en Arduino, pero bueno, el que la sigue la consigue y probando conseguí hacerlo funcionar.
Estas son las tripas de mi sensor de movimiento para Arduino (otro día pongo el esquema y explico como funciona) al que le acabo de añadir un micro-interruptor con dos posiciones (esa cosilla azul-celeste del centro).

Tripas del sensorTripas del sensor

La idea es la siguiente: una vez que me llevo el sensor de movimiento al monte poder alternar el funcionamiento del dispositivo entre varias opciones preseleccionadas y predefinidas en el código Arduino sin tener (como hasta ahora) que andar modificando y recargando el código en el ordenador antes de salir de casa de acuerdo a lo que fuese hacer en ese uso. Con este interruptor de dos posiciones se obtienen cuatro combinaciones posibles: interruptores ON/ON, ON/OFF, OFF/ON, OFF/OFF.
De este modo podemos precargar nuestro Arduino con cuatro modos de funcionamiento y alternar entre ellos en cualquier sitio y momento tan solo cambiando un interruptor (eso sí, muy pequeño, hace falta un boli para alcanzarlo).
El esquema es muy sencillo, solo necesitáis 1 resistencia de 1kΩ por cada interruptor (en el esquema he usado dos piezas cuando en realidad es una pieza+dos interruptores, para el caso esto es indiferente).

Esquema interruptorEsquema interruptor

Con esto instalado bastaría el código que lee los interruptores al inicio sería :int pinConmutadorA = 6;
int pinConmutadorB = 5;
void setup() {
int conmutadorAVal = digitalRead(pinConmutadorA);
int conmutadorBVal = digitalRead(pinConmutadorB);
if (conmutadorAVal == 1 && conmutadorBVal == 1) { int modoConmutadores = 1;}
if (conmutadorAVal == 1 && conmutadorBVal == 0) { int modoConmutadores = 2;}
if (conmutadorAVal == 0 && conmutadorBVal == 1) { int modoConmutadores = 3;}
if (conmutadorAVal == 0 && conmutadorBVal == 0) { int modoConmutadores = 4;}
}

Los interruptores los compré en Electrónica Embajadores a 0,6 €.

Jueves, 21 de mayo de 2015 (Hace más de 1 mes)

De vez en cuando grabo algún vídeo ó secuencia de fotos del que me gusta extraer fotogramas y crear/componer un GIF animado, muchos los he ido colgando por aquí. Un GIF animado es una pieza gráfica especial, singular, a medio camino entre la fotografía y el vídeo, sin la perfección y nitidez de una ni la toda la información visual/sonora del otro pero con un espacio propio dentro del cual funciona mejor y supera a ambos en simpleza y capacidad visual.
Llevaba tiempo queriendo integrarlos en el blog. Como galería independiente me parecía algo excesivo así es que finalmente he optado por modificar el código que gestiona la galería de Fotografías (alojadas en Flickr) para que integre ahora además los GIFS animados que alojados en Picasaweb. En adelante, la galería de fotos estará un poco más animada.

papamoscas.gifpapamoscas.gif

Un GIF es un formato de archivo de imagen reducido a 256 colores que contiene uno o varios fotogramas. Estos fotogramas son interpretados de forma nativa por cualquier navegador web y reproducidos de forma cíclica (normalmente, no tiene porqué ser así) sin necesidad de aplicaciones extras como pueden necesitar los archivos de vídeo.
Para realizar un GIF animado hay cienes y cienes de herramientas. En GNU/Linux podéis hacer un GIF animado directamente desde un vídeo con FFMPEG o MENCODER, pero para hacer un buen GIF animado, cíclico y optimizado en color y peso lo mejor es crearlos a partir de una pila de imágenes con IMAGEMAGICK.

Sigue leyendo…

Jueves, 7 de mayo de 2015 (Hace más de 1 mes)

La plastilina tuvo su momento de auge en las escuelas de bachiller hace muchos años, era EL ELEMENTO principal de la clase de manualidades. Después ha decaído mucho hasta quedar como algo antiguo y obsoleto. O quizás es sólo una mala impresión por mi parte, la verdad es que no entro a un aula de manualidades desde hace … joder, como pasa el tiempo.

El caso es que es un producto extremadamente útil y que no debería faltar en la mochila de campo del fotógrafo naturalista. ¿Para qué sirve? pues para todo.
Con una pelota buena de plastilina sujetas un flash en cualquier sitio, pegas un cable donde no se vea, hace funciones de cinta aislante, tapas un agujero, sujetas una flor del viento, sostienes una rama o como en la imagen te fabricas un parasol para el móvil, se adhiere a casi cualquier superficie, es extremadamente fácil de quitar y poner, con un simple paño quitas cualquier huella/resto.

Parasol plastilinaParasol plastilina

La diferencia entre la imagen de arriba y la de enmedio está en la imagen de abajo, un sencillo parasol, auto-adherente y adaptable a cualquier condición.

Sábado, 2 de mayo de 2015 (Hace más de 1 mes)

Bueno, esto es una pequeña ayuda de escritorio especialmente útil cuando tienes que manejar decenas ó centenas de vídeos en batería.
Periódicamente salgo al monte a recoger los vídeos/imágenes de las cámaras de fototrampeo que tengo repartidas. Depende del tiempo que pase entre visitas, de la configuración de las cámaras, de lo animado que esté el monte, etc.. pero habitualmente me suelo traer de vuelta en el teléfono tranquilamente 200 o 300 vídeos de 10-30 segundos. Toca visionarlos tranquilamente en el ordenador, por si se me hubiese escapado algo y clasificar/desechar el material. Normalmente descarto casi el 70%-80% de los vídeos que se graban.
La rutina de trabajo sería “por defecto” algo como: abrir la carpeta contenedora, reproducirlos en batería, memorizar nombre, volver a la carpeta, borrar, continuar con la lista de reproducción. Gracias a MPLAYER podemos hacer esto tan fácil como: reproducir lista de vídeos, borrar vídeo, pasar al siguiente.

MPLAYER, es un reproductor de vídeos/audio que dispone en su configuración de un modo esclavo que es tremendamente útil. Este modo esclavo (slave) permite a otras aplicaciones/scripts interactuar con la reproducción en curso de MPLAYER. El reproductor “escucha” este archivo y ejecuta los comandos recibidos tal y como haría desde su propia interfaz. Esto permitiría por ejemplo pausar/silenciar una película cuando se reciba un correo electrónico, o como en nuestro caso borrar el archivo que se esté reproduciendo tan solo como pulsar la tecla DEL.

Activar modo esclavo

Lo primero es activar el modo esclavo en MPLAYER. Para esto editamos (o creamos si no existe) el archivo config ubicado en la carpeta local de Mplayer ( ~/.mplayer/config ).
Añadimos las siguientes dos líneas: slave=1
input=file=/home/tu-usuario/.mplayer/tuberia

A continuación abrimos un terminal y creamos la tuberíamkfifo /home/tu-usuario/.mplayer/tuberia

Con esto basta para que cada vez que se inicie MPLAYER permanezca “a la escucha” de este archivo. Ahora durante la ejecución de una película podríamos pararla escribiendo en un terminal:echo "pause" > /home/tu-usuario/.mplayer/tuberia

Asignar función a la tecla

Edita el archivo de MPLAYER acceso rápidos de teclado ( /home/tu-usuario/.mplayer/input.conf ) y añade la línea:DEL run /home/tu-usuario/.mplayer/borrarActual

Script de eliminación de archivo en reproducción

Ahora creas el script que se ejecutará cada vez que pulsemos la tecla DEL durante la reproducción de un video/audio en MPLAYER, crea un archivo de texto en /home/tu-usuario/.mplayer/borrarActual con el siguiente contenido:#!/bin/sh
mplayerPID=$(pidof mplayer)
if [ "$(echo ${mplayerPID}|wc -w)" -ne 1 ] ; then exit 1; fi
IFS=$'\n'
for archivo in $(lsof -p ${mplayerPID} -Fn | grep -i -E -w 'avi|mp4|mp3|mov|mpg|ogg|3gp' | sed 's/^n//g') ; do
tuberia="/home/tu-usuario/.mplayer/tuberia"
if test -w "${archivo}" ; then
if [ -p "$tuberia" ]; then
echo "pt_step 1" > "$tuberia"
else
mkfifo "$tuberia"
fi
kioclient move "${archivo}" trash://
fi
done

Haz ejecutable el archivo con chmod +x /home/tu-usuario/borrarActual

El script busca el PID de mplayer en ejecución (sale si no hay solo 1 PID). Con este PID averiguamos la ruta del archivo en reproducción. Pasa al siguiente de la lista y mueve el archivo a la papelera (mejor que hacer RM, por si metemos la pata).

Domingo, 26 de abril de 2015 (Hace más de 1 mes)

Viendo la secuencia de fotos hay poco más que explicar.
De algún objetivo o vieja webcam podemos desmontar la lente y extraer la sección de cristales que hacen la función de “lupa” de esa montura. A continuación con un soldador de estaño o una púa calentada sobre una vela agujereamos una pinza grande y de plástico de la ropa de tal manera que:
A) la lente se superponga exactamente con el centro del objetivo de la cámara de nuestro móvil y siempre estando la pinza ubicada en una posición estable (y repetible).
B) la lente debe estar apoyada por completo sobre el objetivo de la cámara de nuestro móvil, sin inclinaciones ni espacios laterales.

Una vez hecho el agujero pegamos con cualquier adhesivo de contacto rápido la lente a la pinza. Para asegurarnos que durante el proceso de secado la lente no se mueve lo ideal sería dejarlo secar manteniendo la pinza sobre una tabla, cartón rígido o similar (cualquier cosa del grosor del móvil que no sea el móvil para evitar accidentes en caso que el pegamento toque con el teléfono)

SupermacroSupermacro

Si ponéis un poco de atención en el momento de hacer el agujero para que la pinza caiga bien sobre el teléfono poner y quitar la lente es facilísimo y apenas ocupa espacio en nuestra mochila campera.

Cuaderno de campo es un blog desarrollado y mantenido por Trebol-a y en el que escriben Trebol-a, Miguel, Merche y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar ó de Google+

Creative Commons: Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos expresados en la licencia Creative Commons