setup program for esp8266 using the KL25Z mbed.

Dependencies:   mbed

Fork of ESP8266-configuration-mbed-LPC1768 by jim hamblen

Committer:
cstevens
Date:
Fri Jun 03 09:30:15 2016 +0000
Revision:
6:6261d6c51f5c
Parent:
5:9f46b8cdd469
esp_setup - adapted for KL25z by chris stevens 2016

Who changed what in which revision?

UserRevisionLine numberNew contents of line
star297 0:5ebf44bd3694 1 #include "mbed.h"
cstevens 6:6261d6c51f5c 2 //https://developer.mbed.org/users/4180_1/notebook/using-the-esp8266-with-the-mbed-lpc1768/
cstevens 6:6261d6c51f5c 3 //modified to run on KL25Z using serial port at PTA2,PTA1 (tx,rx) and PTD4 as RST pin
star297 0:5ebf44bd3694 4 Serial pc(USBTX, USBRX);
cstevens 6:6261d6c51f5c 5 Serial esp(PTA2,PTA1); // tx, rx
cstevens 6:6261d6c51f5c 6 DigitalOut reset(PTD4);
star297 0:5ebf44bd3694 7 Timer t;
star297 0:5ebf44bd3694 8
star297 0:5ebf44bd3694 9 int count,ended,timeout;
star297 0:5ebf44bd3694 10 char buf[1024];
star297 0:5ebf44bd3694 11 char snd[255];
star297 0:5ebf44bd3694 12
cstevens 6:6261d6c51f5c 13 char ssid[32] = "TALKTALK-E88A77"; // enter WiFi router ssid inside the quotes
cstevens 6:6261d6c51f5c 14 char pwd [32] = "BTJFPYFJ"; // enter WiFi router password inside the quotes
star297 0:5ebf44bd3694 15
star297 0:5ebf44bd3694 16 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate();
star297 0:5ebf44bd3694 17
star297 0:5ebf44bd3694 18
4180_1 4:f40e7eb1ba1e 19 int main()
4180_1 4:f40e7eb1ba1e 20 {
4180_1 4:f40e7eb1ba1e 21 reset=0; //hardware reset for 8266
cstevens 6:6261d6c51f5c 22 //pc.baud(115200); // set what you want here depending on your terminal program speed
4180_1 4:f40e7eb1ba1e 23 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
4180_1 4:f40e7eb1ba1e 24 wait(0.5);
4180_1 4:f40e7eb1ba1e 25 reset=1;
4180_1 4:f40e7eb1ba1e 26 timeout=2;
4180_1 4:f40e7eb1ba1e 27 getreply();
4180_1 4:f40e7eb1ba1e 28
4180_1 4:f40e7eb1ba1e 29 esp.baud(115200); // change this to the new ESP8266 baudrate if it is changed at any time.
4180_1 4:f40e7eb1ba1e 30
star297 0:5ebf44bd3694 31 //ESPsetbaudrate(); //****************** include this routine to set a different ESP8266 baudrate ******************
star297 0:5ebf44bd3694 32
star297 0:5ebf44bd3694 33 ESPconfig(); //****************** include Config to set the ESP8266 configuration ***********************
4180_1 4:f40e7eb1ba1e 34
4180_1 4:f40e7eb1ba1e 35
4180_1 4:f40e7eb1ba1e 36
4180_1 4:f40e7eb1ba1e 37 // continuosly get AP list and IP
4180_1 4:f40e7eb1ba1e 38 while(1) {
star297 3:14e33fec26c3 39 pc.printf("\n---------- Listing Acces Points ----------\r\n");
star297 3:14e33fec26c3 40 strcpy(snd, "AT+CWLAP\r\n");
star297 3:14e33fec26c3 41 SendCMD();
4180_1 4:f40e7eb1ba1e 42 timeout=15;
4180_1 4:f40e7eb1ba1e 43 getreply();
cstevens 6:6261d6c51f5c 44 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 45 wait(2);
4180_1 4:f40e7eb1ba1e 46 pc.printf("\n---------- Get IP and MAC ----------\r\n");
star297 3:14e33fec26c3 47 strcpy(snd, "AT+CIFSR\r\n");
star297 3:14e33fec26c3 48 SendCMD();
4180_1 4:f40e7eb1ba1e 49 timeout=10;
4180_1 4:f40e7eb1ba1e 50 getreply();
cstevens 6:6261d6c51f5c 51 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 52 wait(2);
4180_1 4:f40e7eb1ba1e 53 }
4180_1 4:f40e7eb1ba1e 54
star297 0:5ebf44bd3694 55 }
star297 0:5ebf44bd3694 56
star297 0:5ebf44bd3694 57 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
star297 0:5ebf44bd3694 58 void ESPsetbaudrate()
star297 0:5ebf44bd3694 59 {
star297 0:5ebf44bd3694 60 strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate
4180_1 4:f40e7eb1ba1e 61 SendCMD();
4180_1 4:f40e7eb1ba1e 62 }
star297 0:5ebf44bd3694 63
star297 0:5ebf44bd3694 64 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
star297 0:5ebf44bd3694 65 void ESPconfig()
star297 0:5ebf44bd3694 66 {
4180_1 4:f40e7eb1ba1e 67 wait(5);
4180_1 4:f40e7eb1ba1e 68 strcpy(snd,"AT\r\n");
4180_1 4:f40e7eb1ba1e 69 SendCMD();
4180_1 4:f40e7eb1ba1e 70 wait(1);
4180_1 4:f40e7eb1ba1e 71 strcpy(snd,"AT\r\n");
4180_1 4:f40e7eb1ba1e 72 SendCMD();
4180_1 4:f40e7eb1ba1e 73 wait(1);
4180_1 4:f40e7eb1ba1e 74 strcpy(snd,"AT\r\n");
4180_1 4:f40e7eb1ba1e 75 SendCMD();
4180_1 4:f40e7eb1ba1e 76 timeout=1;
4180_1 4:f40e7eb1ba1e 77 getreply();
4180_1 4:f40e7eb1ba1e 78 wait(1);
4180_1 4:f40e7eb1ba1e 79 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
star297 0:5ebf44bd3694 80
star297 0:5ebf44bd3694 81 pc.printf("---------- Reset & get Firmware ----------\r\n");
star297 0:5ebf44bd3694 82 strcpy(snd,"AT+RST\r\n");
star297 0:5ebf44bd3694 83 SendCMD();
4180_1 4:f40e7eb1ba1e 84 timeout=5;
star297 0:5ebf44bd3694 85 getreply();
cstevens 6:6261d6c51f5c 86 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 87
4180_1 4:f40e7eb1ba1e 88 wait(2);
4180_1 4:f40e7eb1ba1e 89
star297 0:5ebf44bd3694 90 pc.printf("\n---------- Get Version ----------\r\n");
star297 0:5ebf44bd3694 91 strcpy(snd,"AT+GMR\r\n");
star297 0:5ebf44bd3694 92 SendCMD();
4180_1 4:f40e7eb1ba1e 93 timeout=4;
star297 0:5ebf44bd3694 94 getreply();
cstevens 6:6261d6c51f5c 95 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 96
4180_1 4:f40e7eb1ba1e 97 wait(3);
4180_1 4:f40e7eb1ba1e 98
star297 0:5ebf44bd3694 99 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
star297 0:5ebf44bd3694 100 pc.printf("\n---------- Setting Mode ----------\r\n");
star297 0:5ebf44bd3694 101 strcpy(snd, "AT+CWMODE=1\r\n");
star297 0:5ebf44bd3694 102 SendCMD();
4180_1 4:f40e7eb1ba1e 103 timeout=4;
star297 0:5ebf44bd3694 104 getreply();
cstevens 6:6261d6c51f5c 105 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 106
4180_1 4:f40e7eb1ba1e 107 wait(2);
4180_1 4:f40e7eb1ba1e 108
4180_1 4:f40e7eb1ba1e 109 // set CIPMUX to 0=Single,1=Multi
star297 2:c5515c7eba46 110 pc.printf("\n---------- Setting Connection Mode ----------\r\n");
4180_1 4:f40e7eb1ba1e 111 strcpy(snd, "AT+CIPMUX=1\r\n");
star297 2:c5515c7eba46 112 SendCMD();
4180_1 4:f40e7eb1ba1e 113 timeout=4;
star297 2:c5515c7eba46 114 getreply();
cstevens 6:6261d6c51f5c 115 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 116
4180_1 4:f40e7eb1ba1e 117 wait(2);
4180_1 4:f40e7eb1ba1e 118
4180_1 4:f40e7eb1ba1e 119 pc.printf("\n---------- Listing Access Points ----------\r\n");
star297 0:5ebf44bd3694 120 strcpy(snd, "AT+CWLAP\r\n");
star297 0:5ebf44bd3694 121 SendCMD();
4180_1 4:f40e7eb1ba1e 122 timeout=15;
4180_1 4:f40e7eb1ba1e 123 getreply();
cstevens 6:6261d6c51f5c 124 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 125
4180_1 4:f40e7eb1ba1e 126 wait(2);
4180_1 4:f40e7eb1ba1e 127
star297 0:5ebf44bd3694 128 pc.printf("\n---------- Connecting to AP ----------\r\n");
star297 0:5ebf44bd3694 129 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
star297 0:5ebf44bd3694 130 strcpy(snd, "AT+CWJAP=\"");
star297 0:5ebf44bd3694 131 strcat(snd, ssid);
star297 0:5ebf44bd3694 132 strcat(snd, "\",\"");
star297 0:5ebf44bd3694 133 strcat(snd, pwd);
4180_1 4:f40e7eb1ba1e 134 strcat(snd, "\"\r\n");
star297 0:5ebf44bd3694 135 SendCMD();
4180_1 4:f40e7eb1ba1e 136 timeout=10;
4180_1 4:f40e7eb1ba1e 137 getreply();
cstevens 6:6261d6c51f5c 138 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 139
star297 0:5ebf44bd3694 140 wait(5);
4180_1 4:f40e7eb1ba1e 141
4180_1 4:f40e7eb1ba1e 142 pc.printf("\n---------- Get IP's ----------\r\n");
star297 0:5ebf44bd3694 143 strcpy(snd, "AT+CIFSR\r\n");
star297 0:5ebf44bd3694 144 SendCMD();
4180_1 4:f40e7eb1ba1e 145 timeout=3;
4180_1 4:f40e7eb1ba1e 146 getreply();
cstevens 6:6261d6c51f5c 147 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 148
star297 3:14e33fec26c3 149 wait(1);
4180_1 4:f40e7eb1ba1e 150
4180_1 4:f40e7eb1ba1e 151 pc.printf("\n---------- Get Connection Status ----------\r\n");
star297 3:14e33fec26c3 152 strcpy(snd, "AT+CIPSTATUS\r\n");
star297 3:14e33fec26c3 153 SendCMD();
4180_1 4:f40e7eb1ba1e 154 timeout=5;
4180_1 4:f40e7eb1ba1e 155 getreply();
cstevens 6:6261d6c51f5c 156 pc.printf(" buf = ##start %s ..##end\n",buf);
4180_1 4:f40e7eb1ba1e 157
4180_1 4:f40e7eb1ba1e 158 pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n");
star297 0:5ebf44bd3694 159 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
4180_1 5:9f46b8cdd469 160 pc.printf(" It saves the SSID and password settings internally\r\n");
4180_1 4:f40e7eb1ba1e 161 wait(10);
4180_1 4:f40e7eb1ba1e 162 }
star297 0:5ebf44bd3694 163
star297 0:5ebf44bd3694 164 void SendCMD()
4180_1 4:f40e7eb1ba1e 165 {
4180_1 4:f40e7eb1ba1e 166 esp.printf("%s", snd);
4180_1 4:f40e7eb1ba1e 167 }
star297 0:5ebf44bd3694 168
star297 0:5ebf44bd3694 169 void getreply()
4180_1 4:f40e7eb1ba1e 170 {
cstevens 6:6261d6c51f5c 171 memset(buf, '\0', sizeof(buf)); // this zeros the array
cstevens 6:6261d6c51f5c 172 t.start(); // start a timer
cstevens 6:6261d6c51f5c 173 ended=0;
4180_1 4:f40e7eb1ba1e 174 count=0;
star297 0:5ebf44bd3694 175 while(!ended) {
star297 0:5ebf44bd3694 176 if(esp.readable()) {
4180_1 4:f40e7eb1ba1e 177 buf[count] = esp.getc();
4180_1 4:f40e7eb1ba1e 178 count++;
4180_1 4:f40e7eb1ba1e 179 }
star297 0:5ebf44bd3694 180 if(t.read() > timeout) {
4180_1 4:f40e7eb1ba1e 181 ended = 1;
4180_1 4:f40e7eb1ba1e 182 t.stop();
4180_1 4:f40e7eb1ba1e 183 t.reset();
4180_1 4:f40e7eb1ba1e 184 }
4180_1 4:f40e7eb1ba1e 185 }
4180_1 4:f40e7eb1ba1e 186 }