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

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

pvvx

Активный участник сообщества
Согласен, но уж очень близкий по теме.
У Вас же телефон с камерой - это абсолютно разные вещи, но объединенные в одно устройство и телевизор фильмы из сети показывает, почему бы не сделать, чтобы TCP2UART умел чуть больше, чем сейчас. Ну да ладно, это не важно.
Вы предлагаете асинхронное вклинивание в поток TCP2UART символов из HTTP? :rolleyes:

Эти ошибки проявляются на всех скоростях, которые поддерживаются Вашим проектом или только на нестандартных? Уверен, Вы прекрасно понимаете причины возникновения ошибок на нестандартных скоростях.
На низких - особенно. Например старый Гиппертерминал и катайский USR-TCP232-Test.exe совершенно не понимают, что нельзя отправлять символы в TCP, когда там приемник закрыл прием (это стандартное действие). И никакой буфер от этого не спасет.
Этот https://sites.google.com/site/terminalbpp/ - теряет символы, когда наступает переполнение буферов UART. + он делает межсимвольную паузу в 1 ms при передаче. Зачем? - Только автору известно. Так-же вывод у него идет блоками с паузами. Лить непрерывно он не научился.
При меньшей скорости быстрее заполняется стек TCP и окно приема закрывается. На это неадекватно реагируют детские програмки...
В таких случаях они (дети) рекомендуют не пользоваться удобствами и проработкой задолго до их рождения протокола TCP/IP. А рекомендуют посылать символы со скоростью в десяток раз менее "слива" в UART. Тогда никогда не заполнится стек TCP и никогда не закроется окно приема до опустошения буфера. :)
А реальный алгоритм элементарен - послали пачку и ждете ответа что она ушла и шлете следующую. Это очень сложно для детей, т.к. даже примитивный объект TTcpClient в древнем Borland Delphi имеет событие OnSend... и переменные указывающие сколько ещё влезет и сколько уже ушло :) Им проще просто валить всё и сразу в сокет, до возникновения ошибок и писать надпись - error! :) :) У меня гегобитная сеть и туда уходит всё очень хорошо.... Токо вот UART не могет и у ESP8266 нету буфера на кеширование даже короткометражного фильма для UART, чтобы его потом пол года сливать на 9600. :)
> PuTTY, чем он не устраивает?
Если она не умеет работать по стандарту TCP/IP– тогда этим и не устраивает. Если умеет – тогда хорошо. :)

Например плагин к Eclipse умеет и не устраивает только своей примитивностью и неумением работать с COM в Win7x64:
tt22.gif tt23.gif
В нем почему-то не вылезает номер COM порта и его не выбрать....:(
 
Последнее редактирование:

THK

New member
Вы предлагаете асинхронное вклинивание в поток TCP2UART символов из HTTP? :rolleyes:
Нет конечно. Просто в настройки добавить выбор либо TCP2UART, либо POST/GET запрос.
Для работы в этом режиме будет полезно запретить работу в качестве стандартного переходника.
Первый режим Вами уже реализован, во втором пришел запрос - выплюнули его в порт, пришел ответ от порта - переслали его в виде странички с шестнадцатеричным дампом.
При меньшей скорости быстрее заполняется стек TCP и окно приема закрывается.
Не понял. Я чего то явно не догоняю, объясните пожалуйста подробнее.

Перечитал последние посты. Вот это
При любом подключении внешнего MCU. На 115200 очень тормозит сеть (инет и WiFi).
наверное основная проблема, но ИМХО не стоит пытаться ее решить, т.к. это проблема Wi-Fi. Для систем автоматизации (простите за громкое слово:)) нужна отдельная точка доступа.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Не понял. Я чего то явно не догоняю, объясните пожалуйста подробнее.
Давайте наоборот - вы объясните как передать файл по линии со скоростью 1.2 Мегабайт в секунду (это скорость прием по TCP у ESP8266) и далее через COM порт со скоростью 9600 baud (~1 килобайт в секунду). При этом отсылающая программа хочет запихать в TCP стек сразу всё кино на 20 Гегобайт. Расскажите алгоритм, без применения специальных добавочных протоколов (т.к. всё уже есть в TCP/IP для этого, но дети любят извращаться).
Скорость записи Flashу ESP8266 указана тут. http://esp8266.ru/forum/threads/raz...logo-webservera-na-esp8266.56/page-4#post-918 ~157kbps

