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

Прошивка TCP2UART переходника с настройкой по Web

verlaty

New member
Добрый день. Благодаря этой статье получилось настроить два модуля как прозрачный UART мост между двумя устройствами на STM32. Связь заработала, но прошивка не совсем соответствует моим требованиям. Попробую изложить суть вопроса.
Есть два устройства: 1. пульт управления. 2. Приемник (Исполнительный механизм).
Исполнительный механизм управляет 3 моторами в реальном времени. Пульт управления передает на приемник сигналы управления ( это может быть движение моторов по заданной программе или же полностью ручное управление).Пульт передает данные каждые 10 мс. Не буду вдаваться в процесс обработки данных в приемнике (для общего понимания данные принимаются и обрабатываются в режиме DMA), то есть данные обрабатываются тогда когда они поступили в канал UART. Так вот принимаются данные с промежутками времени 5мс, 4мс, 5мс,.....потом пауза 40(50, 60) мс. То есть например 15 пачек данных приходит с периодом 5 мс, потом модем молчит примерно 50мс. ( это вызывает дерготню мотора) Программным способом это получилось победить, но хотелось бы избежать таких провалов данных. Такое впечатление что он как то буфферизирует данные а потом отправляет весь буфер и период этой отправки около 120мс . Возможно влияет это настройка на картинке (выделил красным), можно ли уменьшить этот параметр например до 10мс.
Получается что канал не совсем прозрачный.
И второй вопрос в этой прошивке есть буфер и при пропадании или ухудшения качества связи передающий ESP собирает все в себя а потом при восстановлении связи выдает все сразу в канал и приемник начинает отрабатывать действия оператора как бы записанные в память.
Итого:
1. Как избежать провалов в передаче модулей (добиться реально прозрачного канал в реальном времени), отправка и прием данных без служебных команд.
2. Как уменьшить внутренний буфер в этих прошивках (мне не страшна кратковременная пропажа данных).
3. Как улучшить качества связи, увеличить дальность (достаточно ли использовать внешнюю антенну для увеличения дальности например до 500 м в условиях прямой видимости и метров 100 в помещениях, или связь через стену через какие то препятствия)
Может подскажите готовые прошивки. Я использовал прошивку из первого поста этой темы web v0.6.1 160416
 

Вложения

  • 74.6 KB Просмотры: 47
Последнее редактирование:

Andy Korg

Moderator
Команда форума
1. Как избежать провалов в передаче ...
Скорее всего это невозможно, в силу разницы принципов работы протоколов UART и WiFi
2. Как уменьшить внутренний буфер в этих прошивках....
Буфер уменьшать не нужно, просто уменьшите период работы таймера отправки из UART, только вот это все равно не гарантирует периодичности отправки в силу самой природы протокола WiFi
Может подскажите готовые прошивки.
Более надежной прошивки мне не попадалось.
По моему скромному мнению, вам надо использовать протокол поверх существующего UART-TCP который бы обеспечивал равномерный поток команд в ущерб быстродействию.
 

verlaty

New member
Спасибо, за подробный ответ. Действительно эта версия понравилась стабильностью работы. Если можно чуток подробнее об этом:
Буфер уменьшать не нужно, просто уменьшите период работы таймера отправки из UART
Я не очень хорошо знаком со всеми настройками, и если честно сейчас детально разбираться с этими прошивками нет возможности (нет времени основательно этим заниматься, надо закончить основной проект... дойдут и до этого руки)
На что влияют настройки обведенные красным?
Равномерность передачи и приема победил программно и результат очень понравился. Осталось, как вы сказали уменьшить период работы таймера отправки . Пусть лучше провалится связь и данные пропадут, чем устройство повторит все действия оператора, которое оно записало в буфер. Для общего понимания вопроса: Пульт управления - мобильное устройство, оператор постоянно находится в движении и есть вероятность того что качество связи будет нарушено или потеряна вообще.
Вот поэтому возник вопрос - насколько улучшит ситуацию использование внешних антенн.
И еще вспомнилось пожелание: как сделать что бы при потере связи устройство быстрее ее восстанавливало. Может использовать статические IP адреса?
 

pvvx

Активный участник сообщества
На что влияют настройки обведенные красным?
Beacon interval – интервал широковещательного идентификатора сети. По умолчанию чаще всего используется значение 100 мс. Необходим для обнаружения сети беспроводными клиентами.
Равномерность передачи и приема победил программно и результат очень понравился. Осталось, как вы сказали уменьшить период работы таймера отправки .
Нету никакого таймера и буфер отправляется сразу после окончания блока UART.
В последних версиях короткие блоки данных передаются сразу после паузы между символами в 4 символа (тишина на линии в ~ 56 тиков UART) или: Для диапазона скоростей до 1 Mega Baud задержка разделения на блоки равна стандарту из modbus.
Может использовать статические IP адреса?
Зависит от роутера, а при связи двух модулей уменьшает время соединения примерно на 0.7 сек.
 

verlaty

