a

Dependencies:   4DGL-uLCD-SE LSM9DS1_Library_cal SDFileSystem mbed-rtos mbed wave_player

Committer:
rmaran6
Date:
Wed Nov 02 02:02:03 2016 +0000
Revision:
0:2b0c527942db
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rmaran6 0:2b0c527942db 1 #include "Wifi.h"
rmaran6 0:2b0c527942db 2
rmaran6 0:2b0c527942db 3 Wifi::Wifi(PinName tx, PinName rx, PinName rst)
rmaran6 0:2b0c527942db 4 : esp(tx, rx), reset(rst), led1(LED1), led2(LED2), led3(LED3), led4(LED4) {
rmaran6 0:2b0c527942db 5 ssid = "GTother"; // enter WiFi router ssid inside the quotes
rmaran6 0:2b0c527942db 6 pwd = "GeorgeP@1927"; // enter WiFi router password inside the quotes
rmaran6 0:2b0c527942db 7 }
rmaran6 0:2b0c527942db 8 void dev_recv()
rmaran6 0:2b0c527942db 9 {
rmaran6 0:2b0c527942db 10 led1 = !led1;
rmaran6 0:2b0c527942db 11 while(esp.readable()) {
rmaran6 0:2b0c527942db 12 pc.putc(esp.getc());
rmaran6 0:2b0c527942db 13 }
rmaran6 0:2b0c527942db 14 }
rmaran6 0:2b0c527942db 15
rmaran6 0:2b0c527942db 16 void pc_recv()
rmaran6 0:2b0c527942db 17 {
rmaran6 0:2b0c527942db 18 led4 = !led4;
rmaran6 0:2b0c527942db 19 while(pc.readable()) {
rmaran6 0:2b0c527942db 20 esp.putc(pc.getc());
rmaran6 0:2b0c527942db 21 }
rmaran6 0:2b0c527942db 22 }
rmaran6 0:2b0c527942db 23 void Wifi::ESPsetbaudrate() {
rmaran6 0:2b0c527942db 24 strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate
rmaran6 0:2b0c527942db 25 SendCMD();
rmaran6 0:2b0c527942db 26 }
rmaran6 0:2b0c527942db 27 void Wifi::ESPconfig() {
rmaran6 0:2b0c527942db 28 wait(5);
rmaran6 0:2b0c527942db 29 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
rmaran6 0:2b0c527942db 30 strcpy(snd,".\r\n.\r\n");
rmaran6 0:2b0c527942db 31 SendCMD();
rmaran6 0:2b0c527942db 32 wait(1);
rmaran6 0:2b0c527942db 33 pc.printf("---------- Reset & get Firmware ----------\r\n");
rmaran6 0:2b0c527942db 34 strcpy(snd,"node.restart()\r\n");
rmaran6 0:2b0c527942db 35 SendCMD();
rmaran6 0:2b0c527942db 36 timeout=5;
rmaran6 0:2b0c527942db 37 getreply();
rmaran6 0:2b0c527942db 38 pc.printf(buf);
rmaran6 0:2b0c527942db 39
rmaran6 0:2b0c527942db 40 wait(2);
rmaran6 0:2b0c527942db 41
rmaran6 0:2b0c527942db 42 pc.printf("\n---------- Get Version ----------\r\n");
rmaran6 0:2b0c527942db 43 strcpy(snd,"print(node.info())\r\n");
rmaran6 0:2b0c527942db 44 SendCMD();
rmaran6 0:2b0c527942db 45 timeout=4;
rmaran6 0:2b0c527942db 46 getreply();
rmaran6 0:2b0c527942db 47 pc.printf(buf);
rmaran6 0:2b0c527942db 48
rmaran6 0:2b0c527942db 49 wait(3);
rmaran6 0:2b0c527942db 50
rmaran6 0:2b0c527942db 51 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
rmaran6 0:2b0c527942db 52 pc.printf("\n---------- Setting Mode ----------\r\n");
rmaran6 0:2b0c527942db 53 strcpy(snd, "wifi.setmode(wifi.STATION)\r\n");
rmaran6 0:2b0c527942db 54 SendCMD();
rmaran6 0:2b0c527942db 55 timeout=4;
rmaran6 0:2b0c527942db 56 getreply();
rmaran6 0:2b0c527942db 57 pc.printf(buf);
rmaran6 0:2b0c527942db 58
rmaran6 0:2b0c527942db 59 wait(2);
rmaran6 0:2b0c527942db 60
rmaran6 0:2b0c527942db 61
rmaran6 0:2b0c527942db 62
rmaran6 0:2b0c527942db 63 pc.printf("\n---------- Listing Access Points ----------\r\n");
rmaran6 0:2b0c527942db 64 strcpy(snd, "function listap(t)\r\n");
rmaran6 0:2b0c527942db 65 SendCMD();
rmaran6 0:2b0c527942db 66 wait(1);
rmaran6 0:2b0c527942db 67 strcpy(snd, "for k,v in pairs(t) do\r\n");
rmaran6 0:2b0c527942db 68 SendCMD();
rmaran6 0:2b0c527942db 69 wait(1);
rmaran6 0:2b0c527942db 70 strcpy(snd, "print(k..\" : \"..v)\r\n");
rmaran6 0:2b0c527942db 71 SendCMD();
rmaran6 0:2b0c527942db 72 wait(1);
rmaran6 0:2b0c527942db 73 strcpy(snd, "end\r\n");
rmaran6 0:2b0c527942db 74 SendCMD();
rmaran6 0:2b0c527942db 75 wait(1);
rmaran6 0:2b0c527942db 76 strcpy(snd, "end\r\n");
rmaran6 0:2b0c527942db 77 SendCMD();
rmaran6 0:2b0c527942db 78 wait(1);
rmaran6 0:2b0c527942db 79 strcpy(snd, "wifi.sta.getap(listap)\r\n");
rmaran6 0:2b0c527942db 80 SendCMD();
rmaran6 0:2b0c527942db 81 wait(1);
rmaran6 0:2b0c527942db 82 timeout=15;
rmaran6 0:2b0c527942db 83 getreply();
rmaran6 0:2b0c527942db 84 pc.printf(buf);
rmaran6 0:2b0c527942db 85
rmaran6 0:2b0c527942db 86 wait(2);
rmaran6 0:2b0c527942db 87
rmaran6 0:2b0c527942db 88 pc.printf("\n---------- Connecting to AP ----------\r\n");
rmaran6 0:2b0c527942db 89 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
rmaran6 0:2b0c527942db 90 strcpy(snd, "wifi.sta.config(\"");
rmaran6 0:2b0c527942db 91 strcat(snd, ssid);
rmaran6 0:2b0c527942db 92 strcat(snd, "\",\"");
rmaran6 0:2b0c527942db 93 strcat(snd, pwd);
rmaran6 0:2b0c527942db 94 strcat(snd, "\")\r\n");
rmaran6 0:2b0c527942db 95 SendCMD();
rmaran6 0:2b0c527942db 96 timeout=10;
rmaran6 0:2b0c527942db 97 getreply();
rmaran6 0:2b0c527942db 98 pc.printf(buf);
rmaran6 0:2b0c527942db 99
rmaran6 0:2b0c527942db 100 wait(5);
rmaran6 0:2b0c527942db 101
rmaran6 0:2b0c527942db 102 pc.printf("\n---------- Get IP's ----------\r\n");
rmaran6 0:2b0c527942db 103 strcpy(snd, "print(wifi.sta.getip())\r\n");
rmaran6 0:2b0c527942db 104 SendCMD();
rmaran6 0:2b0c527942db 105 timeout=3;
rmaran6 0:2b0c527942db 106 getreply();
rmaran6 0:2b0c527942db 107 pc.printf(buf);
rmaran6 0:2b0c527942db 108
rmaran6 0:2b0c527942db 109 wait(1);
rmaran6 0:2b0c527942db 110
rmaran6 0:2b0c527942db 111 pc.printf("\n---------- Get Connection Status ----------\r\n");
rmaran6 0:2b0c527942db 112 strcpy(snd, "print(wifi.sta.status())\r\n");
rmaran6 0:2b0c527942db 113 SendCMD();
rmaran6 0:2b0c527942db 114 timeout=5;
rmaran6 0:2b0c527942db 115 getreply();
rmaran6 0:2b0c527942db 116 pc.printf(buf);
rmaran6 0:2b0c527942db 117
rmaran6 0:2b0c527942db 118 pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n");
rmaran6 0:2b0c527942db 119 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
rmaran6 0:2b0c527942db 120 pc.printf(" It saves the SSID and password settings internally\r\n");
rmaran6 0:2b0c527942db 121 wait(10);
rmaran6 0:2b0c527942db 122
rmaran6 0:2b0c527942db 123
rmaran6 0:2b0c527942db 124 pc.printf("\n---------- Setting up http server ----------\r\n");
rmaran6 0:2b0c527942db 125 strcpy(snd, "srv=net.createServer(net.TCP)\r\n");
rmaran6 0:2b0c527942db 126 SendCMD();
rmaran6 0:2b0c527942db 127 wait(1);
rmaran6 0:2b0c527942db 128 strcpy(snd, "srv:listen(80,function(conn)\r\n");
rmaran6 0:2b0c527942db 129 SendCMD();
rmaran6 0:2b0c527942db 130 wait(1);
rmaran6 0:2b0c527942db 131 strcpy(snd, "conn:on(\"receive\",function(conn,payload)\r\n");
rmaran6 0:2b0c527942db 132 SendCMD();
rmaran6 0:2b0c527942db 133 wait(1);
rmaran6 0:2b0c527942db 134 strcpy(snd, "print(payload)\r\n");
rmaran6 0:2b0c527942db 135 SendCMD();
rmaran6 0:2b0c527942db 136 wait(1);
rmaran6 0:2b0c527942db 137
rmaran6 0:2b0c527942db 138 strcpy(snd, "conn:send(\"<!DOCTYPE html>\")\r\n");
rmaran6 0:2b0c527942db 139 SendCMD();
rmaran6 0:2b0c527942db 140 wait(1);
rmaran6 0:2b0c527942db 141
rmaran6 0:2b0c527942db 142 strcpy(snd, "conn:send(\"<html>\")\r\n");
rmaran6 0:2b0c527942db 143 SendCMD();
rmaran6 0:2b0c527942db 144 wait(1);
rmaran6 0:2b0c527942db 145
rmaran6 0:2b0c527942db 146 strcpy(snd, "conn:send(\"<h1> Hi James, NodeMcu.</h1>\")\r\n");
rmaran6 0:2b0c527942db 147 SendCMD();
rmaran6 0:2b0c527942db 148 wait(1);
rmaran6 0:2b0c527942db 149
rmaran6 0:2b0c527942db 150 strcpy(snd, "conn:send(\"<h2> test</h2>\")\r\n");
rmaran6 0:2b0c527942db 151 SendCMD();
rmaran6 0:2b0c527942db 152 wait(1);
rmaran6 0:2b0c527942db 153
rmaran6 0:2b0c527942db 154 strcpy(snd, "conn:send(\"</html>\")\r\n");
rmaran6 0:2b0c527942db 155 SendCMD();
rmaran6 0:2b0c527942db 156 wait(1);
rmaran6 0:2b0c527942db 157
rmaran6 0:2b0c527942db 158 strcpy(snd, "end)\r\n");
rmaran6 0:2b0c527942db 159 SendCMD();
rmaran6 0:2b0c527942db 160 wait(1);
rmaran6 0:2b0c527942db 161
rmaran6 0:2b0c527942db 162 strcpy(snd, "conn:on(\"sent\",function(conn) conn:close() end)\r\n");
rmaran6 0:2b0c527942db 163 SendCMD();
rmaran6 0:2b0c527942db 164 wait(1);
rmaran6 0:2b0c527942db 165 strcpy(snd, "end)\r\n");
rmaran6 0:2b0c527942db 166 SendCMD();
rmaran6 0:2b0c527942db 167 wait(1);
rmaran6 0:2b0c527942db 168 timeout=17;
rmaran6 0:2b0c527942db 169 getreply();
rmaran6 0:2b0c527942db 170 pc.printf(buf);
rmaran6 0:2b0c527942db 171 pc.printf("\r\nDONE");
rmaran6 0:2b0c527942db 172 }
rmaran6 0:2b0c527942db 173 void Wifi::SendCMD() {
rmaran6 0:2b0c527942db 174 esp.printf("%s", snd);
rmaran6 0:2b0c527942db 175 }
rmaran6 0:2b0c527942db 176 void Wifi::getreply() {
rmaran6 0:2b0c527942db 177 memset(buf, '\0', sizeof(buf));
rmaran6 0:2b0c527942db 178 t.start();
rmaran6 0:2b0c527942db 179 ended=0;
rmaran6 0:2b0c527942db 180 count=0;
rmaran6 0:2b0c527942db 181 while(!ended) {
rmaran6 0:2b0c527942db 182 if(esp.readable()) {
rmaran6 0:2b0c527942db 183 buf[count] = esp.getc();
rmaran6 0:2b0c527942db 184 count++;
rmaran6 0:2b0c527942db 185 }
rmaran6 0:2b0c527942db 186 if(t.read() > timeout) {
rmaran6 0:2b0c527942db 187 ended = 1;
rmaran6 0:2b0c527942db 188 t.stop();
rmaran6 0:2b0c527942db 189 t.reset();
rmaran6 0:2b0c527942db 190 }
rmaran6 0:2b0c527942db 191 }
rmaran6 0:2b0c527942db 192 }
rmaran6 0:2b0c527942db 193
rmaran6 0:2b0c527942db 194 void Wifi::setupPage() {
rmaran6 0:2b0c527942db 195 reset=0; //hardware reset for 8266
rmaran6 0:2b0c527942db 196 pc.baud(9600); // set what you want here depending on your terminal program speed
rmaran6 0:2b0c527942db 197 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
rmaran6 0:2b0c527942db 198 wait(0.5);
rmaran6 0:2b0c527942db 199 reset=1;
rmaran6 0:2b0c527942db 200 timeout=2;
rmaran6 0:2b0c527942db 201 getreply();
rmaran6 0:2b0c527942db 202
rmaran6 0:2b0c527942db 203 esp.baud(9600); // change this to the new ESP8266 baudrate if it is changed at any time.
rmaran6 0:2b0c527942db 204
rmaran6 0:2b0c527942db 205 //ESPsetbaudrate(); //****************** include this routine to set a different ESP8266 baudrate ******************
rmaran6 0:2b0c527942db 206
rmaran6 0:2b0c527942db 207 ESPconfig(); //****************** include Config to set the ESP8266 configuration ***********************
rmaran6 0:2b0c527942db 208
rmaran6 0:2b0c527942db 209 pc.attach(&pc_recv, Serial::RxIrq);
rmaran6 0:2b0c527942db 210 esp.attach(&dev_recv, Serial::RxIrq);
rmaran6 0:2b0c527942db 211
rmaran6 0:2b0c527942db 212 // continuosly get AP list and IP
rmaran6 0:2b0c527942db 213 }
rmaran6 0:2b0c527942db 214