При её записи используется аналогичный стандартный метод ограничения потока по TCP/IP без специальных навешенных сверху алгоритмов и протоколов от деток. И представляете – эксплореры это понимают, а вот некоторые “терминалы” – нет :(
Lua и NodeMCU тоже не умеют работать по TCP (может когда и исправят) и если туда ливануть данными - то каюк... По этому они используют надвески и нововыдуманные протоколы, которые передают только малыми пачками и очень долго, не используя TCP стек.
 
Последнее редактирование:

THK

New member
Давайте наоборот - вы объясните как передать файл по линии со скоростью 1.2 Мегабайт в секунду (это скорость прием по TCP у ESP8266) и далее через COM порт со скоростью 9600 baud (~1 килобайт в секунду).
Может я не прав, но протокол TCP подразумевает подтверждение приема, это не UDP, может просто не давать его, пока буфер приема не опустеет?
Или проблема в том, что несмотря на это терминалы все равно отсылают данные? Бред.

Перечитал первый пост темы. возник вопрос, а как Вы тестируете, какой путь проходят данные?
Терминал 1 - компорт 1 - модуль ESP 1 - Wi-Fi - модуль ESP 2 - компорт 2 - терминал 2.
Или создаете на компе виртуальный порт и к нему цепляетесь терминалом 2?
 

pvvx

Активный участник сообщества
Или создаете на компе виртуальный порт и к нему цепляетесь терминалом 2?
Простейший тест Tcp2ComTst.exe вложен в архив. Он написан кое-как, но работает. Сделан для того, чтобы не передавать вам больших тестовых пакетов. Мучался аж целый час, пока драл в него куски из своих старых программ :) и ещё немного, когда отлаживал меню интерфейса а не прием-передачу и бросил... Т.е. гораздо дольше вам пытаюсь объяснить как работает TCP :)
Тест работает бардачными кусками и показывает сколько передано и сколько принято раздельно в TCP->UART tx и rx UART->TCP - для теста это даже лучше :) Но только с flow контролем. Иначе там совсем бардак. Проверять данные он не проверяет - это не дописал туда, но передает данные в виде dword, dword+1, dword+2 и т.д. Т.е. можно дописать или контролировать сторонним ПО.
Алгоритм его работы описан выше, как простейший. На несколько потоков исполнения эту программу не делал - по тому, если что не так, то она типа "виснет" - не отвечает :)
Могу выдать исходники куда-то, но там совсем бардак, если хотите убедиться, что там ничего специального или сложного с работой по TCP или COM не вставлено. Наоборот - самый примитив на пару функций (тоже описано ранее).
Вот видео, конца теста. Картинки по нему в http://esp8266.ru/forum/threads/pro...nika-s-nastrojkoj-po-web.146/page-4#post-3209
Темненькие полосы - Wireshark и есть ограничение приема путем управления WIN в TCP...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Провел ещё пару тестов на скорости работы TCP2UART.

При дуплексе, когда идут два потока прием и передача одновременно - всё плохо по скорости и это известно. Там возникают расхождения пакетов c ACK и данными по TCP/IP и сама ESP8266 тупит по WiFi. Для ускорения в таком режиме необходимо синхронизировать размеры пакетов под конкретные скорости потоков, а у нас эти скорости разные - прием/передача в большинстве случаев применения TCP2UART производится кусками с разными паузами...

Номинальная скорость при передаче на модуль входит к 3 MBaud. На большее проверить пока не могу – на макетке с ESP-12 у меня стоит FT2232C с двумя UART.

При 3 MBaud FT2232С (USB2.0 12 Mbit/s) уже выставляет сигнал CTS, указывающий модулю ESP-12, что она не может принять. Это происходит каждый раз, когда заполняется внутренний буфер на 384 байта в FT2232С для передачи по USB:
Uart3mbps.gif
----
Тестовую прогу Tcp2ComTst.exe немного обновил (но данный тест на дуплекс не рассчитан) - всё как всегда, в новой версии 0.1.5. (счас соберу файлы и закину...)
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Переделал утилиту nodemcu-flasher под задачи TCP2UART, архив программы тут http://rghost.ru/7s5YqMtHy



