test

Dependencies:   GPS TextLCD mbed

Fork of GPS_classroom by Narongdet Phonphuak

Committer:
fookies
Date:
Sat May 23 04:42:51 2015 +0000
Revision:
4:41de6c2673f3
Parent:
3:37086b58ab05
test

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 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