Initial Version / Interfacing with Skylab SKM53 - Alexandria, Egypt

Dependencies:   MODGPS mbed

Files at this revision

API Documentation at this revision

Comitter:
ahmedsaieed
Date:
Thu Sep 12 12:15:31 2013 +0000
Commit message:
Initial Version / Interfacing with Skylab SKM 53 - CanSat, Alexandria, Egypt

Changed in this revision

MODGPS.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
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r d0dc7d932753 MODGPS.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODGPS.lib	Thu Sep 12 12:15:31 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mprinke/code/MODGPS/#34a9030f27a4
diff -r 000000000000 -r d0dc7d932753 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Sep 12 12:15:31 2013 +0000
@@ -0,0 +1,114 @@
+#include "mbed.h"
+#include "GPS.h"
+
+#define PCBAUD 9600
+#define GPSRX p14
+#define GPSBAUD 9600
+
+
+Serial pc(USBTX, USBRX);
+DigitalOut led1(LED1);
+
+// SET THIS.
+// Create an instance of the GPS object. You will need to
+// set p25 to whichever Serial RX pin you have connected
+// your GPS module to.
+GPS gps(NC, p14);
+
+char rmc[GPS_BUFFER_LEN];
+char gga[GPS_BUFFER_LEN];
+char vtg[GPS_BUFFER_LEN];
+char ukn[GPS_BUFFER_LEN];
+
+// 0.1 second flash of LED2
+DigitalOut led2(LED2);
+Timeout t2;
+void t2out(void) { led2 = 0; }
+void blip2(void) { led2 = 1; t2.attach(&t2out, 0.1); }
+
+// 0.1 second flash of LED3
+DigitalOut led3(LED3);
+Timeout t3;
+void t3out(void) { led3 = 0; }
+void blip3(void) { led3 = 1; t3.attach(&t3out, 0.1); }
+
+// 0.1 second flash of LED4
+DigitalOut led4(LED4);
+
+Timeout t4;
+void t4out(void) { led4 = 0; }
+void blip4(void) { led4 = 1; t4.attach(&t4out, 0.1); }
+
+int main() {
+    GPS_Time q1;
+    
+    // SET THIS.
+    // Ensure you set the baud rate to match your serial
+    // communications to your PC/Max/Linux host so you
+    // can read the messages.
+    pc.baud(PCBAUD);
+    
+    // Tell MODGPS "we want copies of the NMEA sentences". When a callback
+    // is made our buffers will contain a copy of the last received sentence
+    // before it was processed/destroyed.    
+    gps.setRmc(rmc);
+    gps.setGga(gga);
+    gps.setVtg(vtg);
+    gps.setUkn(ukn);
+    
+    // SET THIS.
+    // Most GPS modules use 9600,8,n,1 so that's what
+    // we default to here. Ensure your GPS module matches
+    // this, otherwise set it to match.
+    gps.baud(GPSBAUD);
+    gps.format(8, GPS::None, 1);
+    
+    // OPTIONAL
+    // If you GPS has a 1 pulse per second output you can
+    // connect it to an Mbed pin. Here you specify what pin
+    // and on what "edge" teh signal is active. If your GPS
+    // module has a rising edge at the one second point then
+    // use GPS::ppsRise
+    #ifdef PPSPIN
+    gps.ppsAttach(PPSPIN, GPS::ppsFall);
+    #endif
+
+    // Sample of a callback to a function when the 1PPS activates.
+    // For this example, we flash LED2 for 0.1 second.
+    gps.attach_pps(&blip2);
+    
+    // Sample of a callback to a function when a NMEA GGA message is recieved.
+    // For this example, we flash LED2 for 0.1 second.
+    gps.attach_gga(&blip3);
+    
+    // Sample of a callback to a function when a NMEA RMC message is recieved.
+    // For this example, we flash LED2 for 0.1 second.
+    gps.attach_rmc(&blip4);
+
+    while(1) {
+        // Every 3 seconds, flip LED1 and print the basic GPS info.
+        wait(3);
+        led1 = 1;
+        
+        // Demonstrate how to find out the GPS location co-ords.
+        pc.printf("Method 1. Lat = %.4f ", gps.latitude());
+        pc.printf("Lon = %.4f ", gps.longitude());
+        pc.printf("Alt = %.4f ", gps.altitude());
+        
+        // Gran a snapshot of the current time.
+        gps.timeNow(&q1);
+        pc.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n", 
+            q1.hour, q1.minute, q1.second, q1.day, q1.month, q1.year);
+            
+        // Alternative method that does the same thing.        
+        pc.printf("Method 2. Lat = %.4f ", gps.latitude());
+        pc.printf("Lon = %.4f ", gps.longitude());
+        pc.printf("Alt = %.4f ", gps.altitude());
+        
+        GPS_Time *q2 = gps.timeNow();
+        pc.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n\n", 
+            q2->hour, q2->minute, q2->second, q2->day, q2->month, q2->year);
+        delete(q2);        
+        led1 = 0;
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r d0dc7d932753 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Sep 12 12:15:31 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9c8f0e3462fb
\ No newline at end of file