Luego de mucho tiempo de haberlo comprado, me puse a ver como era el tema de GPS con Arduino. Hacía tiempo que uno usaba Arduino y tenía comprado un shield GPS de Elecfreaks. Aquí va ordenado todo lo que se necesita hacer para que esto funcione.
Hardware necesario
El Hardware requerido es muy poco y no requiere que estemos conectando resistencias, diodos y condensadores. Podríamos hacerlo si compráramos solo el módulo GPS, pero existiendo un shield ya armado, no creo que haya necesidad. Yo compré el shield por 64 dólares en DX.com.
1 placa Arduino UNO
1 shield GPS que use el módulo Fastrax UP501.
1 computadora con Windows (y si es con Linux no les va a ser muy difícil lograr lo mismo).
Software necesario
Biblioteca TimerOne: http://code.google.com/p/arduino-timerone/downloads/detail?name=TimerOne-r11.zip&can=2&q=
Drivers CP210x_VCP_Win7.exe: http://elecfreaks.com/store/download/datasheet/breakout/USB/Driver.zip
Drivers Fastrax: http://www.u-blox.com/images/downloads/Product_Docs/Fastrax_USB_drivers.zip
Fastrax Workbench 5.22: http://www.u-blox.com/images/downloads/Product_Docs/Fastrax_Workbench_522_Setup.zip
Documentación
Originalmente intenté seguir este instructivo, pero no es demasiado bueno, en especial porque está bastante desactualizado, además de escrito en inglés chino: http://www.elecfreaks.com/wiki/index.php?title=GPS_Shield_-_Fastrax_UP501
Este dispositivo cumple con una especificación de comunicaciones llamada NMEA 0183, la cual se usa para diversos dispositivos electrónicos marinos y GPS. Para poder analizar los datos recibidos desde el GPS van a necesitar leer este manual sobre NMEA.
Conocimientos básicos
El módulo GPS está continuamente solicitando información a los satélites GPS que tiene a la vista y esa información la codifica y la envía a su host, que en este caso es el Arduino. El Arduino a través de un programa en loop, lee las entradas digitales que conectan al módulo GPS y las envía a través del puerto COM.
En Windows hay unos drivers virtuales que son a los que conecta al programa Workbench y con eso dicho programa lee la entrada y la va traduciendo a los gráficos en pantalla.
Si se quiere hacer algo con el Arduino, no es necesario el programa Workbench, sino que se debe modificar el programa cargado en él para que se intepreten los datos provenientes del GPS.
Por ejemplo, podríamos agregar una pantalla que muestre la ubicación del dispositivo o podríamos agregar un dispositivo inalámbrico que transmita esa información.
Procedimiento
Se ensambla el hardware.
Luego es necesario cargar el programa que lee las respuestas del GPS al Arduino.
/*********************************************************************
** Description: **
** This file is a sample code for your reference. **
** **
** Copyright (C) 2011 ElecFreaks Corp. **
** Created by ElecFreaks Robi.W /29 Sep 2011 **
** **
** http://www.elecfreaks.com **
** Corrected by Federico de los Santos **
** https://federicodelossantos.com **
*********************************************************************/
#include <SoftwareSerial.h>
#include <TimerOne.h>
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
void setup()
{
// define pin modes for tx, rx pins:
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
mySerial.begin(9600);
Serial.begin(9600);
}
void loop()
{
int i = 0;
char someChar[32] = {0};
// when characters arrive over the serial port...
if(Serial.available()) {
do{
someChar[i++] = Serial.read();
//As data trickles in from your serial port you are grabbing as much as you can,
//but then when it runs out (as it will after a few bytes because the processor
//is much faster than a 9600 baud device) you exit loop, which then restarts,
//and resets i to zero, and someChar to an empty array.So please be sure to keep this delay
delay(3);
}while (Serial.available() > 0);
mySerial.println(someChar);
Serial.println(someChar);
}
while(mySerial.available())
Serial.print((char)mySerial.read());
}
Luego se instalan los Drivers USB corriendo el archivo CP210x_VCP_Win7.exe y siguiendo las instrucciones del asistente de instalación.
Luego se instalan los Drivers de Fastrax de forma manual.
Luego se instala el software Workbench, que a la fecha de escribir este tutorial está en la versión 5.22, por lo cual el archivo a ejecutar es el fastraxwb-522-setup.exe. Una vez instalado, se inicia el programa y se conecta al puerto COM del Arduino.
Y apenas conecta ya empiezan a llegar los datos.
¿Y ahora qué hago con esto?