Nagevacion GPS por Waypoints para Arduino

Hola soy el que anda con el proyecto del Arducopter, últimamente me dedicado hacer un GPS para cualquier UAVS, que posteriormente utilizare en el Arducopter o Arduplane, lo que sea (ya que tenga dinero para continuar) :-/.

Hay muchos ejemplos por ahí de cómo tomar lectura de un GPS y enviarlo por el puerto serie para poder leerlo en la PC. Pero nadie ha programado ningún sistema de navegación por GPS para Arduino?. Si, Me refiero a que pongas unas coordenadas (Waypoints) y arduino te dirá que rumbo debes tomar para llegar a ese destino y además te da la distancia que te falta para llegar. : ) Quisiera traducirlo al ingles, si alguien quiere hacerlo para el foro en ingles, lo agradecería mucho, ellos anda ocupando algo así. Manual, fotos, simulación, código fuente, disponibles en:

http://gizmobits.com/ardugps/ ::)

Algo que no mencione ahí s que utilizo un 74ls04 para poder tomar datos del puerto serial de mi PC y hacer simulaciones, pero?.. Si deseas ya conectarle un GPS real como el de parallax o Blox, solo conéctalo al PIN1 y listo (no ocupas 74ls04), solo verifica que las señales seriales sean a nivel TTL, ejemplo: http://www.arduino.cc/es/Tutoriales/GPS ;)

Ya tengo la version final :
http://myspacetv.com/index.cfm?fuseaction=vids.individual&videoid=25046068
http://gizmobits.com/wp-content/uploads/2007/videohi.AVI

Foto de estacion en tierra:
http://jordii07.googlepages.com/ground.jpg

Foto de google earth:
http://jordii07.googlepages.com/NEWgps.jpg

Errores conocidos:

-No sirve si intentas navegar de Latitud Norte a Sur (o viseversa) o de longitud este a Oeste. Si es posible,
pero necesitarias meterle unas cuantas formulas que yo no hise por que vivo muy muy lejos del ecuador y de greenwish.
Asi que para los de Estados Unidos y Mexicanos, no vamos a tener ningun problema.
-No detecta distancias mayores a 65535 metros (6.5 KM), a menos que le cambies la variable de distancia de unsigned int a long.
-El programa de labview tiene un bug con los puertos, si no los desconectas virtualmente antes de cerrar, se quedara colgado.
-Le quite la altitud, por que el GPS tiene errores de ± 20 metros, no me sirve, pero en estos momento ya tengo mis detectores de presion,
patrocinados por freescale, junto con un ADC de 16 bit con i2c para detectar diferencias de altitud con ±8 centimetros de error.

Mejoras:

-Resolvi todos los bugs posibles
-Consume mucho menos recursos, elimine muchas variables inecesarias
-Lo comente bien y en ingles tambien
-Le agregue mas resolucion a los grados, antes te daba de 3 en 3, ahora ya te los da de 1 en 1 (que mas puedes pedir?).
-El margen de error ahora es de solo 2 metros!!!
-y ya no me acuerdo que mas…
-asi, Arduino te reenvia las señales NMEA para reutilizarlas en otra cosa, y te genera otra que es $JORDI, que trae
consigo toda la informacion vital de la aeronave, veras algo asi:

$GPGLL,3414.4200,N,11826.9260,W,044756*54

$GPRMC,044756,A,3414.4200,N,11826.9260,W,019.0,105.0,301207,000.0,W*7C

$JORDI,240,187,19,34240332,-118448768,105,888,-1738,3,150 <------no tiene check sum jeje
$GPVTG,105.0,T,105.0,M,019.0,N,035.2,K*42

$GPZDA,044756,30,12,2007,00*65

$GPGGA,044756,3414.4200,N,11826.9260,W,2,08,2.0,0,M,50.0,M,*43

$GPGSA,A,3,01,02,03,05,07,09,11,12,2.0,2.0,2.0*38

=$JORDI,CursoDestino,Distanciaalobjetivo,Velocidad, latitud, longitud, curso real, diferencia lat, diferencia long, cuadrante, correcion.
No imoorta si le conectas a un dipositivo GPS, este ignorara mi sentencia.

-ya no es beta, ahora si lo puedes utilizar en un avion garantizado. Mas no me hago responsable… Descargar sketch y codigo fuente labview:
http://jordii07.googlepages.com/GPSarduinov101.rar

Suerteeee… :wink: