Kevin Rhyne / Whiffy

Dependencies:   4DGL-uLCD-SE mbed

Committer:
kevinrhyne
Date:
Fri Oct 16 19:33:25 2015 +0000
Revision:
3:d30ae8ff30bf
Child:
6:0f78860615d4
broken but for clay

Who changed what in which revision?

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