
test
Dependencies: GPS TextLCD mbed
Fork of GPS_classroom by
main.cpp@4:41de6c2673f3, 2015-05-23 (annotated)
- Committer:
- fookies
- Date:
- Sat May 23 04:42:51 2015 +0000
- Revision:
- 4:41de6c2673f3
- Parent:
- 3:37086b58ab05
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
narongdet | 0:dfd102afb417 | 1 | #include "mbed.h" |
narongdet | 0:dfd102afb417 | 2 | #include "GPS.h" |
narongdet | 0:dfd102afb417 | 3 | #include "TextLCD.h" |
narongdet | 0:dfd102afb417 | 4 | GPS gps(PA_11,PA_12); |
narongdet | 0:dfd102afb417 | 5 | I2C i2c_lcd(D14,D15); |
narongdet | 0:dfd102afb417 | 6 | TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2); |
fookies | 2:8c0dcaa10883 | 7 | Serial esp(D8,D2); |
fookies | 4:41de6c2673f3 | 8 | DigitalIn bt(D5); |
fookies | 4:41de6c2673f3 | 9 | |
fookies | 2:8c0dcaa10883 | 10 | uint8_t buffer[0x100]; |
fookies | 2:8c0dcaa10883 | 11 | uint16_t buffer_head; |
fookies | 2:8c0dcaa10883 | 12 | uint16_t buffer_tail; |
fookies | 2:8c0dcaa10883 | 13 | |
fookies | 2:8c0dcaa10883 | 14 | void rxcallback(void) { |
fookies | 2:8c0dcaa10883 | 15 | uint8_t chr; |
fookies | 2:8c0dcaa10883 | 16 | while (esp.readable()) { |
fookies | 2:8c0dcaa10883 | 17 | chr = esp.getc(); |
fookies | 2:8c0dcaa10883 | 18 | pc.putc(chr); |
fookies | 2:8c0dcaa10883 | 19 | buffer[buffer_head++] = chr; |
fookies | 2:8c0dcaa10883 | 20 | if (buffer_head == BUFFER_SIZE) |
fookies | 2:8c0dcaa10883 | 21 | { |
fookies | 2:8c0dcaa10883 | 22 | buffer_head = 0; |
fookies | 2:8c0dcaa10883 | 23 | } |
fookies | 2:8c0dcaa10883 | 24 | } |
fookies | 2:8c0dcaa10883 | 25 | } |
fookies | 2:8c0dcaa10883 | 26 | void flush_fifo(void) |
fookies | 2:8c0dcaa10883 | 27 | { |
fookies | 2:8c0dcaa10883 | 28 | while (esp.readable()) |
fookies | 2:8c0dcaa10883 | 29 | { |
fookies | 2:8c0dcaa10883 | 30 | (void)esp.getc(); |
fookies | 2:8c0dcaa10883 | 31 | } |
fookies | 2:8c0dcaa10883 | 32 | buffer_head = 0; |
fookies | 2:8c0dcaa10883 | 33 | buffer_tail = 0; |
fookies | 2:8c0dcaa10883 | 34 | } |
fookies | 2:8c0dcaa10883 | 35 | int find_response(const char *resp) { |
fookies | 2:8c0dcaa10883 | 36 | /* Give some delay for buffer to fill up */ |
fookies | 2:8c0dcaa10883 | 37 | wait_ms(10); |
fookies | 2:8c0dcaa10883 | 38 | int timeout = 0xFFFFFF; |
fookies | 2:8c0dcaa10883 | 39 | int len = strlen(resp); |
fookies | 2:8c0dcaa10883 | 40 | do |
fookies | 2:8c0dcaa10883 | 41 | { |
fookies | 2:8c0dcaa10883 | 42 | if (buffer_head > (buffer_tail + len)) |
fookies | 2:8c0dcaa10883 | 43 | { |
fookies | 2:8c0dcaa10883 | 44 | if (!memcmp(&buffer[buffer_tail], resp, len)) |
fookies | 2:8c0dcaa10883 | 45 | { |
fookies | 2:8c0dcaa10883 | 46 | flush_fifo(); |
fookies | 2:8c0dcaa10883 | 47 | return 0; |
fookies | 2:8c0dcaa10883 | 48 | } |
fookies | 2:8c0dcaa10883 | 49 | buffer_tail++; |
fookies | 2:8c0dcaa10883 | 50 | } |
fookies | 2:8c0dcaa10883 | 51 | }while(timeout--); |
fookies | 2:8c0dcaa10883 | 52 | flush_fifo(); |
fookies | 2:8c0dcaa10883 | 53 | return 1; |
fookies | 2:8c0dcaa10883 | 54 | } |
fookies | 2:8c0dcaa10883 | 55 | |
narongdet | 0:dfd102afb417 | 56 | int main() |
narongdet | 0:dfd102afb417 | 57 | { |
narongdet | 0:dfd102afb417 | 58 | lcd.setMode(TextLCD::DispOn); |
narongdet | 0:dfd102afb417 | 59 | lcd.setBacklight(TextLCD::LightOff); |
narongdet | 0:dfd102afb417 | 60 | lcd.setCursor(TextLCD::CurOff_BlkOff); |
fookies | 2:8c0dcaa10883 | 61 | esp.attach(&rxcallback, Serial::RxIrq); |
narongdet | 0:dfd102afb417 | 62 | lcd.setAddress(0,0); |
narongdet | 0:dfd102afb417 | 63 | lcd.printf("Initial GPS...\n"); |
fookies | 2:8c0dcaa10883 | 64 | esp.printf("AT+RST\r\n"); |
fookies | 3:37086b58ab05 | 65 | MBED_ASSERT(find_response("OK") == 0); |
fookies | 3:37086b58ab05 | 66 | esp.printf("AT+CWMODE=1\r\n"); |
fookies | 3:37086b58ab05 | 67 | MBED_ASSERT(find_response("OK") == 0); |
fookies | 3:37086b58ab05 | 68 | esp.printf("AT+CWJAP=\"%s\",\"%s\"\r\n","Fookies-One(m8)","12312344"); |
fookies | 3:37086b58ab05 | 69 | wait(5); |
fookies | 3:37086b58ab05 | 70 | MBED_ASSERT(find_response("OK") == 0); |
fookies | 3:37086b58ab05 | 71 | esp.printf("AT+CIPMUX=0\r\n"); |
fookies | 3:37086b58ab05 | 72 | MBED_ASSERT(find_response("OK") == 0); |
narongdet | 0:dfd102afb417 | 73 | while(1){ |
narongdet | 0:dfd102afb417 | 74 | if(gps.sample()) |
narongdet | 0:dfd102afb417 | 75 | { |
narongdet | 0:dfd102afb417 | 76 | lcd.setAddress(0,1); |
narongdet | 0:dfd102afb417 | 77 | lcd.printf("%6.3f,%7.3f",gps.latitude,gps.longitude); |
narongdet | 0:dfd102afb417 | 78 | } |
narongdet | 0:dfd102afb417 | 79 | wait(0.5); |
fookies | 3:37086b58ab05 | 80 | if(bt==1) |
fookies | 3:37086b58ab05 | 81 | { |
fookies | 3:37086b58ab05 | 82 | sprintf(message,"GET /apps/thingtweet/1/statuses/update?key=T5M60A23PDCU6NIH&status=%.3f,%.3f",gps.latitude,gps.longitude); |
fookies | 3:37086b58ab05 | 83 | esp.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n","184.106.153.149","80"); |
fookies | 3:37086b58ab05 | 84 | esp.printf("AT+CIPSEND=0,%d\r\n",strlen(message)); |
fookies | 3:37086b58ab05 | 85 | if(find_response(">") == 0) |
fookies | 3:37086b58ab05 | 86 | { |
fookies | 3:37086b58ab05 | 87 | esp.printf(message); |
fookies | 3:37086b58ab05 | 88 | } |
fookies | 3:37086b58ab05 | 89 | wait(2); |
fookies | 3:37086b58ab05 | 90 | flush_fifo(); |
fookies | 3:37086b58ab05 | 91 | esp.printf("AT+CIPCLOSE\r\n"); |
fookies | 3:37086b58ab05 | 92 | wait(0.5); |
fookies | 3:37086b58ab05 | 93 | flush_fifo(); |
fookies | 3:37086b58ab05 | 94 | } |
narongdet | 0:dfd102afb417 | 95 | } |
narongdet | 0:dfd102afb417 | 96 | } |
narongdet | 0:dfd102afb417 | 97 |