ESP32. Перезагрузка при подключении к WiFi

Encounter
Offline
Зарегистрирован: 17.04.2021

Делаю WiFi-сервер на ESP32. При подключении с телефона к этой WiFi сети ESP32 сразу-же презагружается. Без подключения нормально работает, всё что нужно циклически выдаёт в последовательный порт, но стоит попробовать подключиться по WiFi к ESP сразу-же перезагрузка.

В чём может быть проблема?

Дамп выдаваемый в последовательный порт при перезагрузке:

dhcps: send_offer>>udp_sendto result 0
Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 0 register dump:
PC      : 0x00000000  PS      : 0x00060e30  A0      : 0x80114e91  A1      : 0x3ffb3d30  
A2      : 0x3ffcd494  A3      : 0x3ffcd6c8  A4      : 0x3ffccd3c  A5      : 0x3ffcd474  
A6      : 0x0202a8c0  A7      : 0x0c02a8c0  A8      : 0x80114d34  A9      : 0x3ffb3cf0  
A10     : 0x3ffcd4a4  A11     : 0x3ffcd6c8  A12     : 0x3ffb3d3c  A13     : 0x00000044  
A14     : 0x00000001  A15     : 0x00000006  SAR     : 0x00000010  EXCCAUSE: 0x00000014  
EXCVADDR: 0x00000000  LBEG    : 0x4000c349  LEND    : 0x4000c36b  LCOUNT  : 0x00000000  
 
Backtrace: 0x00000000:0x3ffb3d30 0x40114e8e:0x3ffb3d70 0x40121bc1:0x3ffb3d90 0x40126bc9:0x3ffb3dd0 0x4012be66:0x3ffb3df0 0x401157b3:0x3ffb3e10 0x40088b7d:0x3ffb3e40
 
Rebooting...
ets Jun  8 2016 00:22:57
 
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
HTTP server started
 
rkit
Offline
Зарегистрирован: 23.11.2016

Ошибка в коде. Код, видимо, секретный.

Encounter
Offline
Зарегистрирован: 17.04.2021
#include <WiFi.h>
#include <WebServer.h>
 
const char* ssid = "ESP32";  
const char* password = "01234567";  
 
IPAddress local_ip(192,168,2,1);
IPAddress gateway(192,168,2,1);
IPAddress subnet(255,255,255,0);
WebServer server(80);
#include "P_index_css.h"
#include "P_index.h"
#include "P_web_interface_css.h"
 
void setup() {
  Serial.begin(115200);
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  server.on("/", [](){server.send_P(200, "text/html", P_index);});
  server.on("/index.html", [](){server.send_P(200, "text/html", P_index);});
  server.on("/web_interface.css", [](){server.send_P ( 200, "text/css", P_web_interface_css);});
  server.on("/index.css", [](){server.send_P ( 200, "text/css", P_index_css);});
  server.onNotFound(handle_NotFound);
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop() {
  server.handleClient();
   delay (100);}
 
void handle_NotFound(){
  server.send(404, "text/plain", "Not found");}

 

Encounter
Offline
Зарегистрирован: 17.04.2021
const char P_index[] PROGMEM =  R"=====(
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Страница управления OutDoor</title>
<meta name="generator" content="WYSIWYG Web Builder 14">
<link href="web_interface.css" rel="stylesheet">
<link href="index.css" rel="stylesheet">
<script language="JavaScript">
var o=new XMLHttpRequest();
function dR() {
 o.open("GET","data.txt?r="+Math.random(),1);
 o.onload=function(){
   var a=this.responseText.replace(/\s*[\r\n=]+\s*/g, "=").replace(/^\s+/,"").replace(/\s+$/,"").match( /([^=]+)/g);
   for (var i=0, len=a.length; i< len; i+=2) try { document.getElementById(a[i]).innerText=a[i+1]; } catch(e) {};
   setTimeout("dR()", 5000);
 }
 o.send();
}
</script>
</head>
<body onload="dR()">
<div id="container">
<table style="position:absolute;left:27px;top:109px;width:917px;height:586px;z-index:0;" id="Table1">
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Температура внутреннего датчика, </span><span style="color:#000000;font-family:Calibri;font-size:35px;line-height:39px;">°С</span></td>
<td class="cell1"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;"<span id="pTroom"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Температура наружного датчика, </span><span style="color:#000000;font-family:Calibri;font-size:35px;line-height:39px;">°С</span></td>
<td class="cell1"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;"<span id="pTout"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Температура конденсатора, </span><span style="color:#000000;font-family:Calibri;font-size:35px;line-height:39px;">°С</span></td>
<td class="cell1"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;"<span id="pTcond"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Дверь</span></td>
<td class="cell1"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;"<span id="door"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Фильтр</span></td>
<td class="cell1"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;"><span id="FC"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Давление</span></td>
<td class="cell1"><span style="color:#000000;font-family:'Arial CYR';font-size:35px;line-height:37px;"<span id="HiPress"></span>.</span></td>
</tr>
<tr>
<td class="cell0"><span style="color:#000000;font-family:Arial;font-size:35px;line-height:39px;">Обороты вентилятора</span></td>
<td class="cell1"><span style="color:#000000;font-family:'Arial CYR';font-size:35px;line-height:37px;"<span id="rotation"></span>.</span></td>
</tr>
</table>
</div>
</body>
</html>
)=====";

 

