4180 Final Project

Dependencies:   4DGL-uLCD-SE mbed Servo

Committer:
ecarrick
Date:
Mon Apr 18 17:51:33 2016 +0000
Revision:
6:50a82641d07b
Child:
25:2e95a5731412
adding wifi and ntp functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ecarrick 6:50a82641d07b 1 #include "wifi.h"
ecarrick 6:50a82641d07b 2
ecarrick 6:50a82641d07b 3 Serial esp(p28, p27); // tx, rx
ecarrick 6:50a82641d07b 4
ecarrick 6:50a82641d07b 5 Timer t;
ecarrick 6:50a82641d07b 6 int count,ended,timeout;
ecarrick 6:50a82641d07b 7
ecarrick 6:50a82641d07b 8 char ssid[32] = "fishes"; // enter WiFi router ssid inside the quotes
ecarrick 6:50a82641d07b 9 char pwd [32] = "1Fishesonfire23"; // enter WiFi router password inside the quotes
ecarrick 6:50a82641d07b 10 char buf[2024];
ecarrick 6:50a82641d07b 11 char snd[1024];
ecarrick 6:50a82641d07b 12
ecarrick 6:50a82641d07b 13 // Private Functions
ecarrick 6:50a82641d07b 14 void SendCMD()
ecarrick 6:50a82641d07b 15 {
ecarrick 6:50a82641d07b 16 //pc.printf("%s", snd);
ecarrick 6:50a82641d07b 17 esp.printf("%s", snd);
ecarrick 6:50a82641d07b 18 }
ecarrick 6:50a82641d07b 19
ecarrick 6:50a82641d07b 20 void flush(){
ecarrick 6:50a82641d07b 21 while(esp.readable()) {
ecarrick 6:50a82641d07b 22 char tmp = esp.getc();
ecarrick 6:50a82641d07b 23 //data += tmp;
ecarrick 6:50a82641d07b 24 //pc.putc(tmp);
ecarrick 6:50a82641d07b 25 }
ecarrick 6:50a82641d07b 26 }
ecarrick 6:50a82641d07b 27
ecarrick 6:50a82641d07b 28 void getreply()
ecarrick 6:50a82641d07b 29 {
ecarrick 6:50a82641d07b 30 memset(buf, '\0', sizeof(buf));
ecarrick 6:50a82641d07b 31 t.start();
ecarrick 6:50a82641d07b 32 ended=0;
ecarrick 6:50a82641d07b 33 count=0;
ecarrick 6:50a82641d07b 34 while(!ended) {
ecarrick 6:50a82641d07b 35 if(esp.readable()) {
ecarrick 6:50a82641d07b 36 buf[count] = esp.getc();
ecarrick 6:50a82641d07b 37 count++;
ecarrick 6:50a82641d07b 38 }
ecarrick 6:50a82641d07b 39 if(t.read() > timeout) {
ecarrick 6:50a82641d07b 40 ended = 1;
ecarrick 6:50a82641d07b 41 t.stop();
ecarrick 6:50a82641d07b 42 t.reset();
ecarrick 6:50a82641d07b 43 }
ecarrick 6:50a82641d07b 44 }
ecarrick 6:50a82641d07b 45 }
ecarrick 6:50a82641d07b 46
ecarrick 6:50a82641d07b 47 void ESPsetbaudrate()
ecarrick 6:50a82641d07b 48 {
ecarrick 6:50a82641d07b 49 strcpy(snd, "uart.setup(0, 9600, 8, 0, 1, 0)\r\n"); // change the numeric value to the required baudrate
ecarrick 6:50a82641d07b 50 SendCMD();
ecarrick 6:50a82641d07b 51 timeout=2;
ecarrick 6:50a82641d07b 52 getreply();
ecarrick 6:50a82641d07b 53 //pc.printf(buf);
ecarrick 6:50a82641d07b 54 }
ecarrick 6:50a82641d07b 55
ecarrick 6:50a82641d07b 56
ecarrick 6:50a82641d07b 57 // Public Functions
ecarrick 6:50a82641d07b 58
ecarrick 6:50a82641d07b 59
ecarrick 6:50a82641d07b 60 void setup_wifi()
ecarrick 6:50a82641d07b 61 {
ecarrick 6:50a82641d07b 62 //pc.printf("---------- Reset & get Firmware ----------\r\n");
ecarrick 6:50a82641d07b 63 strcpy(snd,"node.restart()\r\n");
ecarrick 6:50a82641d07b 64 SendCMD();
ecarrick 6:50a82641d07b 65 timeout=2;
ecarrick 6:50a82641d07b 66 getreply();
ecarrick 6:50a82641d07b 67 //pc.printf(buf);
ecarrick 6:50a82641d07b 68
ecarrick 6:50a82641d07b 69 ESPsetbaudrate();
ecarrick 6:50a82641d07b 70
ecarrick 6:50a82641d07b 71
ecarrick 6:50a82641d07b 72 //pc.printf("\n---------- Connecting to AP ----------\r\n");
ecarrick 6:50a82641d07b 73 //pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
ecarrick 6:50a82641d07b 74 strcpy(snd, "wifi.sta.config(\"");
ecarrick 6:50a82641d07b 75 strcat(snd, ssid);
ecarrick 6:50a82641d07b 76 strcat(snd, "\",\"");
ecarrick 6:50a82641d07b 77 strcat(snd, pwd);
ecarrick 6:50a82641d07b 78 strcat(snd, "\")\r\n");
ecarrick 6:50a82641d07b 79 SendCMD();
ecarrick 6:50a82641d07b 80 timeout=3;
ecarrick 6:50a82641d07b 81 getreply();
ecarrick 6:50a82641d07b 82 //pc.printf(buf);
ecarrick 6:50a82641d07b 83
ecarrick 6:50a82641d07b 84 wait(5);
ecarrick 6:50a82641d07b 85 /*
ecarrick 6:50a82641d07b 86 pc.printf("\n---------- Get IP's ----------\r\n");
ecarrick 6:50a82641d07b 87 strcpy(snd, "print(wifi.sta.getip())\r\n");
ecarrick 6:50a82641d07b 88 SendCMD();
ecarrick 6:50a82641d07b 89 timeout=2;
ecarrick 6:50a82641d07b 90 getreply();
ecarrick 6:50a82641d07b 91 pc.printf(buf);
ecarrick 6:50a82641d07b 92
ecarrick 6:50a82641d07b 93 wait(1);
ecarrick 6:50a82641d07b 94
ecarrick 6:50a82641d07b 95 pc.printf("\n---------- Get Connection Status ----------\r\n");
ecarrick 6:50a82641d07b 96 strcpy(snd, "print(wifi.sta.status())\r\n");
ecarrick 6:50a82641d07b 97 pc.printf("%s", snd);
ecarrick 6:50a82641d07b 98 SendCMD();
ecarrick 6:50a82641d07b 99 timeout=2;
ecarrick 6:50a82641d07b 100 getreply();
ecarrick 6:50a82641d07b 101 pc.printf(buf);
ecarrick 6:50a82641d07b 102 */
ecarrick 6:50a82641d07b 103
ecarrick 6:50a82641d07b 104 }
ecarrick 6:50a82641d07b 105
ecarrick 6:50a82641d07b 106 void setup_ntp(){
ecarrick 6:50a82641d07b 107 strcpy(snd, "timezone = -4\r\n");
ecarrick 6:50a82641d07b 108 SendCMD();
ecarrick 6:50a82641d07b 109 wait(2);
ecarrick 6:50a82641d07b 110 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 111 SendCMD();
ecarrick 6:50a82641d07b 112 wait(4);
ecarrick 6:50a82641d07b 113
ecarrick 6:50a82641d07b 114 strcpy(snd, "time = 0\r\n");
ecarrick 6:50a82641d07b 115 SendCMD();
ecarrick 6:50a82641d07b 116 wait(1);
ecarrick 6:50a82641d07b 117 strcpy(snd, "sk=net.createConnection(net.UDP, 0)\r\n");
ecarrick 6:50a82641d07b 118 SendCMD();
ecarrick 6:50a82641d07b 119 wait(1);
ecarrick 6:50a82641d07b 120
ecarrick 6:50a82641d07b 121 strcpy(snd, "sk:on(\"receive\", function(sck, payload)\r\n");
ecarrick 6:50a82641d07b 122 SendCMD();
ecarrick 6:50a82641d07b 123 wait(1);
ecarrick 6:50a82641d07b 124 strcpy(snd, "local highw,loww,ntpstamp\r\n");
ecarrick 6:50a82641d07b 125 SendCMD();
ecarrick 6:50a82641d07b 126 wait(1);
ecarrick 6:50a82641d07b 127 strcpy(snd, "highw = payload:byte(41) * 256 + payload:byte(42)\r\n");
ecarrick 6:50a82641d07b 128 SendCMD();
ecarrick 6:50a82641d07b 129 wait(1);
ecarrick 6:50a82641d07b 130 strcpy(snd, "loww = payload:byte(43) * 256 + payload:byte(44)\r\n");
ecarrick 6:50a82641d07b 131 SendCMD();
ecarrick 6:50a82641d07b 132 wait(1);
ecarrick 6:50a82641d07b 133 strcpy(snd, "ntpstamp=( highw * 65536 + loww ) + ( timezone* 3600)\r\n");
ecarrick 6:50a82641d07b 134 SendCMD();
ecarrick 6:50a82641d07b 135 wait(1);
ecarrick 6:50a82641d07b 136 strcpy(snd, "time = ntpstamp - 1104494400 - 1104494400\r\n");
ecarrick 6:50a82641d07b 137 SendCMD();
ecarrick 6:50a82641d07b 138 wait(1);
ecarrick 6:50a82641d07b 139 strcpy(snd, "print(time)\r\n");
ecarrick 6:50a82641d07b 140 SendCMD();
ecarrick 6:50a82641d07b 141 wait(1);
ecarrick 6:50a82641d07b 142
ecarrick 6:50a82641d07b 143 strcpy(snd, "sck:close()\r\n");
ecarrick 6:50a82641d07b 144 SendCMD();
ecarrick 6:50a82641d07b 145 wait(1);
ecarrick 6:50a82641d07b 146
ecarrick 6:50a82641d07b 147 strcpy(snd, "end )\r\n");
ecarrick 6:50a82641d07b 148 SendCMD();
ecarrick 6:50a82641d07b 149 wait(1);
ecarrick 6:50a82641d07b 150
ecarrick 6:50a82641d07b 151 flush();
ecarrick 6:50a82641d07b 152 wait(5);
ecarrick 6:50a82641d07b 153 }
ecarrick 6:50a82641d07b 154
ecarrick 6:50a82641d07b 155 void update_ntp(){
ecarrick 6:50a82641d07b 156 flush();
ecarrick 6:50a82641d07b 157 strcpy(snd, "sk:connect(123,\"104.232.3.3\")\r\n");
ecarrick 6:50a82641d07b 158 SendCMD();
ecarrick 6:50a82641d07b 159 wait(3);
ecarrick 6:50a82641d07b 160 strcpy(snd, "sk:send(request)\r\n");
ecarrick 6:50a82641d07b 161 SendCMD();
ecarrick 6:50a82641d07b 162 wait(4);
ecarrick 6:50a82641d07b 163
ecarrick 6:50a82641d07b 164 flush();
ecarrick 6:50a82641d07b 165
ecarrick 6:50a82641d07b 166 strcpy(snd, "print(time)\r\n");
ecarrick 6:50a82641d07b 167 SendCMD();
ecarrick 6:50a82641d07b 168 wait(1);
ecarrick 6:50a82641d07b 169 timeout=5;
ecarrick 6:50a82641d07b 170 getreply();
ecarrick 6:50a82641d07b 171 //pc.printf(buf);
ecarrick 6:50a82641d07b 172 int utime = atoi(buf);
ecarrick 6:50a82641d07b 173 if(utime != NULL)
ecarrick 6:50a82641d07b 174 set_time(utime);
ecarrick 6:50a82641d07b 175 time_t seconds = time(NULL);
ecarrick 6:50a82641d07b 176 //pc.printf("Time as a basic string = %s", ctime(&seconds));
ecarrick 6:50a82641d07b 177 }