test

Dependencies:   GPS TextLCD mbed

Fork of GPS_classroom by Narongdet Phonphuak

Committer:
fookies
Date:
Sat May 23 04:39:50 2015 +0000
Revision:
3:37086b58ab05
Parent:
2:8c0dcaa10883
Child:
4:41de6c2673f3
eee

Who changed what in which revision?

UserRevisionLine numberNew 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 2:8c0dcaa10883 8 uint8_t buffer[0x100];
fookies 2:8c0dcaa10883 9 uint16_t buffer_head;
fookies 2:8c0dcaa10883 10 uint16_t buffer_tail;
fookies 2:8c0dcaa10883 11
fookies 2:8c0dcaa10883 12 void rxcallback(void) {
fookies 2:8c0dcaa10883 13 uint8_t chr;
fookies 2:8c0dcaa10883 14 while (esp.readable()) {
fookies 2:8c0dcaa10883 15 chr = esp.getc();
fookies 2:8c0dcaa10883 16 pc.putc(chr);
fookies 2:8c0dcaa10883 17 buffer[buffer_head++] = chr;
fookies 2:8c0dcaa10883 18 if (buffer_head == BUFFER_SIZE)
fookies 2:8c0dcaa10883 19 {
fookies 2:8c0dcaa10883 20 buffer_head = 0;
fookies 2:8c0dcaa10883 21 }
fookies 2:8c0dcaa10883 22 }
fookies 2:8c0dcaa10883 23 }
fookies 2:8c0dcaa10883 24 void flush_fifo(void)
fookies 2:8c0dcaa10883 25 {
fookies 2:8c0dcaa10883 26 while (esp.readable())
fookies 2:8c0dcaa10883 27 {
fookies 2:8c0dcaa10883 28 (void)esp.getc();
fookies 2:8c0dcaa10883 29 }
fookies 2:8c0dcaa10883 30 buffer_head = 0;
fookies 2:8c0dcaa10883 31 buffer_tail = 0;
fookies 2:8c0dcaa10883 32 }
fookies 2:8c0dcaa10883 33 int find_response(const char *resp) {
fookies 2:8c0dcaa10883 34 /* Give some delay for buffer to fill up */
fookies 2:8c0dcaa10883 35 wait_ms(10);
fookies 2:8c0dcaa10883 36 int timeout = 0xFFFFFF;
fookies 2:8c0dcaa10883 37 int len = strlen(resp);
fookies 2:8c0dcaa10883 38 do
fookies 2:8c0dcaa10883 39 {
fookies 2:8c0dcaa10883 40 if (buffer_head > (buffer_tail + len))
fookies 2:8c0dcaa10883 41 {
fookies 2:8c0dcaa10883 42 if (!memcmp(&buffer[buffer_tail], resp, len))
fookies 2:8c0dcaa10883 43 {
fookies 2:8c0dcaa10883 44 flush_fifo();
fookies 2:8c0dcaa10883 45 return 0;
fookies 2:8c0dcaa10883 46 }
fookies 2:8c0dcaa10883 47 buffer_tail++;
fookies 2:8c0dcaa10883 48 }
fookies 2:8c0dcaa10883 49 }while(timeout--);
fookies 2:8c0dcaa10883 50 flush_fifo();
fookies 2:8c0dcaa10883 51 return 1;
fookies 2:8c0dcaa10883 52 }
fookies 2:8c0dcaa10883 53
narongdet 0:dfd102afb417 54 int main()
narongdet 0:dfd102afb417 55 {
narongdet 0:dfd102afb417 56 lcd.setMode(TextLCD::DispOn);
narongdet 0:dfd102afb417 57 lcd.setBacklight(TextLCD::LightOff);
narongdet 0:dfd102afb417 58 lcd.setCursor(TextLCD::CurOff_BlkOff);
fookies 2:8c0dcaa10883 59 esp.attach(&rxcallback, Serial::RxIrq);
narongdet 0:dfd102afb417 60 lcd.setAddress(0,0);
narongdet 0:dfd102afb417 61 lcd.printf("Initial GPS...\n");
fookies 2:8c0dcaa10883 62 esp.printf("AT+RST\r\n");
fookies 3:37086b58ab05 63 MBED_ASSERT(find_response("OK") == 0);
fookies 3:37086b58ab05 64 esp.printf("AT+CWMODE=1\r\n");
fookies 3:37086b58ab05 65 MBED_ASSERT(find_response("OK") == 0);
fookies 3:37086b58ab05 66 esp.printf("AT+CWJAP=\"%s\",\"%s\"\r\n","Fookies-One(m8)","12312344");
fookies 3:37086b58ab05 67 wait(5);
fookies 3:37086b58ab05 68 MBED_ASSERT(find_response("OK") == 0);
fookies 3:37086b58ab05 69 esp.printf("AT+CIPMUX=0\r\n");
fookies 3:37086b58ab05 70 MBED_ASSERT(find_response("OK") == 0);
narongdet 0:dfd102afb417 71 while(1){
narongdet 0:dfd102afb417 72 if(gps.sample())
narongdet 0:dfd102afb417 73 {
narongdet 0:dfd102afb417 74 lcd.setAddress(0,1);
narongdet 0:dfd102afb417 75 lcd.printf("%6.3f,%7.3f",gps.latitude,gps.longitude);
narongdet 0:dfd102afb417 76 }
narongdet 0:dfd102afb417 77 wait(0.5);
fookies 3:37086b58ab05 78 if(bt==1)
fookies 3:37086b58ab05 79 {
fookies 3:37086b58ab05 80 sprintf(message,"GET /apps/thingtweet/1/statuses/update?key=T5M60A23PDCU6NIH&status=%.3f,%.3f",gps.latitude,gps.longitude);
fookies 3:37086b58ab05 81 esp.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n","184.106.153.149","80");
fookies 3:37086b58ab05 82 esp.printf("AT+CIPSEND=0,%d\r\n",strlen(message));
fookies 3:37086b58ab05 83 if(find_response(">") == 0)
fookies 3:37086b58ab05 84 {
fookies 3:37086b58ab05 85 esp.printf(message);
fookies 3:37086b58ab05 86 }
fookies 3:37086b58ab05 87 wait(2);
fookies 3:37086b58ab05 88 flush_fifo();
fookies 3:37086b58ab05 89 esp.printf("AT+CIPCLOSE\r\n");
fookies 3:37086b58ab05 90 wait(0.5);
fookies 3:37086b58ab05 91 flush_fifo();
fookies 3:37086b58ab05 92 }
narongdet 0:dfd102afb417 93 }
narongdet 0:dfd102afb417 94 }
narongdet 0:dfd102afb417 95