Simple configuration program for the ESP8266 Wi-Fi module. Includes baud rate changes. If module [Vendor:www.ai-thinker.com Version:0.9.2.4], the baud rate can be changed from 9600(default) to 230400. Other baud rates that did not work: 460800, 921600. These will set but could not get stable communications. No complicated libraries, once configured the module will store the settings ready to be used in the application. Can be reconfigured if required. Start with 9600, i.e. esp.baud(9600); If no response try esp.baud(57600); and esp.baud(115200); After config completes the program continuously gets AP and IP list.

Dependencies:   mbed

Committer:
star297
Date:
Tue Feb 10 16:59:16 2015 +0000
Revision:
2:c5515c7eba46
Parent:
1:4a9cc6d8c33d
Child:
3:14e33fec26c3
code tidy

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 0:5ebf44bd3694 4 Serial esp(PTE0, PTE1); // tx, rx
star297 0:5ebf44bd3694 5
star297 0:5ebf44bd3694 6 Timer t;
star297 0:5ebf44bd3694 7
star297 0:5ebf44bd3694 8 int count,ended,timeout;
star297 0:5ebf44bd3694 9 char buf[1024];
star297 0:5ebf44bd3694 10 char snd[255];
star297 0:5ebf44bd3694 11
star297 2:c5515c7eba46 12 char ssid[32] = "ssid"; // enter router ssid inside the quotes
star297 2:c5515c7eba46 13 char pwd [32] = "password"; // enter router password inside the quotes
star297 0:5ebf44bd3694 14
star297 0:5ebf44bd3694 15 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate();
star297 0:5ebf44bd3694 16
star297 0:5ebf44bd3694 17
star297 0:5ebf44bd3694 18 int main() {
star297 0:5ebf44bd3694 19
star297 2:c5515c7eba46 20 pc.baud(115200); // set what you want here depending on your terminal program speed
star297 2:c5515c7eba46 21 esp.baud(9600); // change this to the new ESP8266 baudrate if it is changed at any time.
star297 0:5ebf44bd3694 22
star297 0:5ebf44bd3694 23 //ESPsetbaudrate(); //****************** include this routine to set a different ESP8266 baudrate ******************
star297 0:5ebf44bd3694 24
star297 0:5ebf44bd3694 25 ESPconfig(); //****************** include Config to set the ESP8266 configuration ***********************
star297 0:5ebf44bd3694 26
star297 0:5ebf44bd3694 27 }
star297 0:5ebf44bd3694 28
star297 0:5ebf44bd3694 29 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
star297 0:5ebf44bd3694 30 void ESPsetbaudrate()
star297 0:5ebf44bd3694 31 {
star297 0:5ebf44bd3694 32 strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate
star297 0:5ebf44bd3694 33 SendCMD();
star297 0:5ebf44bd3694 34 }
star297 0:5ebf44bd3694 35
star297 0:5ebf44bd3694 36 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
star297 0:5ebf44bd3694 37 void ESPconfig()
star297 0:5ebf44bd3694 38 {
star297 0:5ebf44bd3694 39
star297 0:5ebf44bd3694 40 pc.printf("---------- Starting ESP Config ----------\r\n\n");
star297 0:5ebf44bd3694 41 wait(2);
star297 0:5ebf44bd3694 42 pc.printf("---------- Reset & get Firmware ----------\r\n");
star297 0:5ebf44bd3694 43 strcpy(snd,"AT+RST\r\n");
star297 0:5ebf44bd3694 44 SendCMD();
star297 0:5ebf44bd3694 45 timeout=2;
star297 0:5ebf44bd3694 46 getreply();
star297 0:5ebf44bd3694 47 pc.printf(buf);
star297 0:5ebf44bd3694 48
star297 2:c5515c7eba46 49 wait(1);
star297 0:5ebf44bd3694 50
star297 0:5ebf44bd3694 51 pc.printf("\n---------- Get Version ----------\r\n");
star297 0:5ebf44bd3694 52 strcpy(snd,"AT+GMR\r\n");
star297 0:5ebf44bd3694 53 SendCMD();
star297 0:5ebf44bd3694 54 timeout=1;
star297 0:5ebf44bd3694 55 getreply();
star297 2:c5515c7eba46 56 pc.printf(buf);
star297 0:5ebf44bd3694 57
star297 2:c5515c7eba46 58 wait(1);
star297 2:c5515c7eba46 59
star297 0:5ebf44bd3694 60 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
star297 0:5ebf44bd3694 61 pc.printf("\n---------- Setting Mode ----------\r\n");
star297 0:5ebf44bd3694 62 strcpy(snd, "AT+CWMODE=1\r\n");
star297 0:5ebf44bd3694 63 SendCMD();
star297 0:5ebf44bd3694 64 timeout=1;
star297 0:5ebf44bd3694 65 getreply();
star297 0:5ebf44bd3694 66 pc.printf(buf);
star297 0:5ebf44bd3694 67
star297 0:5ebf44bd3694 68 wait(1);
star297 0:5ebf44bd3694 69
star297 2:c5515c7eba46 70 // set CIPMUX to 0=Single,1=Multi
star297 2:c5515c7eba46 71 pc.printf("\n---------- Setting Connection Mode ----------\r\n");
star297 2:c5515c7eba46 72 strcpy(snd, "AT+CIPMUX=1\r\n");
star297 2:c5515c7eba46 73 SendCMD();
star297 2:c5515c7eba46 74 timeout=1;
star297 2:c5515c7eba46 75 getreply();
star297 2:c5515c7eba46 76 pc.printf(buf);
star297 2:c5515c7eba46 77
star297 2:c5515c7eba46 78 wait(1);
star297 2:c5515c7eba46 79
star297 0:5ebf44bd3694 80 pc.printf("\n---------- Listing Acces Points ----------\r\n");
star297 0:5ebf44bd3694 81 strcpy(snd, "AT+CWLAP\r\n");
star297 0:5ebf44bd3694 82 SendCMD();
star297 0:5ebf44bd3694 83 timeout=3;
star297 0:5ebf44bd3694 84 getreply();
star297 0:5ebf44bd3694 85 pc.printf(buf);
star297 0:5ebf44bd3694 86
star297 0:5ebf44bd3694 87 wait(1);
star297 0:5ebf44bd3694 88
star297 0:5ebf44bd3694 89 pc.printf("\n---------- Connecting to AP ----------\r\n");
star297 0:5ebf44bd3694 90 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
star297 0:5ebf44bd3694 91 strcpy(snd, "AT+CWJAP=\"");
star297 0:5ebf44bd3694 92 strcat(snd, ssid);
star297 0:5ebf44bd3694 93 strcat(snd, "\",\"");
star297 0:5ebf44bd3694 94 strcat(snd, pwd);
star297 0:5ebf44bd3694 95 strcat(snd, "\"\r\n");
star297 0:5ebf44bd3694 96 SendCMD();
star297 0:5ebf44bd3694 97 timeout=8;
star297 0:5ebf44bd3694 98 getreply();
star297 0:5ebf44bd3694 99 pc.printf(buf);
star297 0:5ebf44bd3694 100
star297 0:5ebf44bd3694 101 wait(5);
star297 0:5ebf44bd3694 102
star297 0:5ebf44bd3694 103 pc.printf("\n---------- Get IP's ----------\r\n");
star297 0:5ebf44bd3694 104 strcpy(snd, "AT+CIFSR\r\n");
star297 0:5ebf44bd3694 105 SendCMD();
star297 0:5ebf44bd3694 106 timeout=2;
star297 0:5ebf44bd3694 107 getreply();
star297 0:5ebf44bd3694 108 pc.printf(buf);
star297 0:5ebf44bd3694 109
star297 0:5ebf44bd3694 110 pc.printf("\n\n\n If you get a valid IP, ESP8266 has been set up.\r\n");
star297 0:5ebf44bd3694 111 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
star297 0:5ebf44bd3694 112 }
star297 0:5ebf44bd3694 113
star297 0:5ebf44bd3694 114 void SendCMD()
star297 0:5ebf44bd3694 115 {
star297 0:5ebf44bd3694 116 esp.printf("%s", snd);
star297 0:5ebf44bd3694 117 }
star297 0:5ebf44bd3694 118
star297 0:5ebf44bd3694 119 void getreply()
star297 0:5ebf44bd3694 120 {
star297 0:5ebf44bd3694 121 memset(buf, '\0', sizeof(buf));
star297 0:5ebf44bd3694 122 t.start();
star297 0:5ebf44bd3694 123 ended=0;count=0;
star297 0:5ebf44bd3694 124 while(!ended) {
star297 0:5ebf44bd3694 125 if(esp.readable()) {
star297 0:5ebf44bd3694 126 buf[count] = esp.getc();count++;
star297 0:5ebf44bd3694 127 }
star297 0:5ebf44bd3694 128 if(t.read() > timeout) {
star297 0:5ebf44bd3694 129 ended = 1;t.stop();t.reset();
star297 0:5ebf44bd3694 130 }
star297 0:5ebf44bd3694 131 }
star297 0:5ebf44bd3694 132 }
star297 0:5ebf44bd3694 133