Fork of Farrukh's webserver. Tested on LPC1768 and STM32f401 but should work on almost any platform.
New version that has been tested on LPC1768 and STM32F401 Based on Farrukh's idea here: https://os.mbed.com/users/programmer5/code/STM32-ESP8266-WEBSERVER/
Enter your Wi-Fi SSID and PASSWORD and edit the espbaud to suit your ESP8266, Works fast and stable at 460800.
Use configuration program to reset and set up the ESP8266 if needed:
https://os.mbed.com/users/star297/code/ESP8266-configuaration-baudrate/
Limitations are no HTTPS.
main.cpp@4:7334688498cc, 2020-04-20 (annotated)
- Committer:
- star297
- Date:
- Mon Apr 20 20:43:33 2020 +0000
- Revision:
- 4:7334688498cc
- Parent:
- 3:f7febfa77784
- Child:
- 5:efcfa9e61907
updated
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
star297 | 0:e2a155f50119 | 1 | #include "mbed.h" |
star297 | 0:e2a155f50119 | 2 | |
star297 | 4:7334688498cc | 3 | // LPC1768 |
star297 | 4:7334688498cc | 4 | //Serial ports to be used |
star297 | 4:7334688498cc | 5 | Serial pc(USBTX,USBRX);//TO BE used for debug info |
star297 | 4:7334688498cc | 6 | Serial esp(p13,p14);//TX,RX TO BE CONNECTED TO ESP |
star297 | 4:7334688498cc | 7 | Serial esp2(p13,p14);//TX,RX TO BE CONNECTED TO ESP |
star297 | 4:7334688498cc | 8 | DigitalOut espreset(p25,1); |
star297 | 4:7334688498cc | 9 | //Connections to relay |
star297 | 4:7334688498cc | 10 | //relay works at logic LOW |
star297 | 4:7334688498cc | 11 | DigitalOut digital_out_1(LED1,1);// High on initialization |
star297 | 4:7334688498cc | 12 | DigitalOut digital_out_2(LED2,1);// High on initialization |
star297 | 4:7334688498cc | 13 | DigitalOut digital_out_3(LED3,1);// High on initialization |
star297 | 4:7334688498cc | 14 | DigitalOut digital_out_4(LED4,1);// High on initialization |
star297 | 4:7334688498cc | 15 | //digital inputs, connected to push buttons |
star297 | 4:7334688498cc | 16 | DigitalIn digital_in_1(p21); |
star297 | 4:7334688498cc | 17 | DigitalIn digital_in_2(p22); |
star297 | 4:7334688498cc | 18 | DigitalIn digital_in_3(p23); |
star297 | 4:7334688498cc | 19 | DigitalIn digital_in_4(p24); |
star297 | 4:7334688498cc | 20 | //Analog output |
star297 | 4:7334688498cc | 21 | PwmOut analog_out_1(p26); |
star297 | 4:7334688498cc | 22 | //Analog Input |
star297 | 4:7334688498cc | 23 | AnalogIn tempSensor(p20); |
star297 | 0:e2a155f50119 | 24 | |
star297 | 4:7334688498cc | 25 | //F401 |
star297 | 4:7334688498cc | 26 | /* |
star297 | 4:7334688498cc | 27 | //Serial ports to be used |
star297 | 4:7334688498cc | 28 | Serial pc(USBTX,USBRX);//TO BE used for debug info |
star297 | 4:7334688498cc | 29 | Serial esp(D8,D2);//TX,RX TO BE CONNECTED TO ESP |
star297 | 4:7334688498cc | 30 | Serial esp2(D8,D2);//TX,RX TO BE CONNECTED TO ESP |
star297 | 4:7334688498cc | 31 | //Connections to relay |
star297 | 4:7334688498cc | 32 | //relay works at logic LOW |
star297 | 4:7334688498cc | 33 | DigitalOut digital_out_1(D3,1);// High on initialization |
star297 | 4:7334688498cc | 34 | DigitalOut digital_out_2(D4,1);// High on initialization |
star297 | 4:7334688498cc | 35 | DigitalOut digital_out_3(D5,1);// High on initialization |
star297 | 4:7334688498cc | 36 | DigitalOut digital_out_4(D6,1);// High on initialization |
star297 | 4:7334688498cc | 37 | //digital inputs, connected to push buttons |
star297 | 4:7334688498cc | 38 | DigitalIn digital_in_1(A1); |
star297 | 4:7334688498cc | 39 | DigitalIn digital_in_2(A2); |
star297 | 4:7334688498cc | 40 | DigitalIn digital_in_3(A3); |
star297 | 4:7334688498cc | 41 | DigitalIn digital_in_4(A4); |
star297 | 4:7334688498cc | 42 | //Analog output |
star297 | 4:7334688498cc | 43 | PwmOut analog_out_1(D15); |
star297 | 4:7334688498cc | 44 | //Analog Input |
star297 | 4:7334688498cc | 45 | AnalogIn tempSensor(A0); |
star297 | 4:7334688498cc | 46 | */ |
star297 | 4:7334688498cc | 47 | |
star297 | 4:7334688498cc | 48 | char ssid[32] = "ssid"; // enter your router ssid inside the quotes |
star297 | 4:7334688498cc | 49 | char pwd[32] = "password"; // enter your router password inside the quotes |
star297 | 4:7334688498cc | 50 | |
star297 | 0:e2a155f50119 | 51 | |
star297 | 4:7334688498cc | 52 | #define BUFFER_SIZE 3000 |
star297 | 4:7334688498cc | 53 | #define REQ_LINE_BUFF_SIZE 100 |
star297 | 4:7334688498cc | 54 | #define UNKNOWN 0 |
star297 | 4:7334688498cc | 55 | #define OK 1 |
star297 | 4:7334688498cc | 56 | #define ERROR 2 |
star297 | 4:7334688498cc | 57 | #define FAIL 3 |
star297 | 4:7334688498cc | 58 | #define READY 4 |
star297 | 4:7334688498cc | 59 | #define READY_TO_WRITE_TCP 5 |
star297 | 4:7334688498cc | 60 | |
star297 | 0:e2a155f50119 | 61 | |
star297 | 4:7334688498cc | 62 | const char get_analog_outputs_status[]="/analog_outputs"; |
star297 | 4:7334688498cc | 63 | const char get_Toggle_Output[]="/digital_outputs/toggle"; |
star297 | 4:7334688498cc | 64 | const char get_analog_inputs_status[]="/analog_inputs"; |
star297 | 4:7334688498cc | 65 | const char get_analog_output_update[]="/analog_outputs/update"; |
star297 | 4:7334688498cc | 66 | const char get_digital_output_status[]="/digital_outputs"; |
star297 | 4:7334688498cc | 67 | const char get_digital_inputs_html[]="/dinputs.html"; |
star297 | 4:7334688498cc | 68 | const char get_digital_input_status[]="/digital_inputs"; |
star297 | 4:7334688498cc | 69 | const char get_index_html[]="/index.html"; |
star297 | 4:7334688498cc | 70 | const char get_analog_outputs[]="/anoutputs.html"; |
star297 | 4:7334688498cc | 71 | const char get_analog_inputs_html[]="/aninputs.html"; |
star297 | 4:7334688498cc | 72 | |
star297 | 4:7334688498cc | 73 | |
star297 | 4:7334688498cc | 74 | const char jsonHeader[]="HTTP/1.1 200 OK\n" |
star297 | 4:7334688498cc | 75 | "Content-type: application/json\r\n\r\n"; |
star297 | 2:d4c6bc0f2dc4 | 76 | |
star297 | 4:7334688498cc | 77 | const char textPlainHeader[]="HTTP/1.1 200 OK\n" |
star297 | 4:7334688498cc | 78 | "Content-type: text/plain\r\n\r\n"; |
star297 | 4:7334688498cc | 79 | |
star297 | 4:7334688498cc | 80 | const char index_html[]="HTTP/1.1 200 OK\n" |
star297 | 4:7334688498cc | 81 | "Content-type: text/html\r\n\r\n" |
star297 | 4:7334688498cc | 82 | "<!DOCTYPE html>\n<html>\n<head>\n<title>esp</title>\n<link rel=stylesheet type=text/css href=css/style.css>\n<script src=https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js></script>\n<script>$(document).ready(function(){setInterval(\"get_digital_output_status()\",2000)});function get_digital_output_status(){var a=\"/digital_outputs\";$.ajax({url:a,dataType:\"json\",success:function(b){if(b.digital_outputs.dout1==1){$(\"#dout1\").html(\"HIGH\")}else{$(\"#dout1\").html(\"LOW\")}if(b.digital_outputs.dout2==1){$(\"#dout2\").html(\"HIGH\")}else{$(\"#dout2\").html(\"LOW\")}if(b.digital_outputs.dout3==1){$(\"#dout3\").html(\"HIGH\")}else{$(\"#dout3\").html(\"LOW\")}if(b.digital_outputs.dout4==1){$(\"#dout4\").html(\"HIGH\")}else{$(\"#dout4\").html(\"LOW\")}},timeout:2000})}function digital_output_toggle(a){var b=\"/digital_outputs/toggle?pin=\"+a;$.ajax({url:b,dataType:\"text\",success:function(c){if(c==\"1\"){$(\"#\"+a).html(\"HIGH\")}else{if(c==\"0\"){$(\"#\"+a).html(\"LOW\")}else{alert(\"failed to toggle digital output\")}}},timeout:2000})};</script>\n</head>\n<body>\n<header>\n<img src=images/logo.jpg>\n<h1>ESP8266 BASED WEBSERVER</h1>\n</header>\n<nav>\n<ul>\n<li><a class=active href=index.html>Digital Outputs</a></li>\n<li><a href=dinputs.html>Digital inputs</a></li>\n<li><a href=anoutputs.html>Analog Outputs</a></li>\n<li><a href=aninputs.html>Analog Inputs</a></li>\n</ul>\n</nav>\n<section>\n<table>\n<tr>\n<th>Digital Ouput</th>\n<th>Status</th>\n<th>Option</th>\n</tr>\n<tr>\n<td>DOut1</td>\n<td id=dout1>waiting..</td>\n<td><button class=button onclick=\"digital_output_toggle('dout1')\">Toggle</button>\n</td>\n</tr>\n<tr>\n<td>DOut2</td>\n<td id=dout2>waiting..</td>\n<td><button class=button onclick=\"digital_output_toggle('dout2')\">Toggle</button>\n</tr>\n<tr>\n<td>DOut3</td>\n<td id=dout3>waiting..</td>\n<td><button class=button onclick=\"digital_output_toggle('dout3')\">Toggle</button>\n</tr>\n<tr>\n<td>DOut4</td>\n<td id=dout4>waiting..</td>\n<td><button class=button onclick=\"digital_output_toggle('dout4')\">Toggle</button>\n</tr>\n</table>\n</section>\n</body>\n</html>"; |
star297 | 4:7334688498cc | 83 | |
star297 | 4:7334688498cc | 84 | const char digitalInputs_html[]="HTTP/1.1 200 OK\n" |
star297 | 4:7334688498cc | 85 | "Content-type: text/html\r\n\r\n" |
star297 | 4:7334688498cc | 86 | "<!DOCTYPE html>\n<html>\n<head>\n<title>esp</title>\n<link rel=stylesheet type=text/css href=css/style.css>\n<script src=https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js></script>\n<script>$(document).ready(function(){setInterval(\"get_digital_input_status()\",2000)});function get_digital_input_status(){var a=\"/digital_inputs\";$.ajax({url:a,dataType:\"json\",success:function(b){if(b.digital_inputs.din1==1){$(\"#din1\").html(\"HIGH\")}else{$(\"#din1\").html(\"LOW\")}if(b.digital_inputs.din2==1){$(\"#din2\").html(\"HIGH\")}else{$(\"#din2\").html(\"LOW\")}if(b.digital_inputs.din3==1){$(\"#din3\").html(\"HIGH\")}else{$(\"#din3\").html(\"LOW\")}if(b.digital_inputs.din4==1){$(\"#din4\").html(\"HIGH\")}else{$(\"#din4\").html(\"LOW\")}},timeout:2000})};</script>\n</head>\n<body>\n<header>\n<img src=images/logo.jpg>\n<h1>ESP8266 BASED WEBSERVER</h1>\n</header>\n<nav>\n<ul>\n<li><a href=index.html>Digital Outputs</a></li>\n<li><a class=active href=dinputs.html>Digital inputs</a></li>\n<li><a href=anoutputs.html>Analog Outputs</a></li>\n<li><a href=aninputs.html>Analog Inputs</a></li>\n</ul>\n</nav>\n<section>\n<table id=inputsTable>\n<tr>\n<th>Digital Input</th>\n<th>Status</th>\n</tr>\n<tr>\n<td>DIn1</td>\n<td id=din1>waiting..</td>\n</td>\n</tr>\n<tr>\n<td>DIn2</td>\n<td id=din2>waiting..</td>\n</tr>\n<tr>\n<td>DIn3</td>\n<td id=din3>waiting..</td>\n</tr>\n<tr>\n<td>DIn4</td>\n<td id=din4>waiting..</td>\n</tr>\n</table>\n</section>\n</body>\n</html>"; |
star297 | 4:7334688498cc | 87 | |
star297 | 4:7334688498cc | 88 | const char analog_outputs_html[]="HTTP/1.1 200 OK\n" |
star297 | 4:7334688498cc | 89 | "Content-type: text/html\r\n\r\n" |
star297 | 4:7334688498cc | 90 | "<!DOCTYPE html>\n<html>\n<head>\n<title>esp</title>\n<link rel=stylesheet type=text/css href=css/style.css>\n<script src=https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js></script>\n<script type=text/javascript src=https://www.gstatic.com/charts/loader.js></script>\n<script>$(document).ready(function(){setInterval(\"getAnalogOutputStatus()\",2000);displayVoltageLevel()});var voltage_level=0;function getAnalogOutputStatus(){var a=\"/analog_outputs\";$.ajax({url:a,dataType:\"text\",success:function(b){voltage_level=parseFloat(b)},timeout:2000})}function setNewVoltageLevel(a){var b=\"/analog_outputs/update?value=\"+a;$.ajax({url:b,dataType:\"text\",success:function(c){voltage_level=parseFloat(c)},timeout:2000})}function displayVoltageLevel(){google.charts.load(\"current\",{packages:[\"gauge\"]});google.charts.setOnLoadCallback(a);function a(){var d=google.visualization.arrayToDataTable([[\"Label\",\"Value\"],[\"Volts\"%2 |