GPS/GSM serial test for Crunchtrack https://hackaday.io/project/7134-crunchtrack
This project is a simple test for the basic functionality of the Crunchtrack Board. It just forwards the serial port of either the GPS or the GSM to the PC's serial port. There's also a basic implementation of the GPS parser library that handles the GPS data and prints out coordinates and other data.
main.cpp@0:99647d2b3203, 2015-08-17 (annotated)
- Committer:
- gipmad
- Date:
- Mon Aug 17 18:48:51 2015 +0000
- Revision:
- 0:99647d2b3203
GPS/GSM basic test for Crunchtrack
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gipmad | 0:99647d2b3203 | 1 | #include "mbed.h" |
gipmad | 0:99647d2b3203 | 2 | #include "GPS.h" |
gipmad | 0:99647d2b3203 | 3 | |
gipmad | 0:99647d2b3203 | 4 | Serial pc(SERIAL_TX, SERIAL_RX); |
gipmad | 0:99647d2b3203 | 5 | //v0.2 |
gipmad | 0:99647d2b3203 | 6 | Serial GSM(PC_10, PC_11); |
gipmad | 0:99647d2b3203 | 7 | // Serial GPS(PB_6, PB_7); |
gipmad | 0:99647d2b3203 | 8 | GPS g1(PB_6, PB_7); |
gipmad | 0:99647d2b3203 | 9 | |
gipmad | 0:99647d2b3203 | 10 | |
gipmad | 0:99647d2b3203 | 11 | //v0.1 |
gipmad | 0:99647d2b3203 | 12 | //Serial GPS(PC_10, PC_11); |
gipmad | 0:99647d2b3203 | 13 | //Serial GSM(PA_14, PA_15); |
gipmad | 0:99647d2b3203 | 14 | |
gipmad | 0:99647d2b3203 | 15 | //breadboard |
gipmad | 0:99647d2b3203 | 16 | //Serial GSM(PB_6, PB_7); |
gipmad | 0:99647d2b3203 | 17 | //Serial GPS(PC_4, PC_5); |
gipmad | 0:99647d2b3203 | 18 | |
gipmad | 0:99647d2b3203 | 19 | //GPS g1(PC_10, PC_11); |
gipmad | 0:99647d2b3203 | 20 | |
gipmad | 0:99647d2b3203 | 21 | DigitalIn mybutton(USER_BUTTON); |
gipmad | 0:99647d2b3203 | 22 | DigitalOut myled(PB_2); |
gipmad | 0:99647d2b3203 | 23 | DigitalOut GSMsw(PA_15); |
gipmad | 0:99647d2b3203 | 24 | |
gipmad | 0:99647d2b3203 | 25 | DigitalOut DET(PB_13); |
gipmad | 0:99647d2b3203 | 26 | /* |
gipmad | 0:99647d2b3203 | 27 | int main() { |
gipmad | 0:99647d2b3203 | 28 | while(1) { |
gipmad | 0:99647d2b3203 | 29 | if (mybutton == 0) { // Button is pressed |
gipmad | 0:99647d2b3203 | 30 | myled = !myled; // Toggle the LED state |
gipmad | 0:99647d2b3203 | 31 | wait(0.2); // 200 ms |
gipmad | 0:99647d2b3203 | 32 | } |
gipmad | 0:99647d2b3203 | 33 | } |
gipmad | 0:99647d2b3203 | 34 | } |
gipmad | 0:99647d2b3203 | 35 | */ |
gipmad | 0:99647d2b3203 | 36 | |
gipmad | 0:99647d2b3203 | 37 | int main() { |
gipmad | 0:99647d2b3203 | 38 | |
gipmad | 0:99647d2b3203 | 39 | DET = 0; |
gipmad | 0:99647d2b3203 | 40 | |
gipmad | 0:99647d2b3203 | 41 | pc.baud(115200); |
gipmad | 0:99647d2b3203 | 42 | //GPS.baud(9600); |
gipmad | 0:99647d2b3203 | 43 | GSM.baud(115200); |
gipmad | 0:99647d2b3203 | 44 | int i = 1; |
gipmad | 0:99647d2b3203 | 45 | pc.printf("Hello World !\n"); |
gipmad | 0:99647d2b3203 | 46 | |
gipmad | 0:99647d2b3203 | 47 | |
gipmad | 0:99647d2b3203 | 48 | ///INIT |
gipmad | 0:99647d2b3203 | 49 | myled = 1; |
gipmad | 0:99647d2b3203 | 50 | //GSMsw = 1; |
gipmad | 0:99647d2b3203 | 51 | wait(1); |
gipmad | 0:99647d2b3203 | 52 | myled = 0; |
gipmad | 0:99647d2b3203 | 53 | |
gipmad | 0:99647d2b3203 | 54 | pc.printf("ON\n"); |
gipmad | 0:99647d2b3203 | 55 | |
gipmad | 0:99647d2b3203 | 56 | |
gipmad | 0:99647d2b3203 | 57 | /* GSM.printf("AT\n"); |
gipmad | 0:99647d2b3203 | 58 | wait(1); |
gipmad | 0:99647d2b3203 | 59 | GSM.printf("AT\n"); |
gipmad | 0:99647d2b3203 | 60 | wait(1);*/ |
gipmad | 0:99647d2b3203 | 61 | |
gipmad | 0:99647d2b3203 | 62 | while(1) { |
gipmad | 0:99647d2b3203 | 63 | |
gipmad | 0:99647d2b3203 | 64 | |
gipmad | 0:99647d2b3203 | 65 | //GSM.printf("AT\n"); |
gipmad | 0:99647d2b3203 | 66 | |
gipmad | 0:99647d2b3203 | 67 | /*if(GSM.readable()) |
gipmad | 0:99647d2b3203 | 68 | pc.putc(GSM.getc()); |
gipmad | 0:99647d2b3203 | 69 | if(pc.readable()) |
gipmad | 0:99647d2b3203 | 70 | GSM.putc(pc.getc());*/ |
gipmad | 0:99647d2b3203 | 71 | |
gipmad | 0:99647d2b3203 | 72 | /*if(GPS.readable()) |
gipmad | 0:99647d2b3203 | 73 | pc.putc(GPS.getc()); |
gipmad | 0:99647d2b3203 | 74 | if(pc.readable()) |
gipmad | 0:99647d2b3203 | 75 | GPS.putc(pc.getc());*/ |
gipmad | 0:99647d2b3203 | 76 | |
gipmad | 0:99647d2b3203 | 77 | |
gipmad | 0:99647d2b3203 | 78 | wait(1); |
gipmad | 0:99647d2b3203 | 79 | pc.printf("ns: %d\r\n", g1.ns()); |
gipmad | 0:99647d2b3203 | 80 | pc.printf("ew: %d\r\n", g1.ew()); |
gipmad | 0:99647d2b3203 | 81 | pc.printf("lock: %d\r\n", g1.lock()); |
gipmad | 0:99647d2b3203 | 82 | pc.printf("t: %f\r\n", g1.time()); |
gipmad | 0:99647d2b3203 | 83 | pc.printf("lat: %f\r\n", g1.latitude()); |
gipmad | 0:99647d2b3203 | 84 | pc.printf("lon: %f\r\n", g1.longitude()); |
gipmad | 0:99647d2b3203 | 85 | /*pc.printf("This program runs since %d seconds.\n", i++); |
gipmad | 0:99647d2b3203 | 86 | s3.putc('U'); |
gipmad | 0:99647d2b3203 | 87 | while(GPS.readable()) |
gipmad | 0:99647d2b3203 | 88 | pc.putc(GPS.getc()); |
gipmad | 0:99647d2b3203 | 89 | */ |
gipmad | 0:99647d2b3203 | 90 | /* |
gipmad | 0:99647d2b3203 | 91 | pc.putc('G'); |
gipmad | 0:99647d2b3203 | 92 | while(GSM.readable()) |
gipmad | 0:99647d2b3203 | 93 | pc.putc(GSM.getc()); |
gipmad | 0:99647d2b3203 | 94 | GSM.printf("AT+CGMI\n\r"); |
gipmad | 0:99647d2b3203 | 95 | //wait(0.001); |
gipmad | 0:99647d2b3203 | 96 | while(GSM.readable()) |
gipmad | 0:99647d2b3203 | 97 | pc.putc(GSM.getc()); |
gipmad | 0:99647d2b3203 | 98 | */ |
gipmad | 0:99647d2b3203 | 99 | |
gipmad | 0:99647d2b3203 | 100 | |
gipmad | 0:99647d2b3203 | 101 | //myled = !myled; |
gipmad | 0:99647d2b3203 | 102 | } |
gipmad | 0:99647d2b3203 | 103 | } |
gipmad | 0:99647d2b3203 | 104 |