Encounter
Offline
Зарегистрирован: 17.04.2021

Остальные *.css есть смысл приводить? Или и так всё понятно?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Encounter пишет:

и так всё понятно?

Ничего не понятно. Вставьте код как положено - с номерами строк и т.п. В таком виде никто в нём ковыряться не будет.

Encounter
Offline
Зарегистрирован: 17.04.2021

ЕвгенийП пишет:

Ничего не понятно. Вставьте код как положено - с номерами строк и т.п. В таком виде никто в нём ковыряться не будет.

Вставил как положено...

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Прикольно :)))

А можно вас попросить после 19 строки вставить вот такие две строчки и прислать сюда, что вам вылетит в терминал ?

Serial.println(P_index);
delay(20000);

А еще мне очень интересно какие варнинги выводит компилятор.

И наверное я чего то не знаю, пусть мне будет стыдно , вот это что ?

const char P_index[] PROGMEM =  R"=====(

Особенно интересует буква R, и как ваши неэкранированные кавычки хавает компилятор и молчит .... У меня видимо прям провал в знаниях... Мне очень стыдно....

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

brokly пишет:

И наверное я чего то не знаю, пусть мне будет стыдно , вот это что ?

const char P_index[] PROGMEM =  R"=====(

Это т.н. "сырая строка" (raw string). Общий формат

R"<разделитель>(собс-но строка, включая переводы строк и вообще почти что угодно)<разделитель>"

Разделитель можно опускать, тогда после закрывающей скобки должен сразу идти конец (закрывающая кавычка)

Например:

const char * quot1 = R"quotation(
Жизнь такова, 
Какова она есть
И больше - никакова
(В. Костров)
)quotation";

const char * quot2 = R"(
Детка, 
Всем мы немножкл лошади.
Каждый из нас
по-своему "лошадь".
(В. Маяковский)
)";


void setup(void) {
	Serial.begin(115200);
	Serial.print(quot1);
	Serial.print(quot2);
		
}
void loop(void) {}

результат (обратите внимание, что все переводы строк и кавычки вошли в результирующие строки). Тут правда особенность печати кода на сайте подводит. В реальности первая строка пустая (текст начинается с перевода строки) - попробуйте и убедитесь.

Жизнь такова, 
Какова она есть
И больше - никакова
(В. Костров)

Детка, 
Всем мы немножкл лошади.
Каждый из нас
по-своему "лошадь".
(В. Маяковский)
brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Прикольно. Не знал. Спасибо.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

brokly пишет:

Прикольно :)))

А можно вас попросить после 19 строки вставить вот такие две строчки и прислать сюда, что вам вылетит в терминал ?

Serial.println(P_index);
delay(20000);

ТС это не отменяет моей просьбы !

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

brokly пишет:

Спасибо.