New member
Влияние буфера я заметил, когда пропадала связь (оператор заходил например за стену, но продолжал управлять) а после того как связь восстанавливалась модем передавал все данные о движениях примерно 5 - 10 сек. И мотор отрабатывал все эти движения. Меня устроит вариант что бы при пропадании связи пропадали и данные, а при восстановлении - начиналось движения с момента разрыва.
О таймере отправки заговорил после слов Andy Korg.
После ковыряния в тырнете понял что Beacon interval - это сигнал готовности приема от Station (тоесть как бы приемник говорит что готов принять данные каждые 100 мс. Увеличение этого значения ни как не повлияло на качество передачи, а уменьшить меньше 100мс не получилось.
pvvx, поделитесь пожалуйста информацией как организована передача в в этой прошивке (передается какими то фрэймами (блоками) или как то по времени синхронизируется передача (например каждые 10мс). И как можно уменьшить буфер, что бы исключить эффект запоминание.
Я в своем проекте передаю информацию пачками по 15 байт каждые 10 мс. Было бы не плохо что бы и модуль передавал примерно такими же пачками.
 
Последнее редактирование:

pvvx

Активный участник сообщества
И как можно уменьшить буфер, что бы исключить эффект запоминание.
Я в своем проекте передаю информацию пачками по 15 байт каждые 10 мс. Было бы не плохо что бы и модуль передавал примерно такими же пачками.
Данная прошивка TCP2UART, а TCP означает - без потерь. Вам желательно использовать что-то другое, например передачу по UDP или делать свой протокол. Уменьшением буфера описываемые проблемы не решить.
 

Slimzp

New member
Подскажите новичку как включить уарт а то что то не доходит а то он енейбл
 

verlaty

New member
Что значит включить уарт? На чем? Если он енейбл, это значит что он уже включен.... Распиши проблему подробнее.
 

Slimzp

New member
Описывают все как есть и как нужно я совсем в этом всем не чего не понимаю, есть арду мега 2560 и есп 8266(1) нужно мне от этого всего залил скетч на 2560 она должна передовать сигналы через есп на телефон в приложение
 

verlaty

New member
Если я все правильно понял, то у тебя в принципе все готово. Подключи ESP к ардуине.
Для ESP8266 ESP-01 надо подключить : VCC и CH_PD (chip enable) к питанию 3,3 вольт, а GND к земле.
Должна появиться сеть WIFI ESP8266. Проверяй на телефоне и подключайся к ней.
Для того что бы передавать данные подключай сигналы RX и TX ESP к TX и RX Arduino соответственно (именно меняются местами).
Если скетч рабочий, и передача идет, то все твои данные сразу полетят в сеть......
Ну а дальше принимай их на телефоне и делай с ними что хочешь.

P.S. забыл отметить... выставь одинаковую скорость UART в ардуине и в ESP. Иначе данные будут приходить "кривые".
 

makshirinkin

New member
Здравствуйте все!
У меня такая же проблема ...
Подскажите пожалуйста может кто сталкивался с такой ситуацией:
1. у модуля слетели настройки и он виден в сети как ESP_FEA00E
2. соединяюсь (коннекчусь к нему как к точке доступа)
3. захожу на web 192.168.4.1 - всё получается
4. Дальше пытаюсь зайти в настройки, открывается окно авторизации, ввожу логин как на первой странице (ESP_FEA00E), но пароля там нет.
Какой пароль вводить?
без пароля не проходит.
Заметил, что если подать питание на модуль с некоторым дребезгом (кратковременно разомкнуть во время загрузки), тогда модуль зависает и второй светодиод на модуле постоянно светится.
После перезагрузки имеем вышеописанную проблему.
Возможно успевает сработать ...
"Сброс настроек WiFi по умолчанию:
Используется ножка RX (GPIO3 или GPIO13 если включен swap) и при старте модуля на ней отслеживается "притяжка" к gnd в течении 25 ms. Опрос производится сразу после старта прошивки, после вывода сообщений BIOS-а. Если включена инверсия сигнала RX, то сброс производится "притяжкой" вывода RX к +3.3V. В случае, если за время опроса в 25 ms проходят импульсы или есть перепад, сброса не производится. Это защищает от сброса настроек при перезагрузке модуля во время коммуникаций по UART. Импульсы опрашиваются по аппаратному прерыванию от ножки.
"
Как можно этого избежать?
 

Slimzp

New member
Маленький нюанс у приложения ip192.168.4.1:3333 тоесть и на есп нужно какого порт 3333 втулить
 

Slimzp

New member
Если я все правильно понял, то у тебя в принципе все готово. Подключи ESP к ардуине.
Для ESP8266 ESP-01 надо подключить : VCC и CH_PD (chip enable) к питанию 3,3 вольт, а GND к земле.
Должна появиться сеть WIFI ESP8266. Проверяй на телефоне и подключайся к ней.
Для того что бы передавать данные подключай сигналы RX и TX ESP к TX и RX Arduino соответственно (именно меняются местами).
Если скетч рабочий, и передача идет, то все твои данные сразу полетят в сеть......
Ну а дальше принимай их на телефоне и делай с ними что хочешь.

P.S. забыл отметить... выставь одинаковую скорость UART в ардуине и в ESP. Иначе данные будут приходить "кривые".
Маленький нюанс у приложения ip192.168.4.1:3333 тоесть и на есп нужно какого порт 3333 втулить
 

TRO

Member
А присоветуйте пожалуйста проверенную програмку или драйвер для того чтобы утилиту на компьютере которая умеет конектится только через UART приконектить к данной прошивке по TCP. Т.е. нужен виртуальный COM порт с выходом на TCP. Под виндовс.

прошло время.....

Отвечу сам, может кому пригодится, поставил COM2TCP от сюда: AstroGeeks: Astronomy Products, Astronomy Fun , Подключил управление станком ЧПУ по вайфаю, работает :)
 
Последнее редактирование:

shaman1010

Member
А присоветуйте пожалуйста проверенную програмку или драйвер для того чтобы утилиту на компьютере которая умеет конектится только через UART приконектить к данной прошивке по TCP. Т.е. нужен виртуальный COM порт с выходом на TCP. Под виндовс.
Зайди на сайт tibbo, у них есть хорошая утилита, которая работает вплоть до win 8.1/64 (на десятке не проверял).
 
Сверху Снизу