Proyecto GPS+D90+Arduino (Parte 2)

Comenzamos la segunda parte del proyecto con “un pequeño contratiempo“. Ya me ha llegado el módulo Bluetooth para conectarlo con el Arduino. Se trata de un BT BC41713 de CSR (aquí podréis ver las especificaciones). Me ha salido por unos 7€ en ebay. Esto bluetooth viene configurado inicialmente como slave, lo que quiere decir que cualquier otro dispositivo (master) se puede conectar utilizando el pin que tiene por defecto, “1234″. Como mi idea es que este módulo se conecte al GPS (que es slave) tengo que “convertirlo” en master. Para ello hay que poner a HIGH el pin34 (llamado POI11 o en mi caso/módulo KEY) y mediante comandos AT (AT+ROLE=1) ponerlo como master.

…bueno esto era lo que yo pensaba, hasta que lo he probado y he visto que mi módulo no aceptaba este comando, ni otros comandos AT. Arrebuscando información por internet me he dado cuenta de un inconveniente: el chipi-chipi viene con un firmware llamado HC-06 o Linvor V1.5, el cual acepta muy pocos comandos AT. Básicamente estos:

Comando
Respuesta
Nota
AT
OK
Conexión lista!!!
AT+VERSION
Linvor1.5
Versión del firmware (firmware maldito!!!)
AT+BAUDx
OKyyyy
Configurar velocidad de datos donde x puede ser uno de esto números:
  • 1 para 1200 bps
  • 2     2400 bps
  • 3     4800 bps
  • 4     9600 bps
  • 5    19200 bps
  • 6    38400 bps
  • 7    57600 bps
  • 8   115200 bps
  • 9   230400 bps
  • A   460800 bps
  • B   921600 bps
  • C  1382400 bps
AT+NAMEString
OKsetname
Cambiar el nombre emitido por bluetooth
AT+PINxxxx
OKsetpin
Pincode, por defecto 1234

