Basic set up to connect WiFi with mDot and ESP8266-12
Fork of mbed-os-example-mbed5-blinky by
Revision 40:52621e958d2c, committed 2017-07-11
- Comitter:
- jortronm
- Date:
- Tue Jul 11 12:43:47 2017 +0000
- Parent:
- 39:bcfaadc319d3
- Commit message:
- Basic set up to connect to WiFi using mDot and ESP8266-12
Changed in this revision
img/uvision.png | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r bcfaadc319d3 -r 52621e958d2c img/uvision.png
diff -r bcfaadc319d3 -r 52621e958d2c main.cpp --- a/main.cpp Thu Jun 22 09:00:02 2017 +0100 +++ b/main.cpp Tue Jul 11 12:43:47 2017 +0000 @@ -1,12 +1,179 @@ #include "mbed.h" -DigitalOut led1(LED1); +//Serial ports definition +int BaudRate =115200; //ESP8266 +Serial pc(USBTX, USBRX,BaudRate); // tx, rx (PA_9,PA_10) +Serial esp(PA_2,PA_3,BaudRate); // tx, rx + +//Pins definitiom +DigitalOut led1(XBEE_RSSI); //XBEE_RSSI PA_8 +DigitalOut led2(PC_9); //Second LED +DigitalOut reset(PB_0); //Pin to reset the ESP + +//Variables definition +Timer t; +int count,ended,timeout; +char buf[1024]; +char snd[255]; +char ssid[32] = "Jorgie's iPhone"; // enter WiFi router ssid inside the quotes +char pwd [32] = "jorge123"; // enter WiFi router password inside the quotes + + +void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(),ESP_HardwareReset(),ESPconnect(); + + +int main() +{ + ESP_HardwareReset(); //ESP8266 Hardware Reset +//ESPsetbaudrate(); //Difines ESP8266 baudrate !!!!!!!!!!!!!!!!!Currently not working!!!!!!!!!!!!!!!!! +//ESPconfig(); //ESP8266 configuration + ESPconnect(); +} + +void ESPconnect() +{ + pc.printf("\n---------- Connecting to AP ----------\r\n"); + pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd); + strcpy(snd, "AT+CWJAP=\""); + strcat(snd, ssid); + strcat(snd, "\",\""); + strcat(snd, pwd); + strcat(snd, "\"\r\n"); + SendCMD(); + timeout=10; + getreply(); + pc.printf(buf); + wait(5); + + pc.printf("\n---------- Get IP's ----------\r\n"); + strcpy(snd, "AT+CIFSR\r\n"); + SendCMD(); + timeout=3; + getreply(); + pc.printf(buf); + wait(1); + + pc.printf("\n---------- Get Connection Status ----------\r\n"); + strcpy(snd, "AT+CIPSTATUS\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf); + + pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n"); + pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n"); + pc.printf(" It saves the SSID and password settings internally\r\n"); + wait(10); +} + + +void ESP_HardwareReset() +{ + reset=0; //hardware reset for 8266 + pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r"); + pc.printf("Done \n\r"); + wait(0.5); + reset=1; + timeout=2; + getreply(); +} + + +void ESPsetbaudrate() +{ + pc.printf("\f\n\r-------------ESP8266 BaudRait Definition-------------\n\r"); + char TempString1[50]; + sprintf(TempString1,"AT+CIOBAUD=%d,\r\n",BaudRate); + strcpy(snd, TempString1); // change the numeric value to the required baudrate + SendCMD(); +} -// main() runs in its own thread in the OS -int main() { - while (true) { - led1 = !led1; - wait(0.5); + +void ESPconfig() +{ + wait(5); + strcpy(snd,"AT\r\n"); + SendCMD(); + timeout=2; + getreply(); + pc.printf(buf); + wait(1); + + pc.printf("\f---------- Starting ESP Config ----------\r\n\n"); + pc.printf("---------- Reset & get Firmware ----------\r\n"); + strcpy(snd,"AT+RST\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf); + wait(2); + + pc.printf("\n---------- Get Version ----------\r\n"); + strcpy(snd,"AT+GMR\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + wait(3); + + // Currently not working !!!!!!!!!!!!!!!!!Currently not working!!!!!!!!!!!!!!!!! + pc.printf("\n---------- Get UART Definition ----------\r\n"); + strcpy(snd,"AT+CIOBAUD?\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + wait(3); + + // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) + pc.printf("\n---------- Setting Mode ----------\r\n"); + strcpy(snd, "AT+CWMODE=1\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + wait(2); + + // set CIPMUX to 0=Single,1=Multi + pc.printf("\n---------- Setting Connection Mode ----------\r\n"); + strcpy(snd, "AT+CIPMUX=1\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + wait(2); + + pc.printf("\n---------- Listing Access Points ----------\r\n"); + strcpy(snd, "AT+CWLAP\r\n"); + SendCMD(); + timeout=15; + getreply(); + pc.printf(buf); + wait(2); +} + + +void SendCMD() +{ + pc.printf("%s", snd); + esp.printf("%s", snd); +} + +void getreply() +{ + memset(buf, '\0', sizeof(buf)); + t.start(); + ended=0; + count=0; + while(!ended) { + if(esp.readable()) { + buf[count] = esp.getc(); + count++; + } + if(t.read() > timeout) { + ended = 1; + t.stop(); + t.reset(); + } } } -