debug
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem
wifi.h@2:4789078c7519, 2018-12-13 (annotated)
- Committer:
- mbrzozowski3
- Date:
- Thu Dec 13 19:25:01 2018 +0000
- Revision:
- 2:4789078c7519
- Parent:
- 1:02e619c9b205
debugging
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbrzozowski3 | 1:02e619c9b205 | 1 | #include "mbed.h" |
mbrzozowski3 | 1:02e619c9b205 | 2 | #include <sstream> |
mbrzozowski3 | 1:02e619c9b205 | 3 | #include "rtos.h" |
mbrzozowski3 | 1:02e619c9b205 | 4 | Serial pc(USBTX, USBRX); |
mbrzozowski3 | 1:02e619c9b205 | 5 | Serial esp(p13, p14); // tx, rx |
mbrzozowski3 | 2:4789078c7519 | 6 | DigitalOut reset(p16); |
mbrzozowski3 | 1:02e619c9b205 | 7 | Timer t; |
mbrzozowski3 | 1:02e619c9b205 | 8 | |
mbrzozowski3 | 1:02e619c9b205 | 9 | int count,ended,timeout; |
mbrzozowski3 | 1:02e619c9b205 | 10 | char buf[2024]; |
mbrzozowski3 | 1:02e619c9b205 | 11 | char snd[1024]; |
mbrzozowski3 | 1:02e619c9b205 | 12 | |
mbrzozowski3 | 1:02e619c9b205 | 13 | char ssid[32] = "iPhone"; // enter WiFi router ssid inside the quotes |
mbrzozowski3 | 1:02e619c9b205 | 14 | char pwd [32] = "ece-4180"; // enter WiFi router password inside the quotes |
mbrzozowski3 | 1:02e619c9b205 | 15 | |
mbrzozowski3 | 1:02e619c9b205 | 16 | void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(); |
mbrzozowski3 | 1:02e619c9b205 | 17 | void dev_recv() |
mbrzozowski3 | 1:02e619c9b205 | 18 | { |
mbrzozowski3 | 1:02e619c9b205 | 19 | while(esp.readable()) { |
mbrzozowski3 | 1:02e619c9b205 | 20 | pc.putc(esp.getc()); |
mbrzozowski3 | 1:02e619c9b205 | 21 | } |
mbrzozowski3 | 1:02e619c9b205 | 22 | } |
mbrzozowski3 | 1:02e619c9b205 | 23 | |
mbrzozowski3 | 1:02e619c9b205 | 24 | void pc_recv() |
mbrzozowski3 | 1:02e619c9b205 | 25 | { |
mbrzozowski3 | 1:02e619c9b205 | 26 | while(pc.readable()) { |
mbrzozowski3 | 1:02e619c9b205 | 27 | esp.putc(pc.getc()); |
mbrzozowski3 | 1:02e619c9b205 | 28 | } |
mbrzozowski3 | 1:02e619c9b205 | 29 | } |
mbrzozowski3 | 1:02e619c9b205 | 30 | |
mbrzozowski3 | 1:02e619c9b205 | 31 | // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed |
mbrzozowski3 | 1:02e619c9b205 | 32 | void ESPsetbaudrate() |
mbrzozowski3 | 1:02e619c9b205 | 33 | { |
mbrzozowski3 | 1:02e619c9b205 | 34 | strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate |
mbrzozowski3 | 1:02e619c9b205 | 35 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 36 | } |
mbrzozowski3 | 1:02e619c9b205 | 37 | |
mbrzozowski3 | 1:02e619c9b205 | 38 | // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++ |
mbrzozowski3 | 1:02e619c9b205 | 39 | void ESPconfig() |
mbrzozowski3 | 1:02e619c9b205 | 40 | { |
mbrzozowski3 | 1:02e619c9b205 | 41 | reset=0; //hardware reset for 8266 |
mbrzozowski3 | 1:02e619c9b205 | 42 | pc.baud(9600); // set what you want here depending on your terminal program speed |
mbrzozowski3 | 1:02e619c9b205 | 43 | pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r"); |
mbrzozowski3 | 1:02e619c9b205 | 44 | wait(5); |
mbrzozowski3 | 1:02e619c9b205 | 45 | reset=1; |
mbrzozowski3 | 1:02e619c9b205 | 46 | timeout=2; |
mbrzozowski3 | 1:02e619c9b205 | 47 | wait(5); |
mbrzozowski3 | 1:02e619c9b205 | 48 | pc.printf("\f---------- Starting ESP Config ----------\r\n\n"); |
mbrzozowski3 | 1:02e619c9b205 | 49 | strcpy(snd,".\r\n.\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 50 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 51 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 52 | pc.printf("---------- Reset & get Firmware ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 53 | strcpy(snd,"node.restart()\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 54 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 55 | timeout=5; |
mbrzozowski3 | 1:02e619c9b205 | 56 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 57 | // pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 58 | |
mbrzozowski3 | 1:02e619c9b205 | 59 | wait(2); |
mbrzozowski3 | 1:02e619c9b205 | 60 | |
mbrzozowski3 | 1:02e619c9b205 | 61 | // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) |
mbrzozowski3 | 1:02e619c9b205 | 62 | pc.printf("\n---------- Setting Mode ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 63 | strcpy(snd, "wifi.setmode(wifi.STATION)\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 64 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 65 | // timeout=4; |
mbrzozowski3 | 1:02e619c9b205 | 66 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 67 | pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 68 | |
mbrzozowski3 | 1:02e619c9b205 | 69 | wait(2); |
mbrzozowski3 | 1:02e619c9b205 | 70 | |
mbrzozowski3 | 1:02e619c9b205 | 71 | pc.printf("\n---------- Connecting to AP ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 72 | pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd); |
mbrzozowski3 | 1:02e619c9b205 | 73 | strcpy(snd, "wifi.sta.config(\""); |
mbrzozowski3 | 1:02e619c9b205 | 74 | strcat(snd, ssid); |
mbrzozowski3 | 1:02e619c9b205 | 75 | strcat(snd, "\",\""); |
mbrzozowski3 | 1:02e619c9b205 | 76 | strcat(snd, pwd); |
mbrzozowski3 | 1:02e619c9b205 | 77 | strcat(snd, "\")\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 78 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 79 | timeout=10; |
mbrzozowski3 | 1:02e619c9b205 | 80 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 81 | // pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 82 | // |
mbrzozowski3 | 1:02e619c9b205 | 83 | wait(5); |
mbrzozowski3 | 1:02e619c9b205 | 84 | |
mbrzozowski3 | 1:02e619c9b205 | 85 | pc.printf("\n---------- Get Connection Status ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 86 | strcpy(snd, "print(wifi.sta.status())\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 87 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 88 | timeout=5; |
mbrzozowski3 | 1:02e619c9b205 | 89 | getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 90 | pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 91 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 92 | } |
mbrzozowski3 | 1:02e619c9b205 | 93 | |
mbrzozowski3 | 1:02e619c9b205 | 94 | void sendData(int temp, int heartRate){ |
mbrzozowski3 | 1:02e619c9b205 | 95 | |
mbrzozowski3 | 1:02e619c9b205 | 96 | //// pc.printf("\n---------- Sending Data ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 97 | // |
mbrzozowski3 | 1:02e619c9b205 | 98 | std::ostringstream getRequest; |
mbrzozowski3 | 1:02e619c9b205 | 99 | getRequest << "conn:send(\"GET /?temp=" << temp << "&heartRate=" << heartRate << " HTTP/1.1\\r\\nHost: 18.218.170.174\\r\\nConnection: keep-alive\\r\\nAccept: */*\\r\\n\\r\\n\")\r\n"; |
mbrzozowski3 | 1:02e619c9b205 | 100 | |
mbrzozowski3 | 1:02e619c9b205 | 101 | strcpy(snd,"conn=net.createConnection(net.TCP, 0)\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 102 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 103 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 104 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 105 | // |
mbrzozowski3 | 1:02e619c9b205 | 106 | strcpy(snd,"conn:on(\"receive\", function(sck, c) print(c) end )\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 107 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 108 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 109 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 110 | |
mbrzozowski3 | 1:02e619c9b205 | 111 | strcpy(snd,"conn:connect(8080,\"18.218.170.174\")\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 112 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 113 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 114 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 115 | |
mbrzozowski3 | 1:02e619c9b205 | 116 | strcpy(snd, getRequest.str().c_str()); |
mbrzozowski3 | 1:02e619c9b205 | 117 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 118 | // timeout=1; |
mbrzozowski3 | 1:02e619c9b205 | 119 | // getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 120 | //// |
mbrzozowski3 | 1:02e619c9b205 | 121 | //// pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 122 | //// pc.printf("\r\nDONE"); |
mbrzozowski3 | 1:02e619c9b205 | 123 | } |
mbrzozowski3 | 1:02e619c9b205 | 124 | |
mbrzozowski3 | 1:02e619c9b205 | 125 | std::string getWeather(){ |
mbrzozowski3 | 1:02e619c9b205 | 126 | |
mbrzozowski3 | 1:02e619c9b205 | 127 | pc.printf("\n---------- Getting Weather ----------\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 128 | |
mbrzozowski3 | 1:02e619c9b205 | 129 | std::ostringstream getRequest; |
mbrzozowski3 | 1:02e619c9b205 | 130 | getRequest << "conn:send(\"GET /data/2.5/weather?q=Atlanta&APPID=b874d9efc9f1f67309cd8b6ed596ef1a HTTP/1.1\\r\\nHost: api.openweathermap.org\\r\\nConnection: close\\r\\nAccept: */*\\r\\n\\r\\n\")\r\n"; |
mbrzozowski3 | 1:02e619c9b205 | 131 | |
mbrzozowski3 | 1:02e619c9b205 | 132 | strcpy(snd,"conn=net.createConnection(net.TCP, 0)\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 133 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 134 | getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 135 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 136 | |
mbrzozowski3 | 1:02e619c9b205 | 137 | strcpy(snd,"conn:on(\"receive\", function(sck, c) print(c) end )\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 138 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 139 | getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 140 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 141 | |
mbrzozowski3 | 1:02e619c9b205 | 142 | strcpy(snd,"conn:connect(80,\"api.openweathermap.org\")\r\n"); |
mbrzozowski3 | 1:02e619c9b205 | 143 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 144 | getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 145 | wait(1); |
mbrzozowski3 | 1:02e619c9b205 | 146 | |
mbrzozowski3 | 1:02e619c9b205 | 147 | strcpy(snd, getRequest.str().c_str()); |
mbrzozowski3 | 1:02e619c9b205 | 148 | SendCMD(); |
mbrzozowski3 | 1:02e619c9b205 | 149 | timeout=1; |
mbrzozowski3 | 1:02e619c9b205 | 150 | getreply(); |
mbrzozowski3 | 1:02e619c9b205 | 151 | pc.printf("Weather Response:\n"); |
mbrzozowski3 | 1:02e619c9b205 | 152 | std::string reply(buf); |
mbrzozowski3 | 1:02e619c9b205 | 153 | pc.printf(buf); |
mbrzozowski3 | 1:02e619c9b205 | 154 | pc.printf("\r\nDONE"); |
mbrzozowski3 | 1:02e619c9b205 | 155 | return reply; |
mbrzozowski3 | 1:02e619c9b205 | 156 | } |
mbrzozowski3 | 1:02e619c9b205 | 157 | |
mbrzozowski3 | 1:02e619c9b205 | 158 | void SendCMD() |
mbrzozowski3 | 1:02e619c9b205 | 159 | { |
mbrzozowski3 | 1:02e619c9b205 | 160 | esp.printf("%s", snd); |
mbrzozowski3 | 1:02e619c9b205 | 161 | } |
mbrzozowski3 | 1:02e619c9b205 | 162 | |
mbrzozowski3 | 1:02e619c9b205 | 163 | void getreply() |
mbrzozowski3 | 1:02e619c9b205 | 164 | { |
mbrzozowski3 | 1:02e619c9b205 | 165 | memset(buf, '\0', sizeof(buf)); |
mbrzozowski3 | 1:02e619c9b205 | 166 | t.start(); |
mbrzozowski3 | 1:02e619c9b205 | 167 | ended=0; |
mbrzozowski3 | 1:02e619c9b205 | 168 | count=0; |
mbrzozowski3 | 1:02e619c9b205 | 169 | while(!ended) { |
mbrzozowski3 | 1:02e619c9b205 | 170 | if(esp.readable()) { |
mbrzozowski3 | 1:02e619c9b205 | 171 | buf[count] = esp.getc(); |
mbrzozowski3 | 1:02e619c9b205 | 172 | count++; |
mbrzozowski3 | 1:02e619c9b205 | 173 | } |
mbrzozowski3 | 1:02e619c9b205 | 174 | if(t.read() > timeout) { |
mbrzozowski3 | 1:02e619c9b205 | 175 | ended = 1; |
mbrzozowski3 | 1:02e619c9b205 | 176 | t.stop(); |
mbrzozowski3 | 1:02e619c9b205 | 177 | t.reset(); |
mbrzozowski3 | 1:02e619c9b205 | 178 | } |
mbrzozowski3 | 1:02e619c9b205 | 179 | } |
mbrzozowski3 | 1:02e619c9b205 | 180 | } |
mbrzozowski3 | 1:02e619c9b205 | 181 | |
mbrzozowski3 | 1:02e619c9b205 | 182 |