08-07-2018, 14:27
Witam,
Mam zrobioną stronę WWW na serwerze ESP8266 + Arduino MEGA.
Wszysko działa ale tylko w sieci LAN, czyli wewnętrznej w domu.
Gdy próbuję dostać się z internetu np. przez telefon komórkowy to niestety pojawia się problem.
Po wpisaniu do przeglądarki na telefonie mojego adresu IP z portem usługi, czyli: xxx.xxx.xxx.xxx:8000
widzę, że moduł ESP8266 reaguje mrugając niebieskim LED'em ale strona się nie ładuje.
Niestety otrzymuję taki komunikat:
Ta strona nie działa
Serwer xxx.xxx.xxx.xxx wysłał
nieprawidłową odpowiedź
ERR_INVALID_HTTP_RESPONSE
Przypominam, że jeżeli włączę WiFi w telefonie to strona załaduje się bez problemu.
Oczywiście wówczas podaję do przeglądarki adres LAN, czyli: 192.168.0.111
Poniżej zamieszczam ustawienia w moim routerze TP-LINK.
Aby zapewnić stały adres IP dla modułu ESP8266 w mojej wewnętrznej sieci
to przypisałem go na stałe wykorzystując jego unikalny ades MAC do adresu IP: 192.168.0.111
Poniżej przedstawiam również kod programu napisanego w Arduino:
Poproszę o pomoc bo już po kilku dniach zabrakło mi pomysłów.
Pozdr.
Mam zrobioną stronę WWW na serwerze ESP8266 + Arduino MEGA.
Wszysko działa ale tylko w sieci LAN, czyli wewnętrznej w domu.
Gdy próbuję dostać się z internetu np. przez telefon komórkowy to niestety pojawia się problem.
Po wpisaniu do przeglądarki na telefonie mojego adresu IP z portem usługi, czyli: xxx.xxx.xxx.xxx:8000
widzę, że moduł ESP8266 reaguje mrugając niebieskim LED'em ale strona się nie ładuje.
Niestety otrzymuję taki komunikat:
Ta strona nie działa
Serwer xxx.xxx.xxx.xxx wysłał
nieprawidłową odpowiedź
ERR_INVALID_HTTP_RESPONSE
Przypominam, że jeżeli włączę WiFi w telefonie to strona załaduje się bez problemu.
Oczywiście wówczas podaję do przeglądarki adres LAN, czyli: 192.168.0.111
Poniżej zamieszczam ustawienia w moim routerze TP-LINK.
Aby zapewnić stały adres IP dla modułu ESP8266 w mojej wewnętrznej sieci
to przypisałem go na stałe wykorzystując jego unikalny ades MAC do adresu IP: 192.168.0.111
Poniżej przedstawiam również kod programu napisanego w Arduino:
Kod:
// WiFi ESP8266 + Arduino MEGA.
char klient[1];
char bufor[50];
String strona;
void setup()
{
Serial1.begin(115200); // Moduł ESP8266 ma ustawioną prędkość na 115200.
while (!wyslij("AT", "OK", 100)) delay(100);
if (wyslij("AT+CWMODE=1", "OK", 200));
if (wyslij("AT+CIPMODE=0", "OK", 200));
if (wyslij("AT+CIPMUX=1", "OK", 200));
if (wyslij("AT+CWJAP=\"NazwaMojegoRoutera\",\"HasłoDoRoutera\"", "OK", 5000));
if (wyslij("AT+CIPSERVER=1,80", "OK", 200));
Serial1.println("AT+CIFSR");
}
void loop()
{
while (Serial1.available() > 0)
{
if (Serial1.find("+IPD,"))
{
Serial1.readBytesUntil(',', klient, 1);
strona = "<html><head><title>Arduino Wi-Fi</title></head>";
strona = strona + "<body bgcolor=#0099CC><center><br>";
strona = strona + "<table width=600 bgcolor=white border=5 bordercolor=#006699>";
strona = strona + "<tbody>";
strona = strona + "<tr height=70>";
strona = strona + "<td colspan=3><font size=6 color=#006699><center> SERWER ARDUINO <br>WiFi ESP8266</center></td>";
strona = strona + "</tr>";
strona = strona + "<tr height=30>";
strona = strona + "<td colspan=2><font color=#797979> Czas od uruchomienia:<b></td>";
strona = strona + "<td><b> 0 </b><font color=#797979></font></td>";
strona = strona + "</tr>";
strona = strona + "<tr height=30>";
strona = strona + "<td colspan=2><font color=#797979> Licznik odwiedzin:<b></td>";
strona = strona + "<td><b> 0 </b><font color=#797979></font></td>";
strona = strona + "</tr>";
strona = strona + "<tr height=30>";
strona = strona + "<td colspan=2><font color=#797979> Ostatnia aktualizacja:</td>";
strona = strona + "<td><b> 08.07.2018r.</b></td>";
strona = strona + "</tr>";
strona = strona + "<tr height=50>";
strona = strona + "<td colspan=3><font color=FF9933><center><b>ANT</b></center></td>";
strona = strona + "</tr>";
strona = strona + "</tbody></table><br></center></body></html>";
sprintf(bufor, "AT+CIPSEND=%c,%d", klient[0], strona.length());
if (wyslij(bufor, ">", 200));
if (wyslij(strona, "OK", 200));
sprintf(bufor, "AT+CIPCLOSE=%c", klient[0]);
if (wyslij(bufor, "OK", 200));
}
}
}
boolean wyslij(String Komenda_AT, char *Odpowiedz_AT, int czas_czekania)
{
Serial1.println(Komenda_AT);
delay(czas_czekania);
while (Serial1.available() > 0)
{
if (Serial1.find(Odpowiedz_AT)) return 1;
}
return 0;
}
Poproszę o pomoc bo już po kilku dniach zabrakło mi pomysłów.
Pozdr.