4180 Final Project

Dependencies:   4DGL-uLCD-SE mbed Servo

Committer:
ecarrick
Date:
Sun May 01 19:54:20 2016 +0000
Revision:
27:2bd737c0a8af
Parent:
25:2e95a5731412
some small fixes and adding comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ecarrick 6:50a82641d07b 1 #include "wifi.h"
ecarrick 6:50a82641d07b 2
ecarrick 25:2e95a5731412 3
ecarrick 25:2e95a5731412 4 Serial esp(p13, p14); // tx, rx
ecarrick 25:2e95a5731412 5
ecarrick 25:2e95a5731412 6 extern Serial pc;
ecarrick 6:50a82641d07b 7
ecarrick 6:50a82641d07b 8 Timer t;
ecarrick 6:50a82641d07b 9 int count,ended,timeout;
ecarrick 6:50a82641d07b 10
ecarrick 6:50a82641d07b 11 char ssid[32] = "fishes"; // enter WiFi router ssid inside the quotes
ecarrick 6:50a82641d07b 12 char pwd [32] = "1Fishesonfire23"; // enter WiFi router password inside the quotes
ecarrick 6:50a82641d07b 13 char buf[2024];
ecarrick 6:50a82641d07b 14 char snd[1024];
ecarrick 6:50a82641d07b 15
ecarrick 6:50a82641d07b 16 // Private Functions
ecarrick 6:50a82641d07b 17 void SendCMD()
ecarrick 6:50a82641d07b 18 {
ecarrick 6:50a82641d07b 19 //pc.printf("%s", snd);
ecarrick 6:50a82641d07b 20 esp.printf("%s", snd);
ecarrick 6:50a82641d07b 21 }
ecarrick 6:50a82641d07b 22
ecarrick 6:50a82641d07b 23 void flush(){
ecarrick 6:50a82641d07b 24 while(esp.readable()) {
ecarrick 6:50a82641d07b 25 char tmp = esp.getc();
ecarrick 6:50a82641d07b 26 //data += tmp;
ecarrick 6:50a82641d07b 27 //pc.putc(tmp);
ecarrick 6:50a82641d07b 28 }
ecarrick 6:50a82641d07b 29 }
ecarrick 6:50a82641d07b 30
ecarrick 6:50a82641d07b 31 void getreply()
ecarrick 6:50a82641d07b 32 {
ecarrick 6:50a82641d07b 33 memset(buf, '\0', sizeof(buf));
ecarrick 6:50a82641d07b 34 t.start();
ecarrick 6:50a82641d07b 35 ended=0;
ecarrick 6:50a82641d07b 36 count=0;
ecarrick 6:50a82641d07b 37 while(!ended) {
ecarrick 6:50a82641d07b 38 if(esp.readable()) {
ecarrick 6:50a82641d07b 39 buf[count] = esp.getc();
ecarrick 6:50a82641d07b 40 count++;
ecarrick 6:50a82641d07b 41 }
ecarrick 6:50a82641d07b 42 if(t.read() > timeout) {
ecarrick 6:50a82641d07b 43 ended = 1;
ecarrick 6:50a82641d07b 44 t.stop();
ecarrick 6:50a82641d07b 45 t.reset();
ecarrick 6:50a82641d07b 46 }
ecarrick 6:50a82641d07b 47 }
ecarrick 6:50a82641d07b 48 }
ecarrick 6:50a82641d07b 49
ecarrick 6:50a82641d07b 50 void ESPsetbaudrate()
ecarrick 6:50a82641d07b 51 {
ecarrick 6:50a82641d07b 52 strcpy(snd, "uart.setup(0, 9600, 8, 0, 1, 0)\r\n"); // change the numeric value to the required baudrate
ecarrick 6:50a82641d07b 53 SendCMD();
ecarrick 6:50a82641d07b 54 timeout=2;
ecarrick 6:50a82641d07b 55 getreply();
ecarrick 6:50a82641d07b 56 //pc.printf(buf);
ecarrick 6:50a82641d07b 57 }
ecarrick 6:50a82641d07b 58
ecarrick 6:50a82641d07b 59
ecarrick 6:50a82641d07b 60 // Public Functions
ecarrick 6:50a82641d07b 61
ecarrick 6:50a82641d07b 62
ecarrick 6:50a82641d07b 63 void setup_wifi()
ecarrick 6:50a82641d07b 64 {
ecarrick 6:50a82641d07b 65 //pc.printf("---------- Reset & get Firmware ----------\r\n");
ecarrick 6:50a82641d07b 66 strcpy(snd,"node.restart()\r\n");
ecarrick 6:50a82641d07b 67 SendCMD();
ecarrick 6:50a82641d07b 68 timeout=2;
ecarrick 6:50a82641d07b 69 getreply();
ecarrick 6:50a82641d07b 70 //pc.printf(buf);
ecarrick 6:50a82641d07b 71
ecarrick 6:50a82641d07b 72 ESPsetbaudrate();
ecarrick 6:50a82641d07b 73
ecarrick 6:50a82641d07b 74
ecarrick 25:2e95a5731412 75 pc.printf("\n---------- Connecting to AP ----------\r\n");
ecarrick 25:2e95a5731412 76 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
ecarrick 6:50a82641d07b 77 strcpy(snd, "wifi.sta.config(\"");
ecarrick 6:50a82641d07b 78 strcat(snd, ssid);
ecarrick 6:50a82641d07b 79 strcat(snd, "\",\"");
ecarrick 6:50a82641d07b 80 strcat(snd, pwd);
ecarrick 6:50a82641d07b 81 strcat(snd, "\")\r\n");
ecarrick 6:50a82641d07b 82 SendCMD();
ecarrick 6:50a82641d07b 83 timeout=3;
ecarrick 6:50a82641d07b 84 getreply();
ecarrick 6:50a82641d07b 85 //pc.printf(buf);
ecarrick 6:50a82641d07b 86
ecarrick 27:2bd737c0a8af 87 wait(1);
ecarrick 25:2e95a5731412 88
ecarrick 6:50a82641d07b 89 pc.printf("\n---------- Get IP's ----------\r\n");
ecarrick 6:50a82641d07b 90 strcpy(snd, "print(wifi.sta.getip())\r\n");
ecarrick 6:50a82641d07b 91 SendCMD();
ecarrick 6:50a82641d07b 92 timeout=2;
ecarrick 6:50a82641d07b 93 getreply();
ecarrick 6:50a82641d07b 94 pc.printf(buf);
ecarrick 6:50a82641d07b 95
ecarrick 6:50a82641d07b 96 wait(1);
ecarrick 6:50a82641d07b 97
ecarrick 6:50a82641d07b 98 pc.printf("\n---------- Get Connection Status ----------\r\n");
ecarrick 6:50a82641d07b 99 strcpy(snd, "print(wifi.sta.status())\r\n");
ecarrick 6:50a82641d07b 100 pc.printf("%s", snd);
ecarrick 6:50a82641d07b 101 SendCMD();
ecarrick 6:50a82641d07b 102 timeout=2;
ecarrick 6:50a82641d07b 103 getreply();
ecarrick 6:50a82641d07b 104 pc.printf(buf);
ecarrick 25:2e95a5731412 105
ecarrick 6:50a82641d07b 106
ecarrick 6:50a82641d07b 107 }
ecarrick 6:50a82641d07b 108
ecarrick 6:50a82641d07b 109 void setup_ntp(){
ecarrick 6:50a82641d07b 110 strcpy(snd, "timezone = -4\r\n");
ecarrick 6:50a82641d07b 111 SendCMD();
ecarrick 6:50a82641d07b 112 wait(2);
ecarrick 6:50a82641d07b 113 strcpy(snd, "request=string.char(227,0,6,236,0,0,0,0,0,0,0,0,49,78,49,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)\r\n");
ecarrick 6:50a82641d07b 114 SendCMD();
ecarrick 6:50a82641d07b 115 wait(4);
ecarrick 6:50a82641d07b 116
ecarrick 6:50a82641d07b 117 strcpy(snd, "time = 0\r\n");
ecarrick 6:50a82641d07b 118 SendCMD();
ecarrick 6:50a82641d07b 119 wait(1);
ecarrick 6:50a82641d07b 120 strcpy(snd, "sk=net.createConnection(net.UDP, 0)\r\n");
ecarrick 6:50a82641d07b 121 SendCMD();
ecarrick 6:50a82641d07b 122 wait(1);
ecarrick 6:50a82641d07b 123
ecarrick 6:50a82641d07b 124 strcpy(snd, "sk:on(\"receive\", function(sck, payload)\r\n");
ecarrick 6:50a82641d07b 125 SendCMD();
ecarrick 6:50a82641d07b 126 wait(1);
ecarrick 6:50a82641d07b 127 strcpy(snd, "local highw,loww,ntpstamp\r\n");
ecarrick 6:50a82641d07b 128 SendCMD();
ecarrick 6:50a82641d07b 129 wait(1);
ecarrick 6:50a82641d07b 130 strcpy(snd, "highw = payload:byte(41) * 256 + payload:byte(42)\r\n");
ecarrick 6:50a82641d07b 131 SendCMD();
ecarrick 6:50a82641d07b 132 wait(1);
ecarrick 6:50a82641d07b 133 strcpy(snd, "loww = payload:byte(43) * 256 + payload:byte(44)\r\n");
ecarrick 6:50a82641d07b 134 SendCMD();
ecarrick 6:50a82641d07b 135 wait(1);
ecarrick 6:50a82641d07b 136 strcpy(snd, "ntpstamp=( highw * 65536 + loww ) + ( timezone* 3600)\r\n");
ecarrick 6:50a82641d07b 137 SendCMD();
ecarrick 6:50a82641d07b 138 wait(1);
ecarrick 6:50a82641d07b 139 strcpy(snd, "time = ntpstamp - 1104494400 - 1104494400\r\n");
ecarrick 6:50a82641d07b 140 SendCMD();
ecarrick 6:50a82641d07b 141 wait(1);
ecarrick 6:50a82641d07b 142 strcpy(snd, "print(time)\r\n");
ecarrick 6:50a82641d07b 143 SendCMD();
ecarrick 6:50a82641d07b 144 wait(1);
ecarrick 6:50a82641d07b 145
ecarrick 6:50a82641d07b 146 strcpy(snd, "sck:close()\r\n");
ecarrick 6:50a82641d07b 147 SendCMD();
ecarrick 6:50a82641d07b 148 wait(1);
ecarrick 6:50a82641d07b 149
ecarrick 6:50a82641d07b 150 strcpy(snd, "end )\r\n");
ecarrick 6:50a82641d07b 151 SendCMD();
ecarrick 6:50a82641d07b 152 wait(1);
ecarrick 6:50a82641d07b 153
ecarrick 6:50a82641d07b 154 flush();
ecarrick 6:50a82641d07b 155 wait(5);
ecarrick 6:50a82641d07b 156 }
ecarrick 6:50a82641d07b 157
ecarrick 6:50a82641d07b 158 void update_ntp(){
ecarrick 6:50a82641d07b 159 flush();
ecarrick 6:50a82641d07b 160 strcpy(snd, "sk:connect(123,\"104.232.3.3\")\r\n");
ecarrick 6:50a82641d07b 161 SendCMD();
ecarrick 6:50a82641d07b 162 wait(3);
ecarrick 6:50a82641d07b 163 strcpy(snd, "sk:send(request)\r\n");
ecarrick 6:50a82641d07b 164 SendCMD();
ecarrick 6:50a82641d07b 165 wait(4);
ecarrick 6:50a82641d07b 166
ecarrick 6:50a82641d07b 167 flush();
ecarrick 6:50a82641d07b 168
ecarrick 6:50a82641d07b 169 strcpy(snd, "print(time)\r\n");
ecarrick 6:50a82641d07b 170 SendCMD();
ecarrick 6:50a82641d07b 171 wait(1);
ecarrick 6:50a82641d07b 172 timeout=5;
ecarrick 6:50a82641d07b 173 getreply();
ecarrick 6:50a82641d07b 174 //pc.printf(buf);
ecarrick 6:50a82641d07b 175 int utime = atoi(buf);
ecarrick 6:50a82641d07b 176 if(utime != NULL)
ecarrick 6:50a82641d07b 177 set_time(utime);
ecarrick 6:50a82641d07b 178 time_t seconds = time(NULL);
ecarrick 6:50a82641d07b 179 //pc.printf("Time as a basic string = %s", ctime(&seconds));
ecarrick 25:2e95a5731412 180 }
ecarrick 25:2e95a5731412 181
ecarrick 25:2e95a5731412 182 void setup_http()
ecarrick 25:2e95a5731412 183 {
ecarrick 25:2e95a5731412 184
ecarrick 25:2e95a5731412 185 pc.printf("\n---------- Setting up http server ----------\r\n");
ecarrick 25:2e95a5731412 186
ecarrick 25:2e95a5731412 187 strcpy(snd, "log={'test','hey Edison'}\r\n");
ecarrick 25:2e95a5731412 188 SendCMD();
ecarrick 25:2e95a5731412 189 wait(1);
ecarrick 25:2e95a5731412 190
ecarrick 25:2e95a5731412 191 strcpy(snd, "srv=net.createServer(net.TCP)\r\n");
ecarrick 25:2e95a5731412 192 SendCMD();
ecarrick 25:2e95a5731412 193 wait(1);
ecarrick 25:2e95a5731412 194 strcpy(snd, "srv:listen(80,function(conn)\r\n");
ecarrick 25:2e95a5731412 195 SendCMD();
ecarrick 25:2e95a5731412 196 wait(1);
ecarrick 25:2e95a5731412 197 strcpy(snd, "conn:on(\"receive\",function(conn,payload)\r\n");
ecarrick 25:2e95a5731412 198 SendCMD();
ecarrick 25:2e95a5731412 199 wait(1);
ecarrick 25:2e95a5731412 200
ecarrick 25:2e95a5731412 201 strcpy(snd, "conn:send(\"<!DOCTYPE html>\")\r\n");
ecarrick 25:2e95a5731412 202 SendCMD();
ecarrick 25:2e95a5731412 203 wait(1);
ecarrick 25:2e95a5731412 204
ecarrick 25:2e95a5731412 205 strcpy(snd, "conn:send(\"<html>\")\r\n");
ecarrick 25:2e95a5731412 206 SendCMD();
ecarrick 25:2e95a5731412 207 wait(1);
ecarrick 25:2e95a5731412 208
ecarrick 25:2e95a5731412 209 strcpy(snd, "for key,value in pairs(log) do conn:send(\"<p>\" .. value .. \"<p>\") end\r\n");
ecarrick 25:2e95a5731412 210 SendCMD();
ecarrick 25:2e95a5731412 211 wait(1);
ecarrick 25:2e95a5731412 212
ecarrick 25:2e95a5731412 213 strcpy(snd, "conn:send(\"</html>\")\r\n");
ecarrick 25:2e95a5731412 214 SendCMD();
ecarrick 25:2e95a5731412 215 wait(1);
ecarrick 25:2e95a5731412 216
ecarrick 25:2e95a5731412 217 strcpy(snd, "end)\r\n");
ecarrick 25:2e95a5731412 218 SendCMD();
ecarrick 25:2e95a5731412 219 wait(1);
ecarrick 25:2e95a5731412 220
ecarrick 25:2e95a5731412 221 strcpy(snd, "conn:on(\"sent\",function(conn) conn:close() end)\r\n");
ecarrick 25:2e95a5731412 222 SendCMD();
ecarrick 25:2e95a5731412 223 wait(1);
ecarrick 25:2e95a5731412 224 strcpy(snd, "end)\r\n");
ecarrick 25:2e95a5731412 225 SendCMD();
ecarrick 25:2e95a5731412 226
ecarrick 25:2e95a5731412 227 flush();
ecarrick 25:2e95a5731412 228
ecarrick 25:2e95a5731412 229 }
ecarrick 25:2e95a5731412 230
ecarrick 25:2e95a5731412 231 void update_log(vector<string>& log)
ecarrick 25:2e95a5731412 232 {
ecarrick 25:2e95a5731412 233 strcpy(snd, "log={");
ecarrick 25:2e95a5731412 234 //SendCMD();
ecarrick 25:2e95a5731412 235 //wait(1);
ecarrick 25:2e95a5731412 236
ecarrick 25:2e95a5731412 237 for(unsigned i=0; i<log.size(); i++){
ecarrick 25:2e95a5731412 238 strcat(snd, "\"");
ecarrick 25:2e95a5731412 239 strcat(snd, log[i].c_str());
ecarrick 25:2e95a5731412 240 strcat(snd, "\"");
ecarrick 25:2e95a5731412 241 if(i<log.size()-1)
ecarrick 25:2e95a5731412 242 strcat(snd, ",");
ecarrick 25:2e95a5731412 243 //SendCMD();
ecarrick 25:2e95a5731412 244 //wait(1);
ecarrick 25:2e95a5731412 245
ecarrick 25:2e95a5731412 246 }
ecarrick 25:2e95a5731412 247 strcat(snd, "}\r\n");
ecarrick 25:2e95a5731412 248 pc.printf("%s\n\r",snd);
ecarrick 25:2e95a5731412 249 SendCMD();
ecarrick 27:2bd737c0a8af 250 wait(2);
ecarrick 25:2e95a5731412 251 flush();
ecarrick 25:2e95a5731412 252 }
ecarrick 25:2e95a5731412 253