…y lo mas grave no permite el modo master :( . En este post tenéis info sobre el HC-06 o Linvor V1.5 (este hardware puede aceptar varios firmware, incluso existe un IDE para poder desarrollarlos uno mismo,…).

Llegados a este punto, solo me quedaba dos opciones: comprar un nuevo módulo master en ebay (10$) o tostar un firmware nuevo sobre el cacharro. Así que siguiendo el siguiente esquema, descargando el software BlueSuiteCasira 1.24 y recuperando un viejo PC con puerto paralelo LPT y WindowsXP,…he actualizado el firmware!!!,…

Evidentemente, y para un único uso, no he hecho ni una sola soldadura (bueno las del puerto LPT reaprovechado que he encontrado por casa). Así es como me ha quedado el “engendro” temporal. Lo increíble es que ha funcionado “a la primera“:

Ahora ya tengo el módulo tal y como yo quería. Siguiente paso,…programar el Arduino con los componentes pinchados!!!

Si queréis mas información aquí os dejo los links que he utilizado yo. Tendréis mas detalle (paso a paso de la aplicación para flashear, aunque no tiene mucho secreto) y un poco mas de teoría:

http://byron76.blogspot.com/

http://curiosidadesford.blogspot.com/2011/01/modulo-bluetooth-bluetooth-module.html

http://www.neoteo.com/modulo-bluetooth-hc-06-android

Proyecto GPS+D90+Arduino (Parte 1)

He comenzado un proyecto (y voy a tratar de acabar,…) en el cual, la idea básica es: conectar un GPS Holux M241 vía bluetooth a un módulo Arduino Nano v3.0 que está conectado por cable al conector de GPS de mi Nikon D90, con la finalidad de que la cámara geoposicione de forma automática las fotos. Vamos, que guarde en el Exif, info del punto donde fue tomada la foto. Este es el concepto.

En esta primera parte he conectado el Arduino por cable a la Nikon D90 y he simulado la entrada de datos del GPS en formato NMEA. Para ello hará falta: un Arduino (en mi caso un Nano v3.0, pero cualquier versión vale), un pequeño programa (sketch) para que Arduino simule la salida de datos y un conector para la entrada GPS de la cámara (ahora explicaré como conseguirlo).

El conector GPS para la Nikon D90: Se puede conseguir muy barato en eBay (por unos 5$-6$) un disparador remoto por cable (modelo MC-DC2). De este cable únicamente nos servirá el conector, el cual hay que volverlo a pinear correctamente. En esta web tenéis el pineado necesario (es de donde he sacado algo de información). Esta es la pinta que tiene el mío (evidentemente sin el envoltorio):

conector

Bien, una vez pineado el conector de forma correcta, hay que centrarse en el Arduino. Os dejo el programa que he generado como ejemplo para simular la entrada de datos GPS a la cámara:

 #include <SoftwareSerial.h>
 */
 GPS test D90
 SoftwareSerial(rxPin, txPin)
 rxPin = 2
 txPin = 3
 */
 SoftwareSerial mySerial(2, 3);
 void setup()
 {
 mySerial.begin(4800);
 pinMode(2,INPUT);
 pinMode(3,OUTPUT);
 pinMode(13,OUTPUT);
 }
 void loop()
 {
 digitalWrite(13,HIGH);
 mySerial.println("$GPGGA,154654,4428.2011,N,00440.5161,W,0,00,,-00044.7,M,051.6,M,,6B");
 mySerial.println("$GPGSA,A,1,,,,,,,,,,,,,,,1E");
 mySerial.println("$GPGSV,3,1,10,02,50,290,00");
 mySerial.println("$GPGGA,154655,4328.1874,N,00340.5185,W,1,03,08.5,-00044.7,M,051.6,M,,*79");
 mySerial.println("$GPGSA,A,2,13,23,25,,,,,,,,,,08.5,08.5,00.9*0E");
 mySerial.println("$GPGSV,3,1,10,02,50,290,26,04,60,210,26,08,33,173,29,10,21,296,00*7E");
 mySerial.println("$GPGSV,3,2,10,13,58,044,34,16,03,035,00,20,02,109,00,23,26,057,34*7B");
 mySerial.println("$GPGSV,3,3,10,25,24,045,35,27,56,145,27,,,,,,,,*7D");
 mySerial.println("$GPRMC,154655,A,4428.1874,N,00440.5185,W,000.7,000.0,050407,,,A*6C");
 digitalWrite(13,LOW);
 }

Ahora ya solo queda conectar el cable a la salida del Arduino y a la entrada GPS de la D90, dar corriente al Arduino y encender la cámara y verificar que correctamente está recibiendo los datos:

D90+GPS+Arduino

Si disparas alguna foto y consulta sus datos, verás que tiene la información del GPS.

Bueno hasta aquí la primera parte. Estoy a la espera de que me llegue el módulo bluetooth para pincharlo a la placa Arduino y ver de emparejar el GPS Holux (aunque evidentemente se podría utilizar un movil con GPS, porque no?)

Scripting al poder

Una duda de hoy que ha salido en el trabajo: Si tengo Ubuntu Desktop instalado y le quiero desinstalar el Python ¿porque me desinstala todo el Desktop?. Después de buscar por internet un rato,…creo haber encontrado la respuesta:

  • Gnome Shell está basado en Javascript y utiliza librerías GTK
  • Unity está basado en Phyton y utiliza librerías GTK
  • KDE está basado en QtScript y utiliza librerías Qt
Gracias  @meinteresatodo por la duda.

Versión 1 de la API de google+ liberada

Pues eso mismo, no hace falta añadir nada mas al título del post,…a bajarse la API!!!. Está disponible en Google+ platform download para las plataformas de Java (Android, AppEngine), GWT, .NET, Python, PHP, Ruby & Objective-C (iPhone)

Vía google-plus.com

Mejorar la visión de los botones de una funda de silicona

Hace unos meses compré para mi Nikon D90 una funda de silicona negra, ideal para evitar suciedad y rayaduras en el cuerpo de la cámara. El tema es que esta funda tiene los botones sin pintar, lo que en algunas ocasiones complica ver la función de cada uno de ellos. La solución pasa por pintarlos.

Para pintarlos y dejarlos protegidos para que no se borren, me hecho varias pruebas con diferentes productos (todos los podéis encontrar en casa) y el mejor resultado ha sido: pintar los botones directamente con tempera de color (sin diluir) con un palillo, dejar secar un rato y eliminar el exceso con un palillo (cuidado, hay algunos botones mas complicados que otros, pero se pueden volver a repintar sin problema). Una vez los botones estén correctamente pintados y nos guste el resultado, solo falta aplicar (también con un palillo) y recubrir los botones pintados con pegamento del estilo “loctite”. Y ya está!!!,…ahora los botones son mas visibles.

También os podéis aventurar con combinaciones de colores (al final yo he optado con el clásico blanco y algunos detalles en rojo, como la papelera)

Resultado final:

Cuidado con bloquear el enfoque y recomponer

En este artículo de Digital Photography School nos “demuestra matemáticamente” con el Teorema de Pitágoras (geometría básica), que utilizar la técnica de focus-recomposer, que consiste en enfocar, bloquear el enfoque para componer la escena y disparar,…nos puede llevar a tener en varias ocasiones las fotos mal enfocadas. O por lo menos aquello que creemos que estará enfocado quedar desenfocado.

JPEGmini vs jpegoptim

Vía Xataka Foto, descubro este nuevo servicio web, que premite aligerar el peso de nuestras fotos sin perder prácticamente la calidad de la imagen. El servicio (JPEGmini) funciona de la siguiente forma: subes a tu espacio (previo registro) las fotos que quieras convertir, una vez subidas el sistema las procesa y te envía un correo para que en 9 días te descargues las fotos optimizadas en peso. La cosa está bien,…no??. Bueno pues como yo utilizo el jpegoptim desde hace tiempo y normalmente reduzco a un 80 de calidad (ya me parece muy buen el resultado), he estado haciendo pruebas para comparar JPEGmini con jpegoptim, y la verdad es que me quedo con jpegoptim: sencillo, en linea de comandos, rápido y no tengo que enviar las fotos ni subirlas previamente a ningún sitio,…

Foto original (tamaño 4,2Mb):

DSC_2694_original_OK

Foto tratada con JPEGmini (tamaño 670Kb):

DSC_2694_mini

Foto tratada con jpegoptim parámetro -m80 (tamaño 704Kb):

DSC_2694_80

Un crop al 100% de la misma zona (original, jpegmini, jpegoptim):

DSC_2694_original

DSC_2694_mini_crop

DSC_2694_op80

…y para comparar un poco mas, unos crop al 100% con parámetros a -m75 (tamaño 559Kb) y -m70 (tamaño 484Kb):

DSC_2694_op75

DSC_2694_op70

Resultado: el JPEGmini es una kk de servicio. Lo que tienen que hacer la gente es no fliparse tanto y reducir con alguna aplicación en su PC el tamaño antes de compartir las fotos por la web.

Mis pruebas me llevan a la conclusión que JPEGmini utiliza un ratio de compresión similar al parámetro “-mXX” de jpgoptim, de entre un valor 70-80. http://www.akirasan.net/?p=716

Circular CPL Kenko a 270mm (PROBLEMA)

El otro día me pille un filtro polarizado circular (vamos un CPL), para el Tamron nuevo (18-270) que tiene un ancho de 72mm y el anterior Sigma (18-200) lo tenía de 62mm. Bueno la cosa es que pillo un Kenko como este:

DSC_4066_2

Al principio todo bien, hace lo que tiene que hacer,…pero el otro día tirando a máxima del objetivo (a 270mm), la cámara me indicaba que estaba enfocado OK pero yo por el visor lo veía borroso (bastante borroso). Muy raro me puse a tocar ajustes, a enfocar en manual,…y nada no había forma, se veía borroso,…así que probé de quitar el filtro,…y bingo!!!,…ahí estaba el problema.

Un ejemplo. Estas dos fotos están tomadas “de la misma forma”, pero una con el filtro polarizado y la otra sin, ¿alguna diferencia?:

DSC_3896_2

DSC_3898_2

…si verdad?, se nota a simple vista. Aquí un crop al 100% y se nota tela!!!:

DSC_3896_crop
DSC_3898_crop

…y si,..el punto de enfoque es el mismo,…

El filtro funciona perfectamente en otras distancias focales,…pero a 270,..kk!!!.

Búho Real

¿¿Donde está el pajarito??

Mas bien,…un Búho Real

DSC_0533

DSC_0538

Decepticons desde la edad media


DSC_0558, a photo by akirasan on Flickr.

DSC_0558 by akirasan

Te puedes creer que los bichos estos están entre nosotros desde la Edad Media,…jejeje

pio, pio, pio,…


DSC_1160, a photo by akirasan on Flickr.

DSC_1160 by akirasan

Unos polluelos de golondrina han anidado cerca.

(este post es una excusa para probar la publicación de fotos desde el Flickr directamente en mi blog)

Resetear Unity a la configuración inicial

Si eres como yo que no paras de tocar el Unity para adaptarlo a tus necesidades,…y ya lo tocas tanto que montas un sigral. Solo tienes que ejecutar el siguiente comando en un terminal para resetear a la configuración inicial de Unity.

unity --reset

También si quieres eliminar los iconos añadidos:

unity --reset-icons

…y bueno si estás como loco con el Compiz y te ha pasado lo mismo, ejecuta esto para eliminar tus cambios:

gconftool-2 --recursive-unset /apps/compiz-1

Listar UUID de discos en Linux

Un par de formas para listar los UUID (Universally Unique Identifier) de los discos en Linux desde la linea de comandos:

ls -l /dev/disk/by-uuid
blkid

Workflow de geoposicionamiento de fotos

A título informativo, sin entrar en muchos detalles, voy a explicar el workflow (pasos) que sigo para geoposicionar las fotos en linux (en mi caso con Ubuntu 11.04).

  1. Copiamos todas las fotos en un directorio temporal.
  2. Abrimos un terminal y vamos al directorio temporal.
  3. Descargamos la información del GPS en formato .gpx con mtkbabel:
      mtkbabel -s 38400 -f datos_tmp -t
  4. (opcional) particionamos el fichero .gpx en varios con información diaria:
      gpxsplitter.py datos_tmp_trk.gpx
  5. (recomendación) Estos dos pasos anteriores los podéis encapsular en un script en bash para simplificar el trabajo.
  6. Arrancamos el Geotag y seleccionamos las fotos a geoposicionar (File->Add images from directory) y el fichero .gpx con las coordenas recogidas por el GPS (File->Load tracks from file)
  7. Ahora desde la lista de fotos botón derecho->Find locations->for all images. Esto lanzará el matching entre el timestamp (hora:minuto) de la informacion guardada en la foto (exif) con la posición GPS registrada en es momento.
  8. Una vez todas las fotos han sido correlacionadas (si no, podemos hacerlo manualmente ya que nos posiciona la foto en un mapa).
  9. Ahora solo falta fijar estas coordenadas a la información del foto (exif). Para ello desde el menú File->Save new locations->All images (este proceso no modifica la foto original, crea una copia con el mismo nombre y los nuevos metadatos de GPS y la antigua la renombra con el sufijo _original)
  10. Una vez acaba este proceso cerramos el Geotag.
  11. Desde el terminal que teníamos abierto, borramos los ficheros originales:
      rm *_original
  12. Ejecutamos jhead para restaurar la fecha y hora original de la foto (puedes ver que el nuevo fichero tiene la fecha y hora de hoy y no de cuando fué tomada). Básicamente jhead lee la información exif de cuando se tomó la foto y la pone como fecha de creación del fichero:
      jhead -ft *.JPG
  13. Ahora ya toca clasificar las fotos.

Script bash para bajar música desde la consola

En 120%Linux veo un script en bash fantástico realizado por http://www.carballude.es, que desde consola linux se pueden descargar los mp3 las canciones que se escuchan por streaming goears.com. Un consejo: primero visitad la página de goears.com, realizar la búsqueda, comprobáis los resultados (básicamente la calidad de lo que escucháis) y luego váis a la consola y ejecutáis el script con la misma búsqueda y seleccionáis el número de resultado que ya habéis escuchado desde la web (ojo el número de resultado, porque el script te muestra muchos “títulos” iguales de la canción y es importante saber la posición del resultado que queremos descargar)

Datos seguros en una unidad USB

LLevo unos días con la paranoia de tener una lugar físico (pendrive) y encriptado con mis datos mas personales. Así que he estado buscando y probando diferentes alternativas y workflow’s sencillos y operativos tanto en Windows como en Linux.

Almacenamiento de claves

Al final me quedo con la solucción KeePass (ojo no KeePassX que aún no tiene soporte para KeePass 2 (.kdbx)), que aunque tiene poco rodaje apuesto en que será a medio plazo una solución adoptada como “standard“. Tiene cliente Windows y Linux, es sencillo, no necesito mucho mas y es portable tanto para Windows como para Linux (funciona con mono 2.6 que habrá que instalar). El inconveniente por ahora es que la autoescritura con autodetección del sitio web en Linux no está muy elaborada (aunque si funciona la autoescritura). Solo espero que evolucione con el tiempo o que KeePassX agrege el soporte para KeePass 2.

Almacenamiento de datos encriptados

He mirado TrueCrypt (unidad completa encriptada y contenedor encriptado) y Free OTFE(windows)+dm-crypt(linux). Aquí es donde tengo mas dudas, así que seguiré probando un poco mas. Los escenarios son estos:

  • TrueCrypt
    • Unidad USB 4Gb: cliente portable de TrueCrypt para Windows + fichero encriptado
    • Cliente TrueCrypt instalado en Linux para leer el fichero contenedor del USB.
  • dm-crypt + Free OTFE
    • Unidad USB 4Gb: partición total del USB encriptada con dm-crypt (la creación de esta partición es MUY sencilla desde la utilizada de Gestión de Discos que viene por defecto en Ubuntu, ojo!!! hay que instalar el cryptsetup (sudo apt-get install cryptsetup).
    • La comodidad en Linux es muy buena, nada mas introducir el stick USB detecta un partición como encriptada y te solicita password, la monta como unidad y lo podemos utilizar como un USB mas. En Windows hay que tener un cliente Free OTFE que puede ser portable (en otro USB a parte) o instalado. Se indica la partición y listo.

Lo chungo de todo esto, es que tengo 

OpenStreetMap modifica su editor online

El proyecto OpenStreetMap, un mapa abierto, consultable y actualizable por la comunidad, ahora a modificado su editor online (Potlatch 2), mucho mas ágil y fácil de utilizar. Una de las mejoras es que se puede utilizar Bing Maps como fondo con vista satélite que nos sirve de guia para poder mapear la zona.

Por ahora Google sigue abriendo a cuenta gotas su Google Map Maker, la misma idea, pero con GoogleMaps.

¿Como ir de Repente a Kagar?

Para el conocimiento general, jejejeje,….que bueno!!!. Me lo han enviado por correo y como podéis ver es verídico (haced zoom para ver donde os encontráis):

http://maps.google.es/maps/ms?ie=UTF8&oe=UTF8&msa=0&msid=101783864080580985248.0004799bda0c2cfe3dd6a

 

Google adquiere Green Parrot Picture para mejorar los videos de Youtube

De esta entrada en el blog de Youtube “http://youtube-global.blogspot.com/2011/03/steady-as-she-goes-better-video.html“, donde comentan que Google ha adquirido la compañía Green Parrot Picture para mejorar los videos en Youtube, me quedo con dos mejoras que ofrece Green Parrot Picture en su portfolio de “mejoras“: el estabilizador y el slow motion,…muy buenos!!! (al menos a nivel de ejemplos, luego habría que ver que hace con mis videos amateurs,…)

Terremotos en tiempo real

Consulta la información de los terremotos en tiempo real (lugar e intensidad) en la web del Servicio Geológico de los Estados Unidos (en ingles USGS).

Terremotos en tiempo real: http://earthquake.usgs.gov/earthquakes/recenteqsww/

Web de USGS

Visto en Twitter

Next Page »