• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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…
 
Последнее редактирование:
Сверху Снизу