ESP32 как точка доступа Wi-Fi дает сбой при подключении

Я программирую ESP32 через ArduinoIDE и наткнулся на странную проблему. Он работает как точка доступа Wi-Fi, код довольно простой и понятный:

IPAddress apIP(192,168,1,1);

WiFi.mode(WIFI_AP);
WiFi.softAP("MyESP32");
WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0));

Теперь, когда клиент подключается к этой точке доступа, он часто выводит следующие сообщения об ошибках:

dhcps: send_nak>>udp_sendto result 0
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      : 0x8011cc29  A1      : 0x3ffb3e00  
A2      : 0x3ffcdbd0  A3      : 0x3ffcde04  A4      : 0x3ffcd844  A5      : 0x3ffcd824  
A6      : 0x0201a8c0  A7      : 0x0c01a8c0  A8      : 0x8011cacc  A9      : 0x3ffb3dc0  
A10     : 0x3ffcdbe0  A11     : 0x3ffcde04  A12     : 0x3ffb3e0c  A13     : 0x00000044  
A14     : 0x00000001  A15     : 0x00000006  SAR     : 0x00000010  EXCCAUSE: 0x00000014  
EXCVADDR: 0x00000000  LBEG    : 0x4000c349  LEND    : 0x4000c36b  LCOUNT  : 0x00000000  

Backtrace: 0x00000000:0x3ffb3e00 0x4011cc26:0x3ffb3e40 0x40129959:0x3ffb3e60 0x4012e961:0x3ffb3ea0 0x40133bfe:0x3ffb3ec0 0x4011d54b:0x3ffb3ee0 0x40089001:0x3ffb3f10

Сказать так ясно: это происходит во время подключения клиента, больше ничего не делается там, где будет задействован мой собственный код ESP32.

Есть идеи, в чем причина этого и как это исправить?


person Elmi    schedule 27.12.2019    source источник
comment
Я подозреваю, что проблема в клиентском коде. Можете ли вы опубликовать пример минимального клиента, который не работает?   -  person Bradford Needham    schedule 28.12.2019
comment
@BradfordNeedham, клиент - это ничего особенного, просто ноутбук с Linux, который подключается к точке доступа Wi-Fi моего ESP32. Код ESP - это то, что показано выше. Интересный факт: похоже, что сбой происходит тем вероятнее, чем ближе ноутбук к ESP32. На расстоянии ›2 м он всегда работает исправно.   -  person Elmi    schedule 30.12.2019
comment
Вы когда-нибудь решали проблему? У меня точно такая же проблема.   -  person Aros    schedule 24.08.2020
comment
@Aros нет, до сих пор решение не найдено   -  person Elmi    schedule 10.09.2020
comment
@ ٍ Эльми. Не могли бы вы также попробовать использовать переменную для подсети. Как «IPAddress subnet (255,255,255,0)» и передать в качестве третьего аргумента для «softAPConfig». Также я создал строку в качестве пароля и передал ее softAP в качестве второго аргумента. Я не пробовал НУЛЕВОЙ пароль для ОТКРЫТОЙ сети; однако единственная разница между моим кодом и вашим - это эти две переменные.   -  person Saadat    schedule 01.11.2020
comment
@Saadat подсеть уже является частью softAPConfig () - звоните !? Использование пароля также не имеет значения, в настоящее время я использую его, но время от времени все еще сталкиваюсь с этой проблемой.   -  person Elmi    schedule 20.11.2020


Ответы (1)


Основная паника во время подключения клиента может быть решена путем добавления 2-секундной задержки после 'WiFi.softAP' и перед 'WiFi.softAPConfig' следующим образом:

IPAddress apIP(192,168,1,1);

WiFi.mode(WIFI_AP);
WiFi.softAP("MyESP32");
delay(2000);
WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0));

дополнительную информацию можно найти здесь: WiFi.softAPIP () вызывает панику Core 0 (InstrFetchProhibited )

person Saadat    schedule 22.11.2020