kk

Dependencies:   GPS TextLCD mbed

Fork of GPS_classroom by Thanawat Phattaraworamet

Committer:
tomece11
Date:
Tue Jun 02 11:04:02 2015 +0000
Revision:
6:aa79fcaca263
Parent:
5:27468969d61f
??????????

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"
tomece11 6:aa79fcaca263 4 #define BUFFER_SIZE 100
tomece11 6:aa79fcaca263 5
narongdet 0:dfd102afb417 6 GPS gps(PA_11,PA_12);
narongdet 0:dfd102afb417 7 I2C i2c_lcd(D14,D15);
narongdet 0:dfd102afb417 8 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);
fookies 2:8c0dcaa10883 9 Serial esp(D8,D2);
tomece11 6:aa79fcaca263 10 DigitalIn bt(D5,PullUp);
tomece11 6:aa79fcaca263 11 Serial pc(USBTX, USBRX);
tomece11 6:aa79fcaca263 12 char message[400];
fookies 4:41de6c2673f3 13
fookies 2:8c0dcaa10883 14 uint8_t buffer[0x100];
fookies 2:8c0dcaa10883 15 uint16_t buffer_head;
fookies 2:8c0dcaa10883 16 uint16_t buffer_tail;
tomece11 6:aa79fcaca263 17 char s1[100];
tomece11 6:aa79fcaca263 18
fookies 2:8c0dcaa10883 19
fookies 2:8c0dcaa10883 20 void rxcallback(void) {
fookies 2:8c0dcaa10883 21 uint8_t chr;
fookies 2:8c0dcaa10883 22 while (esp.readable()) {
fookies 2:8c0dcaa10883 23 chr = esp.getc();
fookies 2:8c0dcaa10883 24 pc.putc(chr);
fookies 2:8c0dcaa10883 25 buffer[buffer_head++] = chr;
fookies 2:8c0dcaa10883 26 if (buffer_head == BUFFER_SIZE)
fookies 2:8c0dcaa10883 27 {
fookies 2:8c0dcaa10883 28 buffer_head = 0;
fookies 2:8c0dcaa10883 29 }
fookies 2:8c0dcaa10883 30 }
fookies 2:8c0dcaa10883 31 }
fookies 2:8c0dcaa10883 32 void flush_fifo(void)
fookies 2:8c0dcaa10883 33 {
fookies 2:8c0dcaa10883 34 while (esp.readable())
fookies 2:8c0dcaa10883 35 {
fookies 2:8c0dcaa10883 36 (void)esp.getc();
fookies 2:8c0dcaa10883 37 }
fookies 2:8c0dcaa10883 38 buffer_head = 0;
fookies 2:8c0dcaa10883 39 buffer_tail = 0;
fookies 2:8c0dcaa10883 40 }
fookies 2:8c0dcaa10883 41 int find_response(const char *resp) {
fookies 2:8c0dcaa10883 42 /* Give some delay for buffer to fill up */
fookies 2:8c0dcaa10883 43 wait_ms(10);
fookies 2:8c0dcaa10883 44 int timeout = 0xFFFFFF;
fookies 2:8c0dcaa10883 45 int len = strlen(resp);
fookies 2:8c0dcaa10883 46 do
fookies 2:8c0dcaa10883 47 {
fookies 2:8c0dcaa10883 48 if (buffer_head > (buffer_tail + len))
fookies 2:8c0dcaa10883 49 {
fookies 2:8c0dcaa10883 50 if (!memcmp(&buffer[buffer_tail], resp, len))
fookies 2:8c0dcaa10883 51 {
fookies 2:8c0dcaa10883 52 flush_fifo();
fookies 2:8c0dcaa10883 53 return 0;
fookies 2:8c0dcaa10883 54 }
fookies 2:8c0dcaa10883 55 buffer_tail++;
fookies 2:8c0dcaa10883 56 }
fookies 2:8c0dcaa10883 57 }while(timeout--);
fookies 2:8c0dcaa10883 58 flush_fifo();
fookies 2:8c0dcaa10883 59 return 1;
fookies 2:8c0dcaa10883 60 }
fookies 2:8c0dcaa10883 61
narongdet 0:dfd102afb417 62 int main()
narongdet 0:dfd102afb417 63 {
narongdet 0:dfd102afb417 64 lcd.setMode(TextLCD::DispOn);
narongdet 0:dfd102afb417 65 lcd.setBacklight(TextLCD::LightOff);
narongdet 0:dfd102afb417 66 lcd.setCursor(TextLCD::CurOff_BlkOff);
fookies 2:8c0dcaa10883 67 esp.attach(&rxcallback, Serial::RxIrq);
narongdet 0:dfd102afb417 68 lcd.setAddress(0,0);
narongdet 0:dfd102afb417 69 lcd.printf("Initial GPS...\n");
fookies 2:8c0dcaa10883 70 esp.printf("AT+RST\r\n");
tomece11 6:aa79fcaca263 71 //lcd.printf("1\n");
fookies 3:37086b58ab05 72 MBED_ASSERT(find_response("OK") == 0);
tomece11 6:aa79fcaca263 73 //lcd.printf("2\n");
fookies 3:37086b58ab05 74 esp.printf("AT+CWMODE=1\r\n");
tomece11 6:aa79fcaca263 75 //MBED_ASSERT(find_response("OK") == 0);
tomece11 6:aa79fcaca263 76 //lcd.printf("3\n");
fookies 3:37086b58ab05 77 esp.printf("AT+CWJAP=\"%s\",\"%s\"\r\n","Fookies-One(m8)","12312344");
fookies 3:37086b58ab05 78 wait(5);
tomece11 6:aa79fcaca263 79 //MBED_ASSERT(find_response("OK") == 0);
tomece11 6:aa79fcaca263 80 //lcd.printf("4\n");
fookies 3:37086b58ab05 81 esp.printf("AT+CIPMUX=0\r\n");
tomece11 6:aa79fcaca263 82 //MBED_ASSERT(find_response("OK") == 0);
tomece11 6:aa79fcaca263 83 //lcd.printf("5\n");
narongdet 0:dfd102afb417 84 while(1){
narongdet 0:dfd102afb417 85 if(gps.sample())
narongdet 0:dfd102afb417 86 {
tomece11 6:aa79fcaca263 87 lcd.cls();
tomece11 6:aa79fcaca263 88 lcd.printf("LAT:%6.3f\nLON:%7.3f",gps.latitude,gps.longitude);
narongdet 0:dfd102afb417 89 }
narongdet 0:dfd102afb417 90 wait(0.5);
tomece11 6:aa79fcaca263 91 if(bt==0)
fookies 3:37086b58ab05 92 {
tomece11 6:aa79fcaca263 93 lcd.cls();
tomece11 6:aa79fcaca263 94 lcd.printf("Sending to twitter");
tomece11 6:aa79fcaca263 95
tomece11 6:aa79fcaca263 96 sprintf(s1,"api_key=GRMKGK1CTUU7L5RD&status=LAT:%.3f,LON:%.3f",gps.latitude,gps.longitude);
tomece11 6:aa79fcaca263 97 sprintf(message,"POST /apps/thingtweet/1/statuses/update HTTP/1.1\nHost: api.thingspeak.com\nConnection: close\nContent-Type: application/x-www-form-urlencoded\nContent-Length: %d\n\n%s",strlen(s1),s1);
fookies 3:37086b58ab05 98 esp.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n","184.106.153.149","80");
tomece11 6:aa79fcaca263 99 //lcd.cls();
tomece11 6:aa79fcaca263 100 //lcd.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n","184.106.153.149","80");
tomece11 6:aa79fcaca263 101 wait(2);
tomece11 6:aa79fcaca263 102 esp.printf("AT+CIPSEND=%d\r\n",strlen(message));
tomece11 6:aa79fcaca263 103 //lcd.cls();
tomece11 6:aa79fcaca263 104 //lcd.printf("AT+CIPSEND=%d\r\n",strlen(message));
tomece11 6:aa79fcaca263 105 wait(2);
fookies 3:37086b58ab05 106 if(find_response(">") == 0)
fookies 3:37086b58ab05 107 {
tomece11 6:aa79fcaca263 108 //lcd.cls();
tomece11 6:aa79fcaca263 109 //lcd.printf(message);
fookies 3:37086b58ab05 110 esp.printf(message);
fookies 3:37086b58ab05 111 }
fookies 3:37086b58ab05 112 wait(2);
fookies 3:37086b58ab05 113 flush_fifo();
fookies 3:37086b58ab05 114 esp.printf("AT+CIPCLOSE\r\n");
fookies 3:37086b58ab05 115 wait(0.5);
fookies 3:37086b58ab05 116 flush_fifo();
tomece11 6:aa79fcaca263 117 lcd.cls();
tomece11 6:aa79fcaca263 118 lcd.printf("Send Completed\n");
fookies 3:37086b58ab05 119 }
narongdet 0:dfd102afb417 120 }
narongdet 0:dfd102afb417 121 }
narongdet 0:dfd102afb417 122