Basic set up to connect WiFi with mDot and ESP8266-12

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
jortronm
Date:
Tue Jul 11 12:43:47 2017 +0000
Revision:
40:52621e958d2c
Parent:
29:0b58d21e87d6
Basic set up to connect to WiFi using mDot and ESP8266-12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan Austin 0:2757d7abb7d9 1 #include "mbed.h"
Jonathan Austin 0:2757d7abb7d9 2
jortronm 40:52621e958d2c 3 //Serial ports definition
jortronm 40:52621e958d2c 4 int BaudRate =115200; //ESP8266
jortronm 40:52621e958d2c 5 Serial pc(USBTX, USBRX,BaudRate); // tx, rx (PA_9,PA_10)
jortronm 40:52621e958d2c 6 Serial esp(PA_2,PA_3,BaudRate); // tx, rx
jortronm 40:52621e958d2c 7
jortronm 40:52621e958d2c 8 //Pins definitiom
jortronm 40:52621e958d2c 9 DigitalOut led1(XBEE_RSSI); //XBEE_RSSI PA_8
jortronm 40:52621e958d2c 10 DigitalOut led2(PC_9); //Second LED
jortronm 40:52621e958d2c 11 DigitalOut reset(PB_0); //Pin to reset the ESP
jortronm 40:52621e958d2c 12
jortronm 40:52621e958d2c 13 //Variables definition
jortronm 40:52621e958d2c 14 Timer t;
jortronm 40:52621e958d2c 15 int count,ended,timeout;
jortronm 40:52621e958d2c 16 char buf[1024];
jortronm 40:52621e958d2c 17 char snd[255];
jortronm 40:52621e958d2c 18 char ssid[32] = "Jorgie's iPhone"; // enter WiFi router ssid inside the quotes
jortronm 40:52621e958d2c 19 char pwd [32] = "jorge123"; // enter WiFi router password inside the quotes
jortronm 40:52621e958d2c 20
jortronm 40:52621e958d2c 21
jortronm 40:52621e958d2c 22 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(),ESP_HardwareReset(),ESPconnect();
jortronm 40:52621e958d2c 23
jortronm 40:52621e958d2c 24
jortronm 40:52621e958d2c 25 int main()
jortronm 40:52621e958d2c 26 {
jortronm 40:52621e958d2c 27 ESP_HardwareReset(); //ESP8266 Hardware Reset
jortronm 40:52621e958d2c 28 //ESPsetbaudrate(); //Difines ESP8266 baudrate !!!!!!!!!!!!!!!!!Currently not working!!!!!!!!!!!!!!!!!
jortronm 40:52621e958d2c 29 //ESPconfig(); //ESP8266 configuration
jortronm 40:52621e958d2c 30 ESPconnect();
jortronm 40:52621e958d2c 31 }
jortronm 40:52621e958d2c 32
jortronm 40:52621e958d2c 33 void ESPconnect()
jortronm 40:52621e958d2c 34 {
jortronm 40:52621e958d2c 35 pc.printf("\n---------- Connecting to AP ----------\r\n");
jortronm 40:52621e958d2c 36 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
jortronm 40:52621e958d2c 37 strcpy(snd, "AT+CWJAP=\"");
jortronm 40:52621e958d2c 38 strcat(snd, ssid);
jortronm 40:52621e958d2c 39 strcat(snd, "\",\"");
jortronm 40:52621e958d2c 40 strcat(snd, pwd);
jortronm 40:52621e958d2c 41 strcat(snd, "\"\r\n");
jortronm 40:52621e958d2c 42 SendCMD();
jortronm 40:52621e958d2c 43 timeout=10;
jortronm 40:52621e958d2c 44 getreply();
jortronm 40:52621e958d2c 45 pc.printf(buf);
jortronm 40:52621e958d2c 46 wait(5);
jortronm 40:52621e958d2c 47
jortronm 40:52621e958d2c 48 pc.printf("\n---------- Get IP's ----------\r\n");
jortronm 40:52621e958d2c 49 strcpy(snd, "AT+CIFSR\r\n");
jortronm 40:52621e958d2c 50 SendCMD();
jortronm 40:52621e958d2c 51 timeout=3;
jortronm 40:52621e958d2c 52 getreply();
jortronm 40:52621e958d2c 53 pc.printf(buf);
jortronm 40:52621e958d2c 54 wait(1);
jortronm 40:52621e958d2c 55
jortronm 40:52621e958d2c 56 pc.printf("\n---------- Get Connection Status ----------\r\n");
jortronm 40:52621e958d2c 57 strcpy(snd, "AT+CIPSTATUS\r\n");
jortronm 40:52621e958d2c 58 SendCMD();
jortronm 40:52621e958d2c 59 timeout=5;
jortronm 40:52621e958d2c 60 getreply();
jortronm 40:52621e958d2c 61 pc.printf(buf);
jortronm 40:52621e958d2c 62
jortronm 40:52621e958d2c 63 pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n");
jortronm 40:52621e958d2c 64 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
jortronm 40:52621e958d2c 65 pc.printf(" It saves the SSID and password settings internally\r\n");
jortronm 40:52621e958d2c 66 wait(10);
jortronm 40:52621e958d2c 67 }
jortronm 40:52621e958d2c 68
jortronm 40:52621e958d2c 69
jortronm 40:52621e958d2c 70 void ESP_HardwareReset()
jortronm 40:52621e958d2c 71 {
jortronm 40:52621e958d2c 72 reset=0; //hardware reset for 8266
jortronm 40:52621e958d2c 73 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
jortronm 40:52621e958d2c 74 pc.printf("Done \n\r");
jortronm 40:52621e958d2c 75 wait(0.5);
jortronm 40:52621e958d2c 76 reset=1;
jortronm 40:52621e958d2c 77 timeout=2;
jortronm 40:52621e958d2c 78 getreply();
jortronm 40:52621e958d2c 79 }
jortronm 40:52621e958d2c 80
jortronm 40:52621e958d2c 81
jortronm 40:52621e958d2c 82 void ESPsetbaudrate()
jortronm 40:52621e958d2c 83 {
jortronm 40:52621e958d2c 84 pc.printf("\f\n\r-------------ESP8266 BaudRait Definition-------------\n\r");
jortronm 40:52621e958d2c 85 char TempString1[50];
jortronm 40:52621e958d2c 86 sprintf(TempString1,"AT+CIOBAUD=%d,\r\n",BaudRate);
jortronm 40:52621e958d2c 87 strcpy(snd, TempString1); // change the numeric value to the required baudrate
jortronm 40:52621e958d2c 88 SendCMD();
jortronm 40:52621e958d2c 89 }
Jonathan Austin 0:2757d7abb7d9 90
jortronm 40:52621e958d2c 91
jortronm 40:52621e958d2c 92 void ESPconfig()
jortronm 40:52621e958d2c 93 {
jortronm 40:52621e958d2c 94 wait(5);
jortronm 40:52621e958d2c 95 strcpy(snd,"AT\r\n");
jortronm 40:52621e958d2c 96 SendCMD();
jortronm 40:52621e958d2c 97 timeout=2;
jortronm 40:52621e958d2c 98 getreply();
jortronm 40:52621e958d2c 99 pc.printf(buf);
jortronm 40:52621e958d2c 100 wait(1);
jortronm 40:52621e958d2c 101
jortronm 40:52621e958d2c 102 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
jortronm 40:52621e958d2c 103 pc.printf("---------- Reset & get Firmware ----------\r\n");
jortronm 40:52621e958d2c 104 strcpy(snd,"AT+RST\r\n");
jortronm 40:52621e958d2c 105 SendCMD();
jortronm 40:52621e958d2c 106 timeout=5;
jortronm 40:52621e958d2c 107 getreply();
jortronm 40:52621e958d2c 108 pc.printf(buf);
jortronm 40:52621e958d2c 109 wait(2);
jortronm 40:52621e958d2c 110
jortronm 40:52621e958d2c 111 pc.printf("\n---------- Get Version ----------\r\n");
jortronm 40:52621e958d2c 112 strcpy(snd,"AT+GMR\r\n");
jortronm 40:52621e958d2c 113 SendCMD();
jortronm 40:52621e958d2c 114 timeout=4;
jortronm 40:52621e958d2c 115 getreply();
jortronm 40:52621e958d2c 116 pc.printf(buf);
jortronm 40:52621e958d2c 117 wait(3);
jortronm 40:52621e958d2c 118
jortronm 40:52621e958d2c 119 // Currently not working !!!!!!!!!!!!!!!!!Currently not working!!!!!!!!!!!!!!!!!
jortronm 40:52621e958d2c 120 pc.printf("\n---------- Get UART Definition ----------\r\n");
jortronm 40:52621e958d2c 121 strcpy(snd,"AT+CIOBAUD?\r\n");
jortronm 40:52621e958d2c 122 SendCMD();
jortronm 40:52621e958d2c 123 timeout=4;
jortronm 40:52621e958d2c 124 getreply();
jortronm 40:52621e958d2c 125 pc.printf(buf);
jortronm 40:52621e958d2c 126 wait(3);
jortronm 40:52621e958d2c 127
jortronm 40:52621e958d2c 128 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
jortronm 40:52621e958d2c 129 pc.printf("\n---------- Setting Mode ----------\r\n");
jortronm 40:52621e958d2c 130 strcpy(snd, "AT+CWMODE=1\r\n");
jortronm 40:52621e958d2c 131 SendCMD();
jortronm 40:52621e958d2c 132 timeout=4;
jortronm 40:52621e958d2c 133 getreply();
jortronm 40:52621e958d2c 134 pc.printf(buf);
jortronm 40:52621e958d2c 135 wait(2);
jortronm 40:52621e958d2c 136
jortronm 40:52621e958d2c 137 // set CIPMUX to 0=Single,1=Multi
jortronm 40:52621e958d2c 138 pc.printf("\n---------- Setting Connection Mode ----------\r\n");
jortronm 40:52621e958d2c 139 strcpy(snd, "AT+CIPMUX=1\r\n");
jortronm 40:52621e958d2c 140 SendCMD();
jortronm 40:52621e958d2c 141 timeout=4;
jortronm 40:52621e958d2c 142 getreply();
jortronm 40:52621e958d2c 143 pc.printf(buf);
jortronm 40:52621e958d2c 144 wait(2);
jortronm 40:52621e958d2c 145
jortronm 40:52621e958d2c 146 pc.printf("\n---------- Listing Access Points ----------\r\n");
jortronm 40:52621e958d2c 147 strcpy(snd, "AT+CWLAP\r\n");
jortronm 40:52621e958d2c 148 SendCMD();
jortronm 40:52621e958d2c 149 timeout=15;
jortronm 40:52621e958d2c 150 getreply();
jortronm 40:52621e958d2c 151 pc.printf(buf);
jortronm 40:52621e958d2c 152 wait(2);
jortronm 40:52621e958d2c 153 }
jortronm 40:52621e958d2c 154
jortronm 40:52621e958d2c 155
jortronm 40:52621e958d2c 156 void SendCMD()
jortronm 40:52621e958d2c 157 {
jortronm 40:52621e958d2c 158 pc.printf("%s", snd);
jortronm 40:52621e958d2c 159 esp.printf("%s", snd);
jortronm 40:52621e958d2c 160 }
jortronm 40:52621e958d2c 161
jortronm 40:52621e958d2c 162 void getreply()
jortronm 40:52621e958d2c 163 {
jortronm 40:52621e958d2c 164 memset(buf, '\0', sizeof(buf));
jortronm 40:52621e958d2c 165 t.start();
jortronm 40:52621e958d2c 166 ended=0;
jortronm 40:52621e958d2c 167 count=0;
jortronm 40:52621e958d2c 168 while(!ended) {
jortronm 40:52621e958d2c 169 if(esp.readable()) {
jortronm 40:52621e958d2c 170 buf[count] = esp.getc();
jortronm 40:52621e958d2c 171 count++;
jortronm 40:52621e958d2c 172 }
jortronm 40:52621e958d2c 173 if(t.read() > timeout) {
jortronm 40:52621e958d2c 174 ended = 1;
jortronm 40:52621e958d2c 175 t.stop();
jortronm 40:52621e958d2c 176 t.reset();
jortronm 40:52621e958d2c 177 }
Jonathan Austin 0:2757d7abb7d9 178 }
Jonathan Austin 0:2757d7abb7d9 179 }