ESP8266 set up for AT version 1.7.0

Dependencies:   mbed

Use this to set and test the ESP8266.

For ESP8266 firmware v1.7.0 and v1.7.1

restore.. resets the ESP8266 to factory settings with baud rate 115200 this is MBED-OS default setting.

config.. use this if you want to set ssid, password and mode in the ESP8266 flash.

setbaud.. set the ESP8266 baud rate that will stored in ESP8266 flash.

Most platforms will work up to 460800 baud, 921600 works on platforms with a MCU clock speed of 100MHz and above. MBED-OS built in ESP8266 driver only works up to 460800 at time of writing but is considerably faster than the default 115200 .

In most cases use 'restore' and 'setbaud' to reset the ESP8266 back to factory settings with your required baud rate.

Committer:
star297
Date:
Tue Apr 21 08:53:23 2020 +0000
Revision:
4:cd4543cf2f9c
Parent:
3:14e33fec26c3
updated

Who changed what in which revision?

UserRevisionLine numberNew contents of line
star297 0:5ebf44bd3694 1 #include "mbed.h"
star297 0:5ebf44bd3694 2
star297 0:5ebf44bd3694 3 Serial pc(USBTX, USBRX);
star297 4:cd4543cf2f9c 4 Serial esp(p13,p14); // tx,rx LPC1768
star297 4:cd4543cf2f9c 5 //Serial esp(D8,D2); // tx,rx Nucleo
star297 0:5ebf44bd3694 6
star297 0:5ebf44bd3694 7 Timer t;
star297 0:5ebf44bd3694 8
star297 4:cd4543cf2f9c 9 char cmdbuff[1024];
star297 0:5ebf44bd3694 10 char snd[255];
star297 4:cd4543cf2f9c 11 int timeout;
star297 4:cd4543cf2f9c 12 int Baud;
star297 0:5ebf44bd3694 13
star297 4:cd4543cf2f9c 14 char ssid[32] = "ssid"; // enter router ssid inside the quotes
star297 4:cd4543cf2f9c 15 char pwd [32] = "password"; // enter router password inside the quotes
star297 0:5ebf44bd3694 16
star297 4:cd4543cf2f9c 17 void SendCMD(),getreply(),config(),restore(),getESP();
star297 4:cd4543cf2f9c 18 void setbaud(int espbaud);
star297 0:5ebf44bd3694 19
star297 0:5ebf44bd3694 20
star297 0:5ebf44bd3694 21 int main() {
star297 0:5ebf44bd3694 22
star297 4:cd4543cf2f9c 23 pc.baud(115200);
star297 4:cd4543cf2f9c 24 esp.baud(115200); // Default baud is 115200, change this to match setbaud() rate.
star297 3:14e33fec26c3 25
star297 4:cd4543cf2f9c 26 pc.printf("\033[0m\033[2J\033[H\n Initialize....\r\n\n\n");
star297 0:5ebf44bd3694 27
star297 4:cd4543cf2f9c 28 // restore(); //include to restore ESP8266 to default settings at 115200 baud.
star297 4:cd4543cf2f9c 29 // setbaud(460800); //include to set a different ESP8266 baudrate, saved in ESP8266 flash.
star297 4:cd4543cf2f9c 30 // config(); //include Config to set SSID, PASSWORD and MODE configuration saved in ESP8266 flash.
star297 4:cd4543cf2f9c 31
star297 4:cd4543cf2f9c 32 strcpy(snd,"ATE0\r\n");
star297 4:cd4543cf2f9c 33 SendCMD(); // set no AT ESP echo
star297 4:cd4543cf2f9c 34 timeout=5000;
star297 0:5ebf44bd3694 35 getreply();
star297 4:cd4543cf2f9c 36 pc.printf(cmdbuff);
star297 0:5ebf44bd3694 37
star297 4:cd4543cf2f9c 38 pc.printf("Set Mode to station...\r\n");
star297 0:5ebf44bd3694 39 strcpy(snd, "AT+CWMODE=1\r\n");
star297 0:5ebf44bd3694 40 SendCMD();
star297 4:cd4543cf2f9c 41 timeout=1000;
star297 0:5ebf44bd3694 42 getreply();
star297 4:cd4543cf2f9c 43 pc.printf(cmdbuff);
star297 2:c5515c7eba46 44
star297 4:cd4543cf2f9c 45 pc.printf("Connect to AP settings NOT stored in flash..\r\n");
star297 0:5ebf44bd3694 46 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
star297 4:cd4543cf2f9c 47 strcpy(snd, "AT+CWJAP_CUR=\"");
star297 0:5ebf44bd3694 48 strcat(snd, ssid);
star297 0:5ebf44bd3694 49 strcat(snd, "\",\"");
star297 0:5ebf44bd3694 50 strcat(snd, pwd);
star297 0:5ebf44bd3694 51 strcat(snd, "\"\r\n");
star297 0:5ebf44bd3694 52 SendCMD();
star297 4:cd4543cf2f9c 53 timeout=8000;
star297 0:5ebf44bd3694 54 getreply();
star297 4:cd4543cf2f9c 55 pc.printf(cmdbuff);
star297 0:5ebf44bd3694 56
star297 4:cd4543cf2f9c 57 getESP();
star297 4:cd4543cf2f9c 58 }
star297 4:cd4543cf2f9c 59
star297 4:cd4543cf2f9c 60 // contiuosly get ESP82660Firmware, AP list, IP and MAC
star297 4:cd4543cf2f9c 61 void getESP()
star297 4:cd4543cf2f9c 62 {
star297 4:cd4543cf2f9c 63 while(1){
star297 4:cd4543cf2f9c 64
star297 4:cd4543cf2f9c 65 pc.printf("\033[0m\033[2J\033[H ESP8266 check...\r\n\n\n");
star297 4:cd4543cf2f9c 66
star297 4:cd4543cf2f9c 67 pc.printf(" Firmware Version...\r\n");
star297 4:cd4543cf2f9c 68 strcpy(snd,"AT+GMR\r\n");
star297 4:cd4543cf2f9c 69 SendCMD();
star297 4:cd4543cf2f9c 70 timeout=5000;
star297 4:cd4543cf2f9c 71 getreply();
star297 4:cd4543cf2f9c 72 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 73
star297 4:cd4543cf2f9c 74 pc.printf("\n AP's...\r\n");
star297 4:cd4543cf2f9c 75 strcpy(snd, "AT+CWLAP\r\n");
star297 4:cd4543cf2f9c 76 SendCMD();
star297 4:cd4543cf2f9c 77 timeout=3000;
star297 4:cd4543cf2f9c 78 getreply();
star297 4:cd4543cf2f9c 79 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 80
star297 4:cd4543cf2f9c 81 pc.printf(" IP and MAC...\r\n");
star297 4:cd4543cf2f9c 82 strcpy(snd, "AT+CIFSR\r\n");
star297 4:cd4543cf2f9c 83 SendCMD();
star297 4:cd4543cf2f9c 84 timeout=2000;
star297 4:cd4543cf2f9c 85 getreply();
star297 4:cd4543cf2f9c 86 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 87 wait_us(5000000);
star297 4:cd4543cf2f9c 88 }
star297 4:cd4543cf2f9c 89 }
star297 4:cd4543cf2f9c 90
star297 4:cd4543cf2f9c 91 // resturns ESP8266 back to default settings.
star297 4:cd4543cf2f9c 92 void restore()
star297 4:cd4543cf2f9c 93 {
star297 4:cd4543cf2f9c 94 pc.printf("Restore ESP8266 to default...\r\n");
star297 4:cd4543cf2f9c 95 t.reset();t.start();
star297 4:cd4543cf2f9c 96 strcpy(snd, "AT+RESTORE\r\n");
star297 4:cd4543cf2f9c 97 SendCMD();
star297 4:cd4543cf2f9c 98 timeout=5000;
star297 4:cd4543cf2f9c 99 getreply();
star297 4:cd4543cf2f9c 100 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 101 wait_us(2000000);
star297 4:cd4543cf2f9c 102 esp.baud(115200); // set baud back to ESP8266 default
star297 4:cd4543cf2f9c 103 strcpy(snd,"ATE0\r\n");
star297 4:cd4543cf2f9c 104 SendCMD(); // set no ESP echo
star297 4:cd4543cf2f9c 105 timeout=5000;
star297 4:cd4543cf2f9c 106 getreply();
star297 4:cd4543cf2f9c 107 pc.printf("Remember to set esp.baud to default rate 115200\r\n");
star297 4:cd4543cf2f9c 108 wait_us(5000000);
star297 4:cd4543cf2f9c 109 }
star297 4:cd4543cf2f9c 110
star297 4:cd4543cf2f9c 111 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
star297 4:cd4543cf2f9c 112 void setbaud(int espbaud)
star297 4:cd4543cf2f9c 113 {
star297 4:cd4543cf2f9c 114 if(espbaud!=115200 && espbaud!=230400 && espbaud!=460800 && espbaud!=921600){
star297 4:cd4543cf2f9c 115 return;
star297 4:cd4543cf2f9c 116 }
star297 4:cd4543cf2f9c 117 pc.printf("setting ESP8266 baud to: %d\r\n",espbaud);
star297 4:cd4543cf2f9c 118 uint32_t databits=8;
star297 4:cd4543cf2f9c 119 uint32_t stopbits=1;
star297 4:cd4543cf2f9c 120 uint32_t parity=0;
star297 4:cd4543cf2f9c 121 uint32_t flowcontrol=0;
star297 4:cd4543cf2f9c 122 // default mode 8,1,0,0
star297 4:cd4543cf2f9c 123 // <databits>: <stopbits>: <parity>: <flowcontrol>:
star297 4:cd4543cf2f9c 124 // 5-bit data 1=1-bit stop bit 0: None 0: flow control disabled
star297 4:cd4543cf2f9c 125 // 6-bit data 2=1.5-bit stop bit 1: Odd 1: enable RTS
star297 4:cd4543cf2f9c 126 // 7-bit data 3=2-bit stop bit 2: Even 2: enable CTS
star297 4:cd4543cf2f9c 127 // 8-bit data 3: enable both RTS and CTS
star297 4:cd4543cf2f9c 128
star297 4:cd4543cf2f9c 129 sprintf(snd,"AT+UART_DEF=%d,%d,%d,%d,%d\r\n",espbaud,databits,stopbits,parity,flowcontrol);
star297 4:cd4543cf2f9c 130 SendCMD();
star297 4:cd4543cf2f9c 131 pc.printf("Remember to set esp.baud to new rate: %d\r\n",espbaud);
star297 4:cd4543cf2f9c 132 wait_us(3000000);
star297 4:cd4543cf2f9c 133 esp.baud(espbaud); // set baud new rate
star297 4:cd4543cf2f9c 134 }
star297 4:cd4543cf2f9c 135
star297 4:cd4543cf2f9c 136 // To configure ESP8266 permanant settings in flash
star297 4:cd4543cf2f9c 137 void config()
star297 4:cd4543cf2f9c 138 {
star297 4:cd4543cf2f9c 139 pc.printf("\033[0m\033[2J\033[H Starting ESP Config stored in flash\r\n\n\n");
star297 4:cd4543cf2f9c 140
star297 4:cd4543cf2f9c 141 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
star297 4:cd4543cf2f9c 142 pc.printf("Set Mode...\r\n");
star297 4:cd4543cf2f9c 143 strcpy(snd, "AT+CWMODE_DEF=1\r\n");
star297 4:cd4543cf2f9c 144 SendCMD();
star297 4:cd4543cf2f9c 145 timeout=1000;
star297 4:cd4543cf2f9c 146 getreply();
star297 4:cd4543cf2f9c 147 pc.printf(cmdbuff);
star297 0:5ebf44bd3694 148
star297 4:cd4543cf2f9c 149 pc.printf("Listing Acces Points...\r\n");
star297 4:cd4543cf2f9c 150 strcpy(snd, "AT+CWLAP\r\n");
star297 4:cd4543cf2f9c 151 SendCMD();
star297 4:cd4543cf2f9c 152 timeout=3000;
star297 4:cd4543cf2f9c 153 getreply();
star297 4:cd4543cf2f9c 154 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 155
star297 4:cd4543cf2f9c 156 pc.printf("Connecting to AP...\r\n");
star297 4:cd4543cf2f9c 157 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
star297 4:cd4543cf2f9c 158 strcpy(snd, "AT+CWJAP_DEF=\"");
star297 4:cd4543cf2f9c 159 strcat(snd, ssid);
star297 4:cd4543cf2f9c 160 strcat(snd, "\",\"");
star297 4:cd4543cf2f9c 161 strcat(snd, pwd);
star297 4:cd4543cf2f9c 162 strcat(snd, "\"\r\n");
star297 4:cd4543cf2f9c 163 SendCMD();
star297 4:cd4543cf2f9c 164 timeout=8000;
star297 4:cd4543cf2f9c 165 getreply();
star297 4:cd4543cf2f9c 166 pc.printf(cmdbuff);
star297 4:cd4543cf2f9c 167
star297 4:cd4543cf2f9c 168 pc.printf("Get IP's...\r\n");
star297 0:5ebf44bd3694 169 strcpy(snd, "AT+CIFSR\r\n");
star297 0:5ebf44bd3694 170 SendCMD();
star297 4:cd4543cf2f9c 171 timeout=2000;
star297 0:5ebf44bd3694 172 getreply();
star297 4:cd4543cf2f9c 173 pc.printf(cmdbuff);
star297 3:14e33fec26c3 174
star297 0:5ebf44bd3694 175 pc.printf("\n\n\n If you get a valid IP, ESP8266 has been set up.\r\n");
star297 4:cd4543cf2f9c 176 wait_us(5000000);
star297 4:cd4543cf2f9c 177
star297 4:cd4543cf2f9c 178 getESP();
star297 0:5ebf44bd3694 179 }
star297 0:5ebf44bd3694 180
star297 0:5ebf44bd3694 181 void SendCMD()
star297 0:5ebf44bd3694 182 {
star297 0:5ebf44bd3694 183 esp.printf("%s", snd);
star297 0:5ebf44bd3694 184 }
star297 0:5ebf44bd3694 185
star297 0:5ebf44bd3694 186 void getreply()
star297 0:5ebf44bd3694 187 {
star297 4:cd4543cf2f9c 188 uint32_t i=0;
star297 4:cd4543cf2f9c 189 memset(cmdbuff, '\0', sizeof(cmdbuff));
star297 4:cd4543cf2f9c 190 t.reset();t.start();
star297 4:cd4543cf2f9c 191 while(t.read_ms()< timeout) {
star297 0:5ebf44bd3694 192 if(esp.readable()) {
star297 4:cd4543cf2f9c 193 cmdbuff[i] = esp.getc();i++;
star297 0:5ebf44bd3694 194 }
star297 4:cd4543cf2f9c 195 if (cmdbuff[i-2] == 0x4f && cmdbuff[i-1] == 0x4b){break;}
star297 4:cd4543cf2f9c 196 }
star297 4:cd4543cf2f9c 197 cmdbuff[i-2]=0x00; // remove the 'OK' from message
star297 4:cd4543cf2f9c 198 t.stop();
star297 0:5ebf44bd3694 199 }
star297 0:5ebf44bd3694 200