123

Dependencies:   DS3231 ESP8266 GPS TextLCD mbed

Committer:
fookies
Date:
Sat May 23 04:09:25 2015 +0000
Revision:
0:442fc0fe1f23
123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fookies 0:442fc0fe1f23 1 #include "mbed.h"
fookies 0:442fc0fe1f23 2 #include "GPS.h"
fookies 0:442fc0fe1f23 3 #include "ESP8266.h"
fookies 0:442fc0fe1f23 4 #include "TextLCD.h"
fookies 0:442fc0fe1f23 5 #include "DS3231.h"
fookies 0:442fc0fe1f23 6
fookies 0:442fc0fe1f23 7 #define BUFFER_SIZE 100
fookies 0:442fc0fe1f23 8
fookies 0:442fc0fe1f23 9 I2C i2c(D14,D15);
fookies 0:442fc0fe1f23 10 TextLCD_I2C lcd(&i2c,0x4E,TextLCD::LCD16x2);
fookies 0:442fc0fe1f23 11 DS3231 rtc(D14,D15);
fookies 0:442fc0fe1f23 12 Serial esp(D8, D2);
fookies 0:442fc0fe1f23 13 Serial pc(USBTX, USBRX);
fookies 0:442fc0fe1f23 14 GPS gps(PA_11, PA_12);
fookies 0:442fc0fe1f23 15 uint8_t buffer[0x100];
fookies 0:442fc0fe1f23 16 uint16_t buffer_head;
fookies 0:442fc0fe1f23 17 uint16_t buffer_tail;
fookies 0:442fc0fe1f23 18
fookies 0:442fc0fe1f23 19 void rxcallback(void) {
fookies 0:442fc0fe1f23 20 uint8_t chr;
fookies 0:442fc0fe1f23 21 while (esp.readable()) {
fookies 0:442fc0fe1f23 22 chr = esp.getc();
fookies 0:442fc0fe1f23 23 pc.putc(chr);
fookies 0:442fc0fe1f23 24 buffer[buffer_head++] = chr;
fookies 0:442fc0fe1f23 25 if (buffer_head == BUFFER_SIZE)
fookies 0:442fc0fe1f23 26 {
fookies 0:442fc0fe1f23 27 buffer_head = 0;
fookies 0:442fc0fe1f23 28 }
fookies 0:442fc0fe1f23 29 }
fookies 0:442fc0fe1f23 30 }
fookies 0:442fc0fe1f23 31 void flush_fifo(void)
fookies 0:442fc0fe1f23 32 {
fookies 0:442fc0fe1f23 33 while (esp.readable())
fookies 0:442fc0fe1f23 34 {
fookies 0:442fc0fe1f23 35 (void)esp.getc();
fookies 0:442fc0fe1f23 36 }
fookies 0:442fc0fe1f23 37 buffer_head = 0;
fookies 0:442fc0fe1f23 38 buffer_tail = 0;
fookies 0:442fc0fe1f23 39 }
fookies 0:442fc0fe1f23 40 int find_response(const char *resp) {
fookies 0:442fc0fe1f23 41 /* Give some delay for buffer to fill up */
fookies 0:442fc0fe1f23 42 wait_ms(10);
fookies 0:442fc0fe1f23 43 int timeout = 0xFFFFFF;
fookies 0:442fc0fe1f23 44 int len = strlen(resp);
fookies 0:442fc0fe1f23 45 do
fookies 0:442fc0fe1f23 46 {
fookies 0:442fc0fe1f23 47 if (buffer_head > (buffer_tail + len))
fookies 0:442fc0fe1f23 48 {
fookies 0:442fc0fe1f23 49 if (!memcmp(&buffer[buffer_tail], resp, len))
fookies 0:442fc0fe1f23 50 {
fookies 0:442fc0fe1f23 51 flush_fifo();
fookies 0:442fc0fe1f23 52 return 0;
fookies 0:442fc0fe1f23 53 }
fookies 0:442fc0fe1f23 54 buffer_tail++;
fookies 0:442fc0fe1f23 55 }
fookies 0:442fc0fe1f23 56 }while(timeout--);
fookies 0:442fc0fe1f23 57 flush_fifo();
fookies 0:442fc0fe1f23 58 return 1;
fookies 0:442fc0fe1f23 59 }
fookies 0:442fc0fe1f23 60
fookies 0:442fc0fe1f23 61 int main()
fookies 0:442fc0fe1f23 62 {
fookies 0:442fc0fe1f23 63 int h,m,s;
fookies 0:442fc0fe1f23 64 char message[100];
fookies 0:442fc0fe1f23 65 char ip[]="158.108.112.123";
fookies 0:442fc0fe1f23 66 int port=80;
fookies 0:442fc0fe1f23 67 char ap_name[]="FSE-Wireless";
fookies 0:442fc0fe1f23 68 char password[]="1234567890";
fookies 0:442fc0fe1f23 69
fookies 0:442fc0fe1f23 70 lcd.setMode(TextLCD::DispOn);
fookies 0:442fc0fe1f23 71 lcd.setBacklight(TextLCD::LightOff);
fookies 0:442fc0fe1f23 72 lcd.setCursor(TextLCD::CurOff_BlkOff);
fookies 0:442fc0fe1f23 73 //esp.attach(&rxcallback, Serial::RxIrq);
fookies 0:442fc0fe1f23 74
fookies 0:442fc0fe1f23 75 lcd.printf("Initial GPS...\n");
fookies 0:442fc0fe1f23 76
fookies 0:442fc0fe1f23 77 //rtc.setTime(19,27,30);
fookies 0:442fc0fe1f23 78 //initial wifi
fookies 0:442fc0fe1f23 79 //esp.printf("AT+RST\r\n");
fookies 0:442fc0fe1f23 80 //lcd.printf("AT+RST\n");
fookies 0:442fc0fe1f23 81 //MBED_ASSERT(find_response("OK") == 0);
fookies 0:442fc0fe1f23 82 //esp.printf("AT+CWMODE=1\r\n");
fookies 0:442fc0fe1f23 83 //lcd.printf("AT+CWMODE=1\n");
fookies 0:442fc0fe1f23 84 //wait(2);
fookies 0:442fc0fe1f23 85 //flush_fifo();
fookies 0:442fc0fe1f23 86 //esp.printf("AT+CWJAP=\"%s\",\"%s\"\r\n",ap_name,password);
fookies 0:442fc0fe1f23 87 //lcd.printf("AT+CWJAP=\"%s\",\"%s\"\n",ap_name,password);
fookies 0:442fc0fe1f23 88 //wait(10);
fookies 0:442fc0fe1f23 89 //MBED_ASSERT(find_response("OK") == 0);
fookies 0:442fc0fe1f23 90 //esp.printf("AT+CIPMUX=0\r\n");
fookies 0:442fc0fe1f23 91 //lcd.printf("AT+CIPMUX=0\n");
fookies 0:442fc0fe1f23 92 //MBED_ASSERT(find_response("OK") == 0);
fookies 0:442fc0fe1f23 93
fookies 0:442fc0fe1f23 94 lcd.cls();
fookies 0:442fc0fe1f23 95 while(1){
fookies 0:442fc0fe1f23 96 rtc.readTime(&h,&m,&s);
fookies 0:442fc0fe1f23 97 lcd.setAddress(0,0);
fookies 0:442fc0fe1f23 98 lcd.printf("%02d:%02d:%02d",h,m,s);
fookies 0:442fc0fe1f23 99 if(gps.sample())
fookies 0:442fc0fe1f23 100 {
fookies 0:442fc0fe1f23 101 lcd.setAddress(0,1);
fookies 0:442fc0fe1f23 102 lcd.printf("%6.3f,%7.3f",gps.latitude,gps.longitude);
fookies 0:442fc0fe1f23 103 //sprintf(message,"GET /gps.php?Lat=%f&Lon=%f",gps.latitude,gps.longitude);
fookies 0:442fc0fe1f23 104 //esp.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n",ip,port);
fookies 0:442fc0fe1f23 105 //esp.printf("AT+CIPSEND=0,%d\r\n",strlen(message));
fookies 0:442fc0fe1f23 106 //if(find_response(">") == 0)
fookies 0:442fc0fe1f23 107 //{
fookies 0:442fc0fe1f23 108 // esp.printf(message);
fookies 0:442fc0fe1f23 109 //}
fookies 0:442fc0fe1f23 110 //wait(2);
fookies 0:442fc0fe1f23 111 //flush_fifo();
fookies 0:442fc0fe1f23 112 //esp.printf("AT+CIPCLOSE\r\n");
fookies 0:442fc0fe1f23 113 wait(0.5);
fookies 0:442fc0fe1f23 114 //flush_fifo();
fookies 0:442fc0fe1f23 115
fookies 0:442fc0fe1f23 116 }
fookies 0:442fc0fe1f23 117 }
fookies 0:442fc0fe1f23 118 }