Не отображается панель управления Ардуино через Браузер
- Войдите на сайт для отправки комментариев
Всем доброго времени суток!
На базе Ардуино уно собрал бутерброд из Шилд и четырёх реле. Управлять нагрузкой планировал через браузер используя IP 192.168.X.XX
Скачал несколько вариантов программ, один скетч замечательно работает:
#include <Ethernet.h> #include <SPI.h> byte ethernet_mac [] = {0x78, 0xAC, 0xC0, 0x43, 0x7B, 0xC1}; IPAddress ethernet_ip(192, 168, 0, 222); byte ethernet_dns [] = {192, 168, 0, 1}; byte ethernet_gateway [] = {192, 168, 0, 1}; byte ethernet_subnet [] = {255, 255, 255, 0}; EthernetServer _tspWebServer(80); EthernetClient _tspWebServer_client; bool _trgt4 = 0; bool _trgt4I = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; bool _trgrt4 = 0; bool _trgrt4I = 0; bool _trgrt5 = 0; bool _trgrt5I = 0; bool _trgt1 = 0; bool _trgt1I = 0; bool _WSP2_A1 = 0; bool _WSP2_A2 = 0; bool _WSP2_A3 = 0; bool _WSP2_A4 = 0; bool _trgt2 = 0; bool _trgt2I = 0; bool _trgt3 = 0; bool _trgt3I = 0; void setup() { Ethernet.begin(ethernet_mac, ethernet_ip, ethernet_dns, ethernet_gateway, ethernet_subnet); delay(1000); _tspWebServer.begin(); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); } void loop() {_tspWebServer_client = _tspWebServer.available(); if (_tspWebServer_client) { boolean _WSCLineIsBlank = true; String _WSCReqest=""; bool _WSCIsFirsLine=1; bool _WSCIsParse=0; int _WSCPageNumber=0; while (_tspWebServer_client.connected()) { while( _tspWebServer_client.available()) {char _tempWebServerChar = _tspWebServer_client.read(); if(_WSCIsFirsLine) {_WSCReqest+= _tempWebServerChar;} if (_tempWebServerChar == '\n' && _WSCLineIsBlank) {_sendWebServerPage(_WSCPageNumber); break;} if (_tempWebServerChar == '\n') {_WSCLineIsBlank = true; _WSCIsFirsLine=0; if (!_WSCIsParse){ _WSCPageNumber=_parseWebServerReqest(_WSCReqest); _WSCIsParse=1;} } else if (_tempWebServerChar != '\r') { _WSCLineIsBlank = false;} }}} if (_WSP2_A1) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;}; bool _tmp1 = _trgrt1; if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; } _trgt1I = _tmp1; if (_WSP2_A2) { if (_trgrt3I) { _trgrt3 = 0;} else {_trgrt3 = 1; _trgrt3I = 1;} } else {_trgrt3 = 0; _trgrt3I = 0;}; bool _tmp2 = _trgrt3; if (_tmp2) { if (! _trgt2I) _trgt2 = ! _trgt2; } _trgt2I = _tmp2; if (0) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;}; if (_WSP2_A3) { if (_trgrt4I) { _trgrt4 = 0;} else {_trgrt4 = 1; _trgrt4I = 1;} } else {_trgrt4 = 0; _trgrt4I = 0;}; bool _tmp3 = _trgrt4; if (_tmp3) { if (! _trgt3I) _trgt3 = ! _trgt3; } _trgt3I = _tmp3; if (_WSP2_A4) { if (_trgrt5I) { _trgrt5 = 0;} else {_trgrt5 = 1; _trgrt5I = 1;} } else {_trgrt5 = 0; _trgrt5I = 0;}; bool _tmp4 = _trgrt5; if (_tmp4) { if (! _trgt4I) _trgt4 = ! _trgt4; } _trgt4I = _tmp4; digitalWrite(6, !(_trgt1)); digitalWrite(7, !(_trgt2)); digitalWrite(8, !(_trgt3)); digitalWrite(9, !(_trgt4)); } void _sendWebServerPage(int sendPageNumber) {_tspWebServer_client.println("HTTP/1.1 200 OK"); _tspWebServer_client.println("Connection: close"); _tspWebServer_client.println(); _tspWebServer_client.println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">"); _tspWebServer_client.println("<html><head>"); _tspWebServer_client.println("<META content=""text/html; charset=utf-8"" http-equiv=""Content-Type"">"); _tspWebServer_client.println("</head><body>"); if (sendPageNumber ==1) {_sendWebServerPage1();} if (sendPageNumber ==2) {_sendWebServerPage2();} _tspWebServer_client.println("</body></html>"); delay(1); _tspWebServer_client.stop();} int _parseWebServerReqest(String reqestAddres) { int index; int result=0; index=reqestAddres.indexOf("/"); reqestAddres =_stringWithoutCharWithIndex(reqestAddres,0,(index)); index=reqestAddres.indexOf(" "); reqestAddres =_stringWithoutCharWithIndex(reqestAddres,index,(reqestAddres.length()-index)); if (reqestAddres==""){result= 1;} if (reqestAddres=="1"){_WSP2_A1=1; result= 2;} else {_WSP2_A1=0;} if (reqestAddres=="2"){_WSP2_A2=1; result= 2;} else {_WSP2_A2=0;} if (reqestAddres=="3"){_WSP2_A3=1; result= 2;} else {_WSP2_A3=0;} if (reqestAddres=="4"){_WSP2_A4=1; result= 2;} else {_WSP2_A4=0;} return result; } String _stringWithoutCharWithIndex(String value, int index,int count) { String result=""; for (int i=0; i <= value.length(); i++){ if((i<index) ||(i>(index+count))){ result+=value.charAt(i); } } return result; } void _sendWebServerPage1(void) { _tspWebServer_client.println(""); _tspWebServer_client.println("<table width=""100%"" height=""100%"" cellspacing=""0"" cellpadding=""0"" border=""0"" bgcolor=""1E90FF"">"); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println("<td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<table width=""1200px"" align=""center"" border=""1"" cellspacing=""0"" cellpadding=""20"">"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<td width=""60%"" valign=""top"">"); _tspWebServer_client.println("<p><font color=""500000"" size=""5"" face=""Open Sans"">Управление нагрузкой</font></p>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<table width=""60%"" cellspacing=""0"" cellpadding=""20"">"); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println("<td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<p><a href=""http://192.168.0.222/1""><button>Реле 1</button></a></p>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println(""); _tspWebServer_client.println("<td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<p><a href=""""http://192.168.0.222/2""><button>Реле 2</button></a></p>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println(""); _tspWebServer_client.println("<td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<p><a href=""""http://192.168.0.222/3""><button>Реле 3</button></a></p>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println(""); _tspWebServer_client.println("<td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<p><a href=""""http://192.168.0.222/4""><button>Реле 4</button></a></p>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println(""); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println("</table>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("</table>"); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println("</table>"); _tspWebServer_client.println(""); }void _sendWebServerPage2(void) { _tspWebServer_client.println("<meta http-equiv=""refresh"" content=""0;URL=http://192.168.0.222"">"); }
Другой скетч, загружается успешно, установлены все библиотеки. но, открывается в браузере белая страница
:
#include <dht11.h> #include <SPI.h> #include <Ethernet.h> #include <SD.h> #define DHT11_PIN 7 #define REQ_BUF_SZ 20 dht11 DHT; File webFile; char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string char req_index = 0; // index into HTTP_req buffer byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(192, 168, 0, 20); EthernetServer server(80); /* void setup() { SD.begin(4); Ethernet.begin(mac, ip); server.begin(); } void loop() { // listen for incoming clients EthernetClient client = server.available(); if (client) { #include <dht11.h> #include <SPI.h> #include <Ethernet.h> #include <SD.h> #define DHT11_PIN 7 #define REQ_BUF_SZ 20 dht11 DHT; File webFile; char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string char req_index = 0; // index into HTTP_req buffer byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(192, 168, 0, 20); EthernetServer server(80); */ void setup() { SD.begin(4); Ethernet.begin(mac, ip); server.begin(); } //*********************** void loop() { // listen for incoming clients EthernetClient client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (req_index < (REQ_BUF_SZ - 1)) { HTTP_req[req_index] = c; // save HTTP request character req_index++; } if (c == '\n' && currentLineIsBlank) { if (StrContains(HTTP_req, "GET / ") || StrContains(HTTP_req, "GET /index.htm")) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connnection: close"); client.println(); webFile = SD.open("index.htm"); } else if (StrContains(HTTP_req, "GET /temp.png")) { webFile = SD.open("temp.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "GET /humid.png")) { webFile = SD.open("humid.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "GET /flame.png")) { webFile = SD.open("flame.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "ajax_flame")) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: keep-alive"); client.println(); int smoke_gas = 0; //пин на котором подключен MQ-2 int sensorReading = analogRead(smoke_gas); int chk; chk = DHT.read(DHT11_PIN); client.println(sensorReading); client.println(":"); client.println(DHT.temperature); client.println(":"); client.println(DHT.humidity); } if (webFile) { while (webFile.available()) { client.write(webFile.read()); // send web page to client } webFile.close(); } req_index = 0; StrClear(HTTP_req, REQ_BUF_SZ); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } } //****************************************************************************** void StrClear(char *str, char length) { for (int i = 0; i < length; i++) { str [i]= 0; } } char StrContains(char *str, char *sfind) { char found = 0; char index = 0; char len; len = strlen(str); if (strlen(sfind) > len) { return 0; } while (index < len) { if (str [index]== sfind[found]) { found++; if (strlen(sfind) == found) { return 1; } } else { found = 0; } index++; } return 0; } /* } if (webFile) { while(webFile.available()) { client.write(webFile.read()); // send web page to client } webFile.close(); } req_index = 0; StrClear(HTTP_req, REQ_BUF_SZ); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; }else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } } void StrClear(char *str, char length) { for (int i = 0; i < length; i++) { str = 0; } } char StrContains(char *str, char *sfind) { char found = 0; char index = 0; char len; len = strlen(str); if (strlen(sfind) > len) { return 0; } while (index < len) { if (str [index]== sfind[found]) { found++; if (strlen(sfind) == found) { return 1; } } else { found = 0; } index++; } return 0; } */
Открывал код страницы, думал, шрифты прозрачные, там пусто вообще, нет никакой информации по указанному IP, но сама страница открывается... Пытался скартой ставить и без карты загружаться. Пытался загружать похожий скетч, для управления нагрузкой через браузер, так же захожу по IP, и опять белая страница.
Пробовал заходить с другого ноутбука, и то-же самое, белая страница.
Подскажите пожалуйста, что я делаю не так, почему страницы в браузере, при переходе на определённый IP, открываются чисто белыми, почему скетч не работает во втором случае?
первый код написан явно не человеком, а интерпретатором типа FLProg. Такое не один живой программист разбирать не станет - просто посчитает ниже своего достоинства.
во втором случае страницы должны подгружаться с SD-карты - она у вас есть? Файлы, перечисленные в коде - на нее загружены?
Да, действительно, первый скрипт писался с использованием приложения с подстановкой компонентов.
Во втором скрипте, файлы загружены были на СД. Я пробовал с файлами, и пробовал вынимать СД карту, эффект одинаковый, страница в браузере открывалась чисто белой
вот ссылка на исходник, может я не весь код скопировал, не могу понять
https://tehnopage.ru/ethernet-arduino-pwm-control