Да, не за что. Там, на самом деле, до хренища всяких префиксов может быть: A string-literal is a sequence of characters surrounded by double quotes, optionally prefixed by R, u8, u8R, u, uR, U, UR, L, or LR, as in " . . . " , R" (. . . ) " , u8" . . . " , u8R" **(. . . ) **" , u" . . . " , uR" *~(. . . ) *~" , U" . . . " , UR" zzz(. . . ) zzz" , L" . . . " , or LR" (. . . ) " , respectively 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ЕвгенийП пишет:

brokly пишет:

Спасибо.

Да, не за что. Там, на самом деле, до хренища всяких префиксов может быть: A string-literal is a sequence of characters surrounded by double quotes, optionally prefixed by R, u8, u8R, u, uR, U, UR, L, or LR, as in " . . . " , R" (. . . ) " , u8" . . . " , u8R" **(. . . ) **" , u" . . . " , uR" *~(. . . ) *~" , U" . . . " , UR" zzz(. . . ) zzz" , L" . . . " , or LR" (. . . ) " , respectively 

Да уже нашел по вашей наводке :)

Encounter
Offline
Зарегистрирован: 17.04.2021

ЕвгенийП пишет:

brokly пишет:

Спасибо.

Да, не за что. Там, на самом деле, до хренища всяких префиксов может быть:

Евгений, ну а по моей теме что-нибудь скажете?

rkit
Offline
Зарегистрирован: 23.11.2016

Обнови/переустанови весь софт.

Encounter
Offline
Зарегистрирован: 17.04.2021

rkit пишет:
Ошибка в коде. Код, видимо, секретный.

rkit пишет:

Обнови/переустанови весь софт.

Значит по вашему всё-таки в коде ошибок нет?

rkit
Offline
Зарегистрирован: 23.11.2016

В коде ошибка, только не в этом.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Encounter пишет:

Евгений, ну а по моей теме что-нибудь скажете?

Нет, не скажу :-(

Было бы чего - сказал бы.

vde69
Offline
Зарегистрирован: 10.01.2016

У меня недавно была похожая тема.
Я до конца не разобрался.
Пока в конкретно моем случае я грешу на критичкость для есп вольтажа на разных ногах,
В вашем случае подключение должно увеливать силу тока и в следствии возможна посадка напряжения.
Другой вариант не удачная разводка и помехи.

Оба варианта лично я пробовал лечить, но пока только пожег мегу,
Теперь буду эксперемены ставить на дешёвых нано в связке с есп

vde69
Offline
Зарегистрирован: 10.01.2016

А вообще назначить шлюзом в инет еспшку разумеется, она завалиться сразу, на. Неё весь инетовский трафик попрёт, например днс или служба времени или обновление виндв

vde69
Offline
Зарегистрирован: 10.01.2016

То есть так можно делать только если все устройства сети молчат и идут только куда надо и когда надо

sadman41
Offline
Зарегистрирован: 19.10.2016

Перезагрузка по питанию выглядит иначе. Там про "Brownout reset" написано будет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну ладно, хоть меня тут и нет....

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_AP); // <=== смотрим примеры и думаем почему же так !!!!
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);

 

Encounter
Offline
Зарегистрирован: 17.04.2021

sadman41 пишет:
Перезагрузка по питанию выглядит иначе. Там про "Brownout reset" написано будет.

Я читал про питание и пробовал подавать +5V от заведомо мощного регулируемого БП, когда это не помогло (на плате стоит AMS1117), подал +3.3V от этого-же БП, но это тоже не решило проблему.

Примечательно то, что пример взятый отсюда: https://arduino-tex.ru/news/15/urok-1-veb-server-esp32-esp8266-v-srede-arduino-ide.html работает, хотя тоже время от времени при коннекте к нему перезагружается, но если законнектился, то работает. А мой ни в какую не позволяет законнектится.

vde69
Offline
Зарегистрирован: 10.01.2016

шлюзом назначь что-то серьезное или не существующий IF

 

 
08 IPAddress gateway(192,168,2,1); // <<<< Вот тут что-то другое нужно.....
 
 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Да блин... Тут читать : https://github.com/espressif/arduino-esp32/issues/2025