Objetivos
Material requerido
Arduino UNO | |
GPS Shield |
A estas alturas todos estamos ya familiarizados con el uso del GPS y como ha ayudado a facilitarnos la vida. Este sistema nos permite determinar con gran exactitud la posición de una persona, vehículo, etc… en cualquier parte de la Tierra. Fue desarrolado por el ministerio de defensa de EEUU y para ello pusieron en órbita 24 satélites para cubrir toda la superficie del planeta. Para conseguir nuestra posición necesitamos conectarnos al menos a 3 de estos satélites.
El shield GPS
El shield GPS
Al principio del programa incluimos las librerías y declaramos los pines para la comunicación serie y la velocidad del GPS. Si habéis colocado los jumpers como nosotros tendréis que cambiar los pines Rx y Tx por el 2 y el 3 respectivamente.
Por otra parte, la velocidad por defecto es de 4800 para el GPS, y nosotros no hemos conseguido hacerlo funcionar con ella. La única con la que hemos conseguido que todo vaya bien 9600 baudios. Total, que tenemos algo como esto:
#include <TinyGPS++.h> #include <SoftwareSerial.h> static const int RXPin = 2, TXPin = 3; static const uint32_t GPSBaud = 9600; // The TinyGPS++ object TinyGPSPlus gps; // The serial connection to the GPS device SoftwareSerial ss(RXPin, TXPin);
En el setup lo relevante es que tenemos que vamos a cambiar la velocidad del puerto serie también a 9600:
Serial.begin(9600); ss.begin(GPSBaud);
En el loop comprobamos que nos llegue algo por el puerto serie que hemos conectado al shield, y si llega llamamos a la función displayInfo, con la que mostramos los datos del GPS.
void loop() { // This sketch displays information every time a new sentence is correctly encoded. while (ss.available() > 0) if (gps.encode(ss.read())) displayInfo(); if (millis() > 5000 && gps.charsProcessed() < 10) { Serial.println(F("No GPS detected: check wiring.")); while(true); } }
Resumen de la sesión
En esta sesión hemos aprendido varias cosas importantes: