• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

esp32c3 - Мутная работа с WiFi

pvvx

Активный участник сообщества
есть ограничения на мктт-ехплорере, но точно не помню, то ли 500 на топик, то ли 5000 на топик, то ли 5000 на все🤦‍♂️
вообще, бывают какие-то сбои на мктт-брокере (ну или еще вокруг него):
MQTT работает т через TCP-IP. Стоит проверить лог TCP-IP, к примеру, в Wireshark.

Если у вас ESP засыпает и снова соединяется, тогда номер порта для соединения выбирается по псевдо-рандом, а IP фиксирован. И номер порта может совпадать с прошлым закрытым соединением.

По стандарту в TCP-IP, сторона закрывшая соединение, должна выдержать 120 секунд для всех следующих запросов соединений по использованным IP и порту адресата и получателя. В этот период всем поступившим пакетам типично дается команда закрытия соединения (break)...

ИИ: Интервал TIME_WAIT — это обязательное состояние TCP-соединения.
Оно гарантирует, что все потерянные пакеты дойдут до адресата, и предотвращает смешивание старых и новых данных при повторном использовании тех же IP-адресов и портов.


В итоге некоторые соединения от EPS будут откинуты сервером и промежуточным сетевым оборудованием. При несоблюдении данного стандарта (TIME_WAIT) будут происходить проблемы по цепочке сетевых устройств (роутеров, NAT и т.д.)…
 

pvvx

Активный участник сообщества
вообще, бывают какие-то сбои на мктт-брокере (ну или еще вокруг него)
Спецификация RFC подразумевает, что локальный сокет должен оставаться активным в состоянии TIME_WAIT в течении 2xMSL.
MSL - это максимальное время жизни сегмента. RFC задает MSL как 120 секунд. Т.е. стандартное время ожидания в TIME_WAIT равно 4 минутам.
Всякие ухищрения и сокращения этого интервала = уход от стандарта TCP/IP на отсебятенный стандрат (на урезанную реализацию TCP в ESP).
Так что проверяйте, что там творится в сети у вашего MQTT сервера…
Или не делайте разрывов TCP соединений и всяких снов в ESP используя keepalive соединение...
 

pvvx

Активный участник сообщества
у меня контроллер сначала связывается с брокером, лезет в ветку с мак-адресами, по мак-адресу получает имя и уже под этим именем публикует данные. так вот, на периоде пары-тройки суток, это порядка тысячи коннектов, контроллер не получает имени и публикует несколько сообщений безымянными, просто под своим мак-адресом. мак-адреса и имена прописаны в брокере как сообщения с ретейн-аттрибутом
Это и похоже на повторное использование соединения с закрытыми IP/портами прошлого соединения находящегося в TIME_WAIT, если на каждый запрос на MQTT создаете новое TCP соединение. Первый запрос отбрасывается по TIME_WAIT, а следующий уже идет с новым номером порта…
 

enjoynering

Well-known member
простой способ решить проблему со связью на esp32-c3 - это просто развернуть антенну (смотри картинку).

у меня другая беда - чип сильно греется согласно встроенному датчику (не знаю на сколько он точный), аж до 85с при активном gpio нагруженном на оптопару через резистор на 680ом. в простое температура падает до 63c.

ну и мои первые впечатления о eps32-c3. Радиомодуль у чипа намного лучше, чем у ESP8266 - он более чувствительный. Однако сам чип такой же капризный в плане кода, как и 8266: здесь всего одно процессорное ядро (а не два, как у ESP32), да ещё и на RTOS с arduino костылями. Стоит выполнить код не в той последовательности и всё... намертво виснем. Ну и греется он прилично (если верить внутреннему датчику).

пы.сы. ESP8266 умер - последний релиз arduino framework для ESP8266 вышел в 2023 году и с тех пор не обновлялся.
 

Вложения

pvvx

Активный участник сообщества
Ну и греется он прилично (если верить внутреннему датчику).
Обзор от ИИ:

Микросхемы серии ESP32-C3 (в корпусе QFN32 размером 5 × 5 мм) обладают сопротивлением теплопередачи от перехода к окружающей среде (\(\theta _{JA}\)Примерно от 40 до 50 °C/Вт, в зависимости от конструкции вашей печатной платы. Для надлежащего рассеивания тепла необходима соответствующая заземляющая плоскость с тепловыми переходными отверстиями.

Основные тепловые характеристики

Тепловое сопротивление (переход-окружающая среда)\(\theta _{JA}\)):
~ 45°C/Вт (Значения могут варьироваться от 40°C/Вт до 50°C/Вт в зависимости от степени покрытия медью печатной платы).
Тепловое сопротивление (переход-корпус)\(\theta _{JC}\)): ~ 10–15 °C/Вт.
Рабочая температура окружающей среды: Доступны стандартная (-40 до +85°C) и расширенная (-40 до +105°C) версии.
Максимальная температура перехода (\(T_{j}\)): 125°C.



По даташиту при работе WiFi на передачу пиковые токи более 0.335A (+ сам CPU и GPIO). Это выделение тепла на более чем 1 Вт.
И если окружающая среда +25С печатной платы (чип на плате без LDO), то на встроенном датчике температуры будет за +70С.
 
Сверху Снизу