
Dependencies: SCP1000 GPS mbed
Revision 0:be0e0d0b2ff5, committed 2011-06-17
- Comitter:
- joosttromp
- Date:
- Fri Jun 17 12:37:41 2011 +0000
- Commit message:
Changed in this revision
diff -r 000000000000 -r be0e0d0b2ff5 GPS.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPS.lib Fri Jun 17 12:37:41 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/joosttromp/code/GPS/#62fa44dd600b
diff -r 000000000000 -r be0e0d0b2ff5 SCP1000.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SCP1000.lib Fri Jun 17 12:37:41 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/joosttromp/code/SCP1000/#55ea30b5de1e
diff -r 000000000000 -r be0e0d0b2ff5 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jun 17 12:37:41 2011 +0000 @@ -0,0 +1,118 @@ +#include "mbed.h" +#include "GPS.h" +#include "SCP1000.h" + +/* +$PMTK251,115200*1F +$PMTK220,100*2F +RMC,VTG,GGA +$PMTK314,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2A +*/ +#define GPSTX p9 +#define GPSRX p10 +#define PCBAUD 115200 +#define GPSBAUD 115200 + +#define DEGREES 176 +// 176 is degree untranslated +// 248 is degree translated + +Serial pc(USBTX, USBRX); +GPS gps(GPSTX, GPSRX); +SCP1000 scp1000(p11,p12,p13,p14); +//SDFileSystem sd(p5,p6,p7,p8,"sd"); + +char rmc[GPS_BUFFER_LEN]; +char gga[GPS_BUFFER_LEN]; +char vtg[GPS_BUFFER_LEN]; + +bool validgps; +bool validtime; +short int sats; +double latitude; +double longitude; +float altitude; +float pressure; +float velocity; +float track; + +DigitalOut led1(LED1); +Timeout t1; +void t1out(void) { led1 = 0; } +void blip1(void) { led1 = 1; t1.attach(&t1out, 0.01); } + +DigitalOut led2(LED2); +Timeout t2; +void t2out(void) { led2 = 0; } +void blip2(void) { led2 = 1; t2.attach(&t2out, 0.01); } + +DigitalOut led3(LED3); +Timeout t3; +void t3out(void) { led3 = 0; } +void blip3(void) { led3 = 1; t3.attach(&t3out, 0.01); } + +DigitalOut led4(LED4); +Timeout t4; +void t4out(void) { led4 = 0; } +void blip4(void) { led4 = 1; t4.attach(&t4out, 0.01); } + +GPS_Geodetic g; +GPS_VTG v; + +void pos(void) { + blip4(); + gps.geodetic(&g); + gps.vtg(&v); + latitude = g.lat; + longitude = g.lon; + altitude = g.alt; + velocity = v._velocity_knots; + track = v._track_true; + sats = gps.numOfSats(); + validgps = false; + validtime = false; + validgps = gps.getGPSquality(); + validtime = gps.isTimeValid(); + if (!validgps) { latitude = 0.000000; longitude = 0.000000; velocity = 0.000000; track = 0.000000; } + 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 + time_t seconds = time(NULL); + pc.printf("%s\r\n", ctime(&seconds)); + } + +int main() { + + pc.baud(PCBAUD); + gps.baud(GPSBAUD); + gps.format(8, GPS::None, 1); + + //gps.setRmc(rmc); + //gps.setGga(gga); + //gps.setVtg(vtg); + + //gps.attach_rmc(&rmc); + //gps.attach_vtg(&vtg); + //gps.attach_gga(&gga); + + struct tm t; + GPS_Time *q2 = gps.timeNow(); + + while (q2->year == 2000) { + wait(0.1); + GPS_Time *q2 = gps.timeNow(); + t.tm_sec = q2->second; // 0-59 + t.tm_min = q2->minute; // 0-59 + t.tm_hour = q2->hour; // 0-23 + t.tm_mday = q2->day; // 1-31 + t.tm_mon = (q2->month - 1); // 0-11 + t.tm_year = (q2->year - 1900); // year since 1900 + time_t timestamp = mktime(&t); + set_time(timestamp); + if (q2->year != 2000) break; + pc.printf("."); + } + delete(q2); + pc.printf("\r\n"); + + gps.attach_gga(&pos); + gps.attach_rmc(&pos); +}
diff -r 000000000000 -r be0e0d0b2ff5 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jun 17 12:37:41 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912