• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESP32 UART<->WiFi мост

kreker

New member
Доброго дня.

Надо реализовать связь с низкой интенсивностью обмена данными между двумя удалёнными контроллерами.

Может кто проверить в работе пример по ссылке?
Заказал пару отладок, но они в пути. И может это вовсе не то, что мне надо.

Работу примера понял так: можно связать два модуля ESP32 по WiFi и отсылать \ принимать данные через UART с обоих концов.

Заблуждаюсь?
 

Алексей.

Active member
Надо реализовать связь с низкой интенсивностью обмена данными между двумя удалёнными контроллерами.
В примере, том что по ссылке, организовано "прозрачное" соединение TCP<->UART
Работу примера понял так: можно связать два модуля ESP32 по WiFi и отсылать \ принимать данные через UART с обоих концов.
В примере реализован только tcp сервер, клиенты там не реализованы, некому исходящее соединение устанавливать.
UART<->TCP<->UART не реализовано, проверять пока нечего.
 

nikolz

Well-known member
Доброго дня.

Надо реализовать связь с низкой интенсивностью обмена данными между двумя удалёнными контроллерами.

Может кто проверить в работе пример по ссылке?
Заказал пару отладок, но они в пути. И может это вовсе не то, что мне надо.

Работу примера понял так: можно связать два модуля ESP32 по WiFi и отсылать \ принимать данные через UART с обоих концов.

Заблуждаюсь?
чтобы не гонять из пустого в порожнее,
давайте уточним задачу.
-----------------------
У вас два контроллера, которые что-то иногда выдают в uart. Верно?
Вопрос куда и ждут ли ответа.
какой формат сообщений
как синхронизируется переда-прием
допускается ли пропуск сообщений
какие контроллеры.
пока все.
 

kreker

New member
@nikolz
>У вас два контроллера, которые что-то иногда выдают в uart. Верно?
Верно.

>Вопрос куда и ждут ли ответа.
Пока не проработано: передал контроллер 1 -> принял контроллер 2 или передал контроллер 2 -> принял контроллер 1. Т.е. прям постоянного обмена не надо.

>какой формат сообщений
В данный момент - его нет.

>допускается ли пропуск сообщений
Не желателен.

>как синхронизируется передача-прием
Пока никак. Самое простое - отправка запроса на передачу и получение разрешение на её осуществление. Нет ответа на запрос или ответ отрицательный - принимаем. Ничего не принято в течении n-ого времени - снова запрос на передачу.
В таком вот сыром виде.

>какие контроллеры
Не важно.

Вообще, надо бы самому делать... Только с ESP32 не знаком.
На одной ESP32 - TCP сервер и чтение \ запись буфера UART.
На другой ESP32 - TCP клиент и чтение \ запись буфера UART.
 

nikolz

Well-known member
@nikolz
>У вас два контроллера, которые что-то иногда выдают в uart. Верно?
Верно.

>Вопрос куда и ждут ли ответа.
Пока не проработано: передал контроллер 1 -> принял контроллер 2 или передал контроллер 2 -> принял контроллер 1. Т.е. прям постоянного обмена не надо.

>какой формат сообщений
В данный момент - его нет.

>допускается ли пропуск сообщений
Не желателен.

>как синхронизируется передача-прием
Пока никак. Самое простое - отправка запроса на передачу и получение разрешение на её осуществление. Нет ответа на запрос или ответ отрицательный - принимаем. Ничего не принято в течении n-ого времени - снова запрос на передачу.
В таком вот сыром виде.

>какие контроллеры
Не важно.

Вообще, надо бы самому делать... Только с ESP32 не знаком.
На одной ESP32 - TCP сервер и чтение \ запись буфера UART.
На другой ESP32 - TCP клиент и чтение \ запись буфера UART.
из ваших ответов следует, что готового решения нет.
Будете делать сами.
Вашу задачу можно решить и на ESP8266 или ESP8285,
так как решение на ESP32 избыточно,
сложнее,дороже и нет преимуществ.
 

nikolz

Well-known member
из своего опыта
я решил бы эту задачу одним из следующих вариантов
1) сообщения от микроконтроллера через UART на ESP8285 и далее широковещание по UDP . кому надо, тот принимает по UDP и далее на UART.
по такому решению могут обмениваться любое число микроконтроллеров.
2) если сообщения не более 512 байт, то вместо широковещательного UDP применил бы ESP-NOW.
------------------
оба решения в инете не найдете.
 

kreker

New member
@nikolz
Подскажите, а может ли приложение использовать встроенную (которой располагает модуль) память этих модулей (ESP8266 или ESP8285, ESP32), чтобы сократить лишние интерфейсы и не устанавливать внешнюю микросхему (организовать передачу UART MCU -> UART ESP?? -> Built-in ?RAM)?
Или лучше писать на внешнюю память?
 

nikolz

Well-known member
@nikolz
Подскажите, а может ли приложение использовать встроенную (которой располагает модуль) память этих модулей (ESP8266 или ESP8285, ESP32), чтобы сократить лишние интерфейсы и не устанавливать внешнюю микросхему (организовать передачу UART MCU -> UART ESP?? -> Built-in ?RAM)?
Или лучше писать на внешнюю память?
если хватит, то лучше использовать внутреннюю память.
у 8266 Есть 40 Кбайт энергозависимой памяти, которая не сохраняется в режиме deep-sleep
примерно 3 Мбайта свободной флеш
и 512 байт RAM RTC - сохраняемой в режиме deep-sleep
у ESP32 еще больше
------------
deep-sleep используется для сокращения энергопотребления. Тоr потребления при этом ESP8266 -20 мка, ESP8285 -10 мка.ESP32<10
 
Сверху Снизу