В программу уже встроен свежая прошивка TCP2UART ver 0.1.5 (23.03.15) SDK 1.0.0
Качаем программу, запускаем, выбираем порт и жмем Flash. Программа позволяет прошивать несколько файлов друг за другом с указанием адресов, все это прописывается на вкладке Config.

P.S. Программа подписана моей цифровой подписью, так что за вирусню не беспокойтесь.
 
Последнее редактирование:

FGX

Member
Прочитал всю тему, а как пользоваться прошивкой так и не понял. Здесь только рассуждения, а описание где-нибудь есть? Вот прошиваем мы модуль прошивкой, дальше что делать то?) Подключаемся к появившейся точке доступа и что потом, через что и куда заходить, я так понимаю настраивать через браузер по адресу 192.168.4.1. Видео работы может кто заснимет с нуля, ну прошивку можно опустить с этим проблем быть не должно. Просто не хочется шить модуль не понимаемая как потом им пользоваться и проверять. На АТ прошивке все просто и понятно, подключился к домашней сети, дальше или создаешь сервер или подключаешься к кому-то и шлешь данные туда сюда. Я так понял, тут данные можно пересылать быстрее, но как не понял. По программе тест видно что идет подключение к TCP, т.е. модуль создает точку доступа и сервер TCP и потом принимает с него данные и пересылает на свой УАРТ, причем скорость УАРТА настраивается через веб интерфейс. Во-первых не совсем удобно, что модуль создает свою точку доступа, вернее для его настройки это удобно, но потом нам же нужно его к домашней сети подключить, а не к нему подключаться... Я извиняюсь конечно, но если кто-то подробнее пояснит или снимет видео работы буду очень благодарен.
 

Andy Korg

Moderator
Команда форума
Прочитал всю тему, а как пользоваться прошивкой так и не понял
Прошейте эту прошивку и зайдите на веб-морду, потыкайте там по менюшкам, вам сразу станет понятнее.
После того как настроите автоподключение к своей родной wifi можете выключить режим AP и заходить уже из своей родной сети.
На самом деле прошивка делает то же самое что и АТ командами только более человечное.
 

pvvx

Активный участник сообщества
Вот прошиваем мы модуль прошивкой, дальше что делать то?)
Рисовать свои Web страницы и использовать. Если требуется что-то более специфичное, то указаны исходники. Данная прошивка рассчитана для управления через UART устройства соединенного с ESP8266, путем организации прямого канала TCP сокет <-> устройство. Примерно как удлинитель COM порта через WiFi.

Для Iot, систем "умного дома", опроса и сбора данных с бытовых датчиков на рынке уже существуют готовые устройства типа Archos Smart Home и многие другие. К концу года их будет неимоверное кол-во. Зачем повторять то, что дешевле купить в комплексе...
WiFi вещь специфическая и для работы с большим кол-вом датчиков в домашнем применении не годится.
 
Последнее редактирование:

FGX

Member
Прошейте эту прошивку и зайдите на веб-морду, потыкайте там по менюшкам, вам сразу станет понятнее.
Спасибо, так и сделал. Правда без смартфона(или ноута) настроить домашнюю сеть невозможно. После перепрошивки через терминал нельзя никак задать параметры сети? А так классно что-то передает) и я так понял что главное ее отличие от стока, она выводит в СОМ сразу данные без обрамления их командами, т.е. если цеплять к МК можно сразу тупо читать и писать в СОМ порт и все, т.е. с этой точки зрения проще.Скриншот 2015-03-28 21.15.01.png
 

FGX

Member
Прошивка несомненно крутая, на телефон можно слать прямо с градусника с улицы, который шлет данные через nrf24 другому МК, который подключен просто через уарт-юсб к компу, мы берем из одного СОМ порта отправляем в другой, данные через WIFI идут в телефон, вот это круто )))2015-03-28 22.17.04.png
зачем неясно, но это просто пример, главное что работает.

А кто такой Debug UART? Еще один UART и у него только выход GPIO2 debug UART TX?
Что такое Checking pin WiFi cfg reset? это проверка при включении и сброс на заводские?
Вкладка GPIО, "GPIO2 - Disable: 'GPIO2 debug UART TX Enable'" - я отключал отладочный СОМ, все равно пишет что GPIO2 - Disable...
"VDD: 4.463V" - откуда такое значение, у меня четко 3.3В, на модуль нигде не приходит такое напряжение...
За ответы или направление в другую тему буду благодарен, особенно Вкладка GPIО интересует.
 

