Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "SDK и создание собственных прошивок", создана пользователем pvvx, 13 мар 2015.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Вы предлагаете асинхронное вклинивание в поток 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 порта и его не выбрать....:(
     
    Последнее редактирование: 22 мар 2015
  2. THK

    THK Новичок

    Сообщения:
    4
    Симпатии:
    0
    Нет конечно. Просто в настройки добавить выбор либо TCP2UART, либо POST/GET запрос.
    Первый режим Вами уже реализован, во втором пришел запрос - выплюнули его в порт, пришел ответ от порта - переслали его в виде странички с шестнадцатеричным дампом.
    Не понял. Я чего то явно не догоняю, объясните пожалуйста подробнее.

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

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Давайте наоборот - вы объясните как передать файл по линии со скоростью 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 стек.
     
    Последнее редактирование: 22 мар 2015
  4. THK

    THK Новичок

    Сообщения:
    4
    Симпатии:
    0
    Может я не прав, но протокол TCP подразумевает подтверждение приема, это не UDP, может просто не давать его, пока буфер приема не опустеет?
    Или проблема в том, что несмотря на это терминалы все равно отсылают данные? Бред.

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

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Простейший тест 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...
     
    Последнее редактирование: 22 мар 2015
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Провел ещё пару тестов на скорости работы 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. (счас соберу файлы и закину...)
     
    Последнее редактирование: 23 мар 2015
  7. CHERTS

    CHERTS Moderator Команда форума

    Сообщения:
    483
    Симпатии:
    108
    Переделал утилиту nodemcu-flasher под задачи TCP2UART, архив программы тут http://rghost.ru/7s5YqMtHy

    [​IMG]

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

    P.S. Программа подписана моей цифровой подписью, так что за вирусню не беспокойтесь.
     
    Последнее редактирование: 25 мар 2015
    Pavel Safronov, JustACat и Victor нравится это.
  8. shaman1010

    shaman1010 Читатель

    Сообщения:
    128
    Симпатии:
    14
    Ну Вы и хостинг себе выбрали :) Все фишинговые фильтры взбодрились :)
     
  9. FGX

    FGX Читатель

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

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Прошейте эту прошивку и зайдите на веб-морду, потыкайте там по менюшкам, вам сразу станет понятнее.
    После того как настроите автоподключение к своей родной wifi можете выключить режим AP и заходить уже из своей родной сети.
    На самом деле прошивка делает то же самое что и АТ командами только более человечное.
     
    Pavel Safronov и Victor нравится это.
  11. pvvx

    pvvx Активный участник сообщества

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

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

    FGX Читатель

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

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Прошивка несомненно крутая, на телефон можно слать прямо с градусника с улицы, который шлет данные через 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О интересует.
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    да.
    да.
    Как видим вы сами догадались и без описания.
    Вопрос не понят.

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

    FGX Читатель

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

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Всё сложное было разобрано в теме про исходники.

    В столбцах Out и Dir не просто точки - это переключатели.
     
  17. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Блин точно, просто мой браузер над ними мышку не рисует. Работает, правда не совпадают номера того что написано и того пина который реагирует, например управляю GPIO4, а управляется GPIO5 и наоборот. Да, перепроверил, они перепутаны, может китайцы на плате подписали неправильно. И GPIO16 на плате есть, а в списке его нет. Остальные совпадают.

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

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Он аппаратно включен к RTC (часикам) и к RESET для deep-sleep и просто так его лучше не трогать :)
     
  19. FGX

    FGX Читатель

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

    pvvx Активный участник сообщества

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

Поделиться этой страницей