Test code for GPS U-blox NEO-6M

Dependencies:   MODSERIAL mbed-src

Files at this revision

API Documentation at this revision

Comitter:
edodm85
Date:
Sat Apr 12 11:53:35 2014 +0000
Child:
1:acd907fbcbae
Commit message:
First Version

Changed in this revision

MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Sat Apr 12 11:53:35 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/AjK/code/MODSERIAL/#ae0408ebdd68
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Apr 12 11:53:35 2014 +0000
@@ -0,0 +1,94 @@
+/*
+ * Author: Edoardo De Marchi
+ * Date: 12-04-14
+ * Notes: Firmware for GPS U-Blox NEO-6M
+*/
+
+#include "main.h"
+
+
+void Init()
+{
+    gps.baud(9600);
+    pc.baud(115200);
+
+    pc.printf("Init OK\n");
+}
+
+
+
+int main() 
+{   
+    Init();
+    char c;
+
+    while(true) 
+    {
+        if(gps.readable())
+        { 
+            if(gps.getc() == '$');           // wait a $
+            {
+                for(int i=0; i<sizeof(cDataBuffer); i++)
+                {
+                    c = gps.getc();
+                    if( c == '\r' )
+                    {
+                        //pc.printf("%s\n", cDataBuffer);
+                        parse(cDataBuffer, i);
+                        i = sizeof(cDataBuffer);
+                    }
+                    else
+                    {
+                        cDataBuffer[i] = c;
+                    }                 
+                }
+            }
+         } 
+    }
+}
+
+
+void parse(char *cmd, int n)
+{
+    
+    char ns, ew, tf, status;
+    int fq, nst, fix, date;                                     // fix quality, Number of satellites being tracked, 3D fix
+    float latitude, longitude, timefix, speed, altitude;
+    
+    
+    // Global Positioning System Fix Data
+    if(strncmp(cmd,"$GPGGA", 6) == 0) 
+    {
+        sscanf(cmd, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%*f,%f", &timefix, &latitude, &ns, &longitude, &ew, &fq, &nst, &altitude);
+        pc.printf("GPGGA Fix taken at: %f, Latitude: %f %c, Longitude: %f %c, Fix quality: %d, Number of sat: %d, Altitude: %f M\n", timefix, latitude, ns, longitude, ew, fq, nst, altitude);
+        pc.printf("\n");
+    }
+    
+    // Satellite status
+    if(strncmp(cmd,"$GPGSA", 6) == 0) 
+    {
+        sscanf(cmd, "$GPGSA,%c,%d,%d", &tf, &fix, &nst);
+        pc.printf("GPGSA Type fix: %c, 3D fix: %d, number of sat: %d\r\n", tf, fix, nst);
+        pc.printf("\n");
+    }
+    
+    // Geographic position, Latitude and Longitude
+    if(strncmp(cmd,"$GPGLL", 6) == 0) 
+    {
+        sscanf(cmd, "$GPGLL,%f,%c,%f,%c,%f", &latitude, &ns, &longitude, &ew, &timefix);
+        pc.printf("GPGLL Latitude: %f %c, Longitude: %f %c, Fix taken at: %f\n", latitude, ns, longitude, ew, timefix);
+        pc.printf("\n");
+    }
+    
+    // Geographic position, Latitude and Longitude
+    if(strncmp(cmd,"$GPRMC", 6) == 0) 
+    {
+        sscanf(cmd, "$GPRMC,%f,%c,%f,%c,%f,%c,%f,,%d", &timefix, &status, &latitude, &ns, &longitude, &ew, &speed, &date);
+        pc.printf("GPRMC Fix taken at: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", timefix, status, latitude, ns, longitude, ew, speed, date);
+        pc.printf("\n");
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.h	Sat Apr 12 11:53:35 2014 +0000
@@ -0,0 +1,20 @@
+#pragma once 
+#include "mbed.h"
+#include "MODSERIAL.h"
+
+MODSERIAL pc(USBTX,USBRX);
+MODSERIAL gps(p13,p14);
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+
+
+char cDataBuffer[500];
+int i = 0;
+
+
+void Init();
+void parse(char *cmd, int n);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Apr 12 11:53:35 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/6473597d706e
\ No newline at end of file