pvvx

Активный участник сообщества
А кто такой Debug UART? Еще один UART и у него только выход GPIO2 debug UART TX?
да.
Что такое Checking pin WiFi cfg reset? это проверка при включении и сброс на заводские?
да.
Как видим вы сами догадались и без описания.
Вкладка GPIО, "GPIO2 - Disable: 'GPIO2 debug UART TX Enable'" - я отключал отладочный СОМ, все равно пишет что GPIO2 - Disable...
Вопрос не понят.

"VDD: 4.463V" - откуда такое значение, у меня четко 3.3В, на модуль нигде не приходит такое напряжение...
За ответы или направление в другую тему буду благодарен, особенно Вкладка GPIО интересует.
Необходимо изменить делитель, который указан в всплывающей подсказке, при подносе мыши к 4.463V...
Имеющийся рассчитан на то, что у вывода входа ADC стоит резистор на 47 кОм на корпус. Точно не помню, но это безразлично - делитель то меняется и надо настраивать на каждый модуль.
У ESP-01 данная нога болтается и что там показывает, зависит от погоды вокруг чипа...
 

FGX

Member
Вопрос не понят.
.
Спасибо за пояснения. Вопрос в том, что даже если в настройках выключать debug UART, во вкладке пишется GPIO2 - Disable: 'GPIO2 debug UART TX Enable, что не логично, но может так и задумано. А вообще есть описание, что там в этой вкладке(GPIО) за значения и можно ли как-то влиять на выходы, или это просто отображается что есть по факту и изменять их нельзя? Просто модуль как раз многоногий (07) и если есть возможность задействовать его ножки(через веб интерфейс), то это пригодится.
 

pvvx

Активный участник сообщества
Спасибо за пояснения. Вопрос в том, что даже если в настройках выключать debug UART, во вкладке пишется GPIO2 - Disable: 'GPIO2 debug UART TX Enable, что не логично, но может так и задумано. А вообще есть описание, что там в этой вкладке(GPIО) за значения и можно ли как-то влиять на выходы, или это просто отображается что есть по факту и изменять их нельзя? Просто модуль как раз многоногий (07) и если есть возможность задействовать его ножки(через веб интерфейс), то это пригодится.
Всё сложное было разобрано в теме про исходники.
В столбцах Out и Dir не просто точки - это переключатели.
 

FGX

Member
В столбцах Out и Dir не просто точки - это переключатели.
Блин точно, просто мой браузер над ними мышку не рисует. Работает, правда не совпадают номера того что написано и того пина который реагирует, например управляю GPIO4, а управляется GPIO5 и наоборот. Да, перепроверил, они перепутаны, может китайцы на плате подписали неправильно. И GPIO16 на плате есть, а в списке его нет. Остальные совпадают.

Все, я понял фразы "GPIO1, GPIO3 - Close TCP-UART: 'TCP port' = 0,
GPIO2 - Disable: 'GPIO2 debug UART TX Enable'." Это значит не текущую ситуацию, что они недоступны, а руководство к действию для их освобождения)
 
Последнее редактирование:

FGX

Member
Заметил такую особенность в Sleep Mode: "лайт" не удается скачать Download flash.bin, начинает и виснет, чрез оперу и стандартный браузер. В обычном режиме скачивает без проблем.
 

pvvx

Активный участник сообщества
Заметил такую особенность в Sleep Mode: "лайт" не удается скачать Download flash.bin, начинает и виснет, чрез оперу и стандартный браузер. В обычном режиме скачивает без проблем.
C Sleep Mode: "лайт" ещё много проблем в SDK. Через некоторое время бывает, что соединение с модулем недоступно.
Совершенно четко проблема с sleep-light наблюдается при длительном выводе, к примеру в HEX Damp Flash 512k на страницах полной версии HexDamp.
Но тут поправить сложно - это беда SDK.
В прошивке есть какая-то кривизна с работой TCP2UART без flow контроля. Я этому особого внимания не уделял и что-то там слетает... Возможно скоро поправлю...
Ещё скорость передачи UART->TCP низкая и часто отрабатывает RTS. Но это алгоритмика данной реализации. Надо делать специализированный модуль TCP сервера со специальными буферами, работающего с LwIP, а используется общий программный модуль и для TCP-UART и для WEB…
 
Последнее редактирование:
Сверху Снизу