123
Dependencies: DS3231 ESP8266 GPS TextLCD mbed
main.cpp
- Committer:
- fookies
- Date:
- 2015-05-23
- Revision:
- 0:442fc0fe1f23
File content as of revision 0:442fc0fe1f23:
#include "mbed.h" #include "GPS.h" #include "ESP8266.h" #include "TextLCD.h" #include "DS3231.h" #define BUFFER_SIZE 100 I2C i2c(D14,D15); TextLCD_I2C lcd(&i2c,0x4E,TextLCD::LCD16x2); DS3231 rtc(D14,D15); Serial esp(D8, D2); Serial pc(USBTX, USBRX); GPS gps(PA_11, PA_12); uint8_t buffer[0x100]; uint16_t buffer_head; uint16_t buffer_tail; void rxcallback(void) { uint8_t chr; while (esp.readable()) { chr = esp.getc(); pc.putc(chr); buffer[buffer_head++] = chr; if (buffer_head == BUFFER_SIZE) { buffer_head = 0; } } } void flush_fifo(void) { while (esp.readable()) { (void)esp.getc(); } buffer_head = 0; buffer_tail = 0; } int find_response(const char *resp) { /* Give some delay for buffer to fill up */ wait_ms(10); int timeout = 0xFFFFFF; int len = strlen(resp); do { if (buffer_head > (buffer_tail + len)) { if (!memcmp(&buffer[buffer_tail], resp, len)) { flush_fifo(); return 0; } buffer_tail++; } }while(timeout--); flush_fifo(); return 1; } int main() { int h,m,s; char message[100]; char ip[]="158.108.112.123"; int port=80; char ap_name[]="FSE-Wireless"; char password[]="1234567890"; lcd.setMode(TextLCD::DispOn); lcd.setBacklight(TextLCD::LightOff); lcd.setCursor(TextLCD::CurOff_BlkOff); //esp.attach(&rxcallback, Serial::RxIrq); lcd.printf("Initial GPS...\n"); //rtc.setTime(19,27,30); //initial wifi //esp.printf("AT+RST\r\n"); //lcd.printf("AT+RST\n"); //MBED_ASSERT(find_response("OK") == 0); //esp.printf("AT+CWMODE=1\r\n"); //lcd.printf("AT+CWMODE=1\n"); //wait(2); //flush_fifo(); //esp.printf("AT+CWJAP=\"%s\",\"%s\"\r\n",ap_name,password); //lcd.printf("AT+CWJAP=\"%s\",\"%s\"\n",ap_name,password); //wait(10); //MBED_ASSERT(find_response("OK") == 0); //esp.printf("AT+CIPMUX=0\r\n"); //lcd.printf("AT+CIPMUX=0\n"); //MBED_ASSERT(find_response("OK") == 0); lcd.cls(); while(1){ rtc.readTime(&h,&m,&s); lcd.setAddress(0,0); lcd.printf("%02d:%02d:%02d",h,m,s); if(gps.sample()) { lcd.setAddress(0,1); lcd.printf("%6.3f,%7.3f",gps.latitude,gps.longitude); //sprintf(message,"GET /gps.php?Lat=%f&Lon=%f",gps.latitude,gps.longitude); //esp.printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n",ip,port); //esp.printf("AT+CIPSEND=0,%d\r\n",strlen(message)); //if(find_response(">") == 0) //{ // esp.printf(message); //} //wait(2); //flush_fifo(); //esp.printf("AT+CIPCLOSE\r\n"); wait(0.5); //flush_fifo(); } } }