Dependencies:   SCP1000 GPS mbed

Committer:
joosttromp
Date:
Fri Jun 17 12:37:41 2011 +0000
Revision:
0:be0e0d0b2ff5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joosttromp 0:be0e0d0b2ff5 1 #include "mbed.h"
joosttromp 0:be0e0d0b2ff5 2 #include "GPS.h"
joosttromp 0:be0e0d0b2ff5 3 #include "SCP1000.h"
joosttromp 0:be0e0d0b2ff5 4
joosttromp 0:be0e0d0b2ff5 5 /*
joosttromp 0:be0e0d0b2ff5 6 $PMTK251,115200*1F
joosttromp 0:be0e0d0b2ff5 7 $PMTK220,100*2F
joosttromp 0:be0e0d0b2ff5 8 RMC,VTG,GGA
joosttromp 0:be0e0d0b2ff5 9 $PMTK314,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2A
joosttromp 0:be0e0d0b2ff5 10 */
joosttromp 0:be0e0d0b2ff5 11 #define GPSTX p9
joosttromp 0:be0e0d0b2ff5 12 #define GPSRX p10
joosttromp 0:be0e0d0b2ff5 13 #define PCBAUD 115200
joosttromp 0:be0e0d0b2ff5 14 #define GPSBAUD 115200
joosttromp 0:be0e0d0b2ff5 15
joosttromp 0:be0e0d0b2ff5 16 #define DEGREES 176
joosttromp 0:be0e0d0b2ff5 17 // 176 is degree untranslated
joosttromp 0:be0e0d0b2ff5 18 // 248 is degree translated
joosttromp 0:be0e0d0b2ff5 19
joosttromp 0:be0e0d0b2ff5 20 Serial pc(USBTX, USBRX);
joosttromp 0:be0e0d0b2ff5 21 GPS gps(GPSTX, GPSRX);
joosttromp 0:be0e0d0b2ff5 22 SCP1000 scp1000(p11,p12,p13,p14);
joosttromp 0:be0e0d0b2ff5 23 //SDFileSystem sd(p5,p6,p7,p8,"sd");
joosttromp 0:be0e0d0b2ff5 24
joosttromp 0:be0e0d0b2ff5 25 char rmc[GPS_BUFFER_LEN];
joosttromp 0:be0e0d0b2ff5 26 char gga[GPS_BUFFER_LEN];
joosttromp 0:be0e0d0b2ff5 27 char vtg[GPS_BUFFER_LEN];
joosttromp 0:be0e0d0b2ff5 28
joosttromp 0:be0e0d0b2ff5 29 bool validgps;
joosttromp 0:be0e0d0b2ff5 30 bool validtime;
joosttromp 0:be0e0d0b2ff5 31 short int sats;
joosttromp 0:be0e0d0b2ff5 32 double latitude;
joosttromp 0:be0e0d0b2ff5 33 double longitude;
joosttromp 0:be0e0d0b2ff5 34 float altitude;
joosttromp 0:be0e0d0b2ff5 35 float pressure;
joosttromp 0:be0e0d0b2ff5 36 float velocity;
joosttromp 0:be0e0d0b2ff5 37 float track;
joosttromp 0:be0e0d0b2ff5 38
joosttromp 0:be0e0d0b2ff5 39 DigitalOut led1(LED1);
joosttromp 0:be0e0d0b2ff5 40 Timeout t1;
joosttromp 0:be0e0d0b2ff5 41 void t1out(void) { led1 = 0; }
joosttromp 0:be0e0d0b2ff5 42 void blip1(void) { led1 = 1; t1.attach(&t1out, 0.01); }
joosttromp 0:be0e0d0b2ff5 43
joosttromp 0:be0e0d0b2ff5 44 DigitalOut led2(LED2);
joosttromp 0:be0e0d0b2ff5 45 Timeout t2;
joosttromp 0:be0e0d0b2ff5 46 void t2out(void) { led2 = 0; }
joosttromp 0:be0e0d0b2ff5 47 void blip2(void) { led2 = 1; t2.attach(&t2out, 0.01); }
joosttromp 0:be0e0d0b2ff5 48
joosttromp 0:be0e0d0b2ff5 49 DigitalOut led3(LED3);
joosttromp 0:be0e0d0b2ff5 50 Timeout t3;
joosttromp 0:be0e0d0b2ff5 51 void t3out(void) { led3 = 0; }
joosttromp 0:be0e0d0b2ff5 52 void blip3(void) { led3 = 1; t3.attach(&t3out, 0.01); }
joosttromp 0:be0e0d0b2ff5 53
joosttromp 0:be0e0d0b2ff5 54 DigitalOut led4(LED4);
joosttromp 0:be0e0d0b2ff5 55 Timeout t4;
joosttromp 0:be0e0d0b2ff5 56 void t4out(void) { led4 = 0; }
joosttromp 0:be0e0d0b2ff5 57 void blip4(void) { led4 = 1; t4.attach(&t4out, 0.01); }
joosttromp 0:be0e0d0b2ff5 58
joosttromp 0:be0e0d0b2ff5 59 GPS_Geodetic g;
joosttromp 0:be0e0d0b2ff5 60 GPS_VTG v;
joosttromp 0:be0e0d0b2ff5 61
joosttromp 0:be0e0d0b2ff5 62 void pos(void) {
joosttromp 0:be0e0d0b2ff5 63 blip4();
joosttromp 0:be0e0d0b2ff5 64 gps.geodetic(&g);
joosttromp 0:be0e0d0b2ff5 65 gps.vtg(&v);
joosttromp 0:be0e0d0b2ff5 66 latitude = g.lat;
joosttromp 0:be0e0d0b2ff5 67 longitude = g.lon;
joosttromp 0:be0e0d0b2ff5 68 altitude = g.alt;
joosttromp 0:be0e0d0b2ff5 69 velocity = v._velocity_knots;
joosttromp 0:be0e0d0b2ff5 70 track = v._track_true;
joosttromp 0:be0e0d0b2ff5 71 sats = gps.numOfSats();
joosttromp 0:be0e0d0b2ff5 72 validgps = false;
joosttromp 0:be0e0d0b2ff5 73 validtime = false;
joosttromp 0:be0e0d0b2ff5 74 validgps = gps.getGPSquality();
joosttromp 0:be0e0d0b2ff5 75 validtime = gps.isTimeValid();
joosttromp 0:be0e0d0b2ff5 76 if (!validgps) { latitude = 0.000000; longitude = 0.000000; velocity = 0.000000; track = 0.000000; }
joosttromp 0:be0e0d0b2ff5 77 pc.printf("GPS: %i(%i), TIME: %i\r\nLAT: %f\r\nLON: %f\r\nALT: %5.1lf ft\r\nPRES: %d Pa\r\nTEMP: %3.1lf %cC\r\nSPD: %3.1lf kts\r\nTRK: %3.1lf %cT\r\n", validgps, sats, validtime, latitude, longitude, altitude, scp1000.readPressure(), scp1000.readTemperature(), DEGREES, velocity, track, DEGREES); // 1.0m = 3.2808399 ft - 1.0km = 3280.8399 ft
joosttromp 0:be0e0d0b2ff5 78 time_t seconds = time(NULL);
joosttromp 0:be0e0d0b2ff5 79 pc.printf("%s\r\n", ctime(&seconds));
joosttromp 0:be0e0d0b2ff5 80 }
joosttromp 0:be0e0d0b2ff5 81
joosttromp 0:be0e0d0b2ff5 82 int main() {
joosttromp 0:be0e0d0b2ff5 83
joosttromp 0:be0e0d0b2ff5 84 pc.baud(PCBAUD);
joosttromp 0:be0e0d0b2ff5 85 gps.baud(GPSBAUD);
joosttromp 0:be0e0d0b2ff5 86 gps.format(8, GPS::None, 1);
joosttromp 0:be0e0d0b2ff5 87
joosttromp 0:be0e0d0b2ff5 88 //gps.setRmc(rmc);
joosttromp 0:be0e0d0b2ff5 89 //gps.setGga(gga);
joosttromp 0:be0e0d0b2ff5 90 //gps.setVtg(vtg);
joosttromp 0:be0e0d0b2ff5 91
joosttromp 0:be0e0d0b2ff5 92 //gps.attach_rmc(&rmc);
joosttromp 0:be0e0d0b2ff5 93 //gps.attach_vtg(&vtg);
joosttromp 0:be0e0d0b2ff5 94 //gps.attach_gga(&gga);
joosttromp 0:be0e0d0b2ff5 95
joosttromp 0:be0e0d0b2ff5 96 struct tm t;
joosttromp 0:be0e0d0b2ff5 97 GPS_Time *q2 = gps.timeNow();
joosttromp 0:be0e0d0b2ff5 98
joosttromp 0:be0e0d0b2ff5 99 while (q2->year == 2000) {
joosttromp 0:be0e0d0b2ff5 100 wait(0.1);
joosttromp 0:be0e0d0b2ff5 101 GPS_Time *q2 = gps.timeNow();
joosttromp 0:be0e0d0b2ff5 102 t.tm_sec = q2->second; // 0-59
joosttromp 0:be0e0d0b2ff5 103 t.tm_min = q2->minute; // 0-59
joosttromp 0:be0e0d0b2ff5 104 t.tm_hour = q2->hour; // 0-23
joosttromp 0:be0e0d0b2ff5 105 t.tm_mday = q2->day; // 1-31
joosttromp 0:be0e0d0b2ff5 106 t.tm_mon = (q2->month - 1); // 0-11
joosttromp 0:be0e0d0b2ff5 107 t.tm_year = (q2->year - 1900); // year since 1900
joosttromp 0:be0e0d0b2ff5 108 time_t timestamp = mktime(&t);
joosttromp 0:be0e0d0b2ff5 109 set_time(timestamp);
joosttromp 0:be0e0d0b2ff5 110 if (q2->year != 2000) break;
joosttromp 0:be0e0d0b2ff5 111 pc.printf(".");
joosttromp 0:be0e0d0b2ff5 112 }
joosttromp 0:be0e0d0b2ff5 113 delete(q2);
joosttromp 0:be0e0d0b2ff5 114 pc.printf("\r\n");
joosttromp 0:be0e0d0b2ff5 115
joosttromp 0:be0e0d0b2ff5 116 gps.attach_gga(&pos);
joosttromp 0:be0e0d0b2ff5 117 gps.attach_rmc(&pos);
joosttromp 0:be0e0d0b2ff5 118 }