Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Засунуть TCP в UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
evgen2
Есть конвертор TCP/IP->uart (дивайс ECP8266), который позволяет устанавливать TCP-IP соединение на заданном (TCP-IP) порту, после чего может посылать и принимать данные, почти аналогично функциям sendto() и recv().

И есть библиотека RL-ARM - TCPnet, в которой много чего приятного, в том числе есть возможность делать веб-сервер.
Но как одно с другим скрестить - неясно. В библиотеке есть PPP и SLIP для уартов, но это несколько не то, т.к. (1)такой протокол нужно поднимать с двух концов (2)ЕСР8266 нужно давать специфические для него команды на прием-передачу.

Но если бы получилось скрестить, было бы весьма симпатично...
bugdesigner
Цитата(evgen2 @ Feb 15 2016, 12:28) *
Но если бы получилось скрестить, было бы весьма симпатично...

Речь ведь идет о ESP8266? Статей с примерами и готовыми проектами достаточно. Из Вашего поста так и не понял что именно нужно получить.
Подробно и внятно описанная задача - это уже половина решения.
uriy
Похоже надо сделать веб сервер на хост микроконтроллере, который соединяется с ESP8266 через uart.
Что-то попадалось такое для ардины, попробуйте загуглить.
Также есть проекты вебсервера прямо внутри ESP8266.
evgen2
Цитата(bugdesigner @ Feb 16 2016, 10:34) *
Речь ведь идет о ESP8266? Статей с примерами и готовыми проектами достаточно. Из Вашего поста так и не понял что именно нужно получить.
Подробно и внятно описанная задача - это уже половина решения.


во-первых, стандартная прошивка ESP8266 не позволяет сделать вебсервер, во-вторых, имеющиеся примеры и готовые проекты связаны исключительно с ESP8266, тут же речь о внешнем по отношению к ESP8266 контроллеру, у которого уже есть вебсервер, который работает через Эзернет и библиотеку RL-ARM - TCPnet.

В стандартной прошивке ESP8266 есть команды: "создать сервер на порту X", "получить N байт от клиента Y" (на этом порту), "Передать N байт клиенту Y".

Можно было бы взять полностью готовый какой-нибудь easyweb, но зачем умножать сущности? В библиотеке RL-ARM - TCPnet сервер уже есть, надо только найти где вход и где выход :-(

Цитата(uriy @ Feb 16 2016, 13:25) *
Похоже надо сделать веб сервер на хост микроконтроллере, который соединяется с ESP8266 через uart.
Что-то попадалось такое для ардины, попробуйте загуглить.
Также есть проекты вебсервера прямо внутри ESP8266.


Как просто сделать веб сервер на хост микроконтроллере, который соединяется с ESP8266 через uart. - понятно.
Непонятно как использовать для этой цели уже готовый вебсервер, который уже есть и соединяется с внешним миром через эзернет и RL-библиотеку
AlexandrY
Цитата(evgen2 @ Feb 16 2016, 21:41) *
Как просто сделать веб сервер на хост микроконтроллере, который соединяется с ESP8266 через uart. - понятно.
Непонятно как использовать для этой цели уже готовый вебсервер, который уже есть и соединяется с внешним миром через эзернет и RL-библиотеку


По моему очевидно, что это сделать невозможно.
У ESP8266 примитивный набор AT команд не поддерживающий PPP, а RL-библиотека идет с закрытым TCP стеком и к модемам подключающаяся через PPP.

Для вашего случая придуман чип СС3100 и библиотеки к нему для хост контроллеров.
Forger
Цитата(AlexandrY @ Feb 17 2016, 00:37) *
По моему очевидно, что это сделать невозможно.
У ESP8266 примитивный набор AT команд не поддерживающий PPP
В штатной прошивке действительно все работает тока через АТ команды,
но ведь можно создать свою прошивку для ESP, которая будет работать с внешним МК так, как нужно.
Есть даже готовая прошивка, чтобы писать софт на ESP8266 в среде Arduino sm.gif

Другое дело - если в самой ESP есть TCP стек, то зачем сверху городить во внешмем МК другой?

Если очень хочеться, то можно в ESP использовать, например, тока UDP, т.е. разбирать TCP/IP пакеты от внешнего контроллера с его стеком и отправлять их под UDP,
используя ESP просто как UDP-мост.
Для конфигурации ESP можно запустить отдельный UDP порт и его юзать во внешнем МК (ну, логины, пароли или даже АТ команды туда упаковать).
Т.е. в принципе ничто не мешает юзать оба стека, тока нужно удобно выбрать тот "разрез", который устроит работу обоих стеков друг с другом.

CosworthRS
Пробовал поднимать веб-сервер через АТ-команды. Если интересно могу откопать исходники. Бросил это дело, так как работает такое ровно до тех пор, пока на странице не появляется больше 3х картинок/скриптов/css стилей. Браузер шлет запросы почти одновременно, и часть запросов пропускается самой ESPшкой. Вроде есть альтернативные прошивки, но мне было лень разбираться, поэтому задачу решил без веб-сервера.
jcxz
Цитата(Forger @ Feb 17 2016, 16:45) *
Если очень хочеться, то можно в ESP использовать, например, тока UDP, т.е. разбирать TCP/IP пакеты от внешнего контроллера с его стеком и отправлять их под UDP,
используя ESP просто как UDP-мост.

Если будете использовать UDP, то только UDP и получите. Веб-сервер при этом никакой не поднимете. Если конечно исключить вариант запуска спец.приложения на каком-то хосте, с кем будет коннектится изделие на ESP8266 (хоть по UDP хоть по TCP-сокету), серверный порт будет открыт на том хосте, а все данные и служебные события будут пробрасываться через туннель хост<->ESP.
Вообще, имхо, судя по командам ESP8266, ничто не мешает поднять на нём веб-сервер (AT-командами). Хотя я не работал на нём в режиме сервера, а создавал только клиентские сокеты с него. Но работало стабильно, часами и потоки неплохие передавались.

Цитата(Forger @ Feb 17 2016, 16:45) *
Т.е. в принципе ничто не мешает юзать оба стека, тока нужно удобно выбрать тот "разрез", который устроит работу обоих стеков друг с другом.

Бред какой-то. Стек стеком погоняет.....
gazpar
В базовой версии прошивки, АТ командами можно настроить http сервер. Сервер может работать в режиме максимум 3 подключений. Т.е. одновременно, насколько я понял, может обратиться к нему три клиента.
Но есть ограничение на размер пакета: 2048 байт. Т.е. на один запрос клиента можно выдать максимум 2048 байт. Поэтому передачу большого объёма данных, в данном случае, нужно организовывать пакетно.

Работает стабильно. Сбои в работе, покамест, не наблюдал.
Forger
Цитата(jcxz @ Feb 17 2016, 18:52) *
Если будете использовать UDP, то только UDP и получите. Веб-сервер при этом никакой не поднимете.

Имеется ввиду самые сырые пакеты, каторые сыпятся в обычных eth девайсах в ETHERNET дравер трансивера.
UDP - для примера работа. Где именно "разрезать" - надо самому решать.
Фактически нужно разгрузить ESP, заставив его тока гонять голые пакеты, а все остальное пусть разруливает стек на внешем МК.

Цитата
Если конечно исключить вариант запуска спец.приложения на каком-то хосте, с кем будет коннектится изделие на ESP8266 (хоть по UDP хоть по TCP-сокету), серверный порт будет открыт на том хосте, а все данные и служебные события будут пробрасываться через туннель хост<->ESP.

Тоже вариант )))

Цитата
Бред какой-то. Стек стеком погоняет.....
И что с того?
© Вам шашечки или ехать?
Ведь нужен результат, рабочий стабильный результат, я считаю, что тут это решаемо вполне ))
mantech
Цитата(AlexandrY @ Feb 17 2016, 00:37) *
Для вашего случая придуман чип СС3100 и библиотеки к нему для хост контроллеров.


Интересные эти буржуи, аж до слез! biggrin.gif

"Wi-Fi Driver and Multiple Internet Protocols in ROM"... ROM!! Понимаете!, т.е. если там глюки в протоколах или придумали какой-нить новый SSL и т.п. ВСЕ!! Готовьте паяльник и меняйте чип crying.gif

А это совсем добило - "The CC3100 device maintains a proprietary file system on the SFLASH." Ну вот здесь-то зачем "шифруетесь" ? Сделали б какую-нить стандартную ФС или совместимость с СД картами, и простота и удобство...

ЗЫ. Нее, уж лучше родной LWIP на своем МК, как-то приятнее и удобнее wink.gif А этими подельями пусть лучше игрушечники в интернете(ИОТ) развлекаются...
jcxz
Цитата(Forger @ Feb 17 2016, 23:31) *
Имеется ввиду самые сырые пакеты, каторые сыпятся в обычных eth девайсах в ETHERNET дравер трансивера.

Нет в ESP8266 никаких сырых пакетов и тем более Ethernet. По-крайней мере в стандартных прошивках и альтернативных которые я видел.
Есть только TCP-сокеты и UDP.
Хотя возможно можно написать свою прошивку для него

Цитата(Forger @ Feb 17 2016, 23:31) *
Ведь нужен результат, рабочий стабильный результат, я считаю, что тут это решаемо вполне ))

Если перепишете прошивку ESP8266 - будет решаемо.
evgen2
Цитата(Forger @ Feb 17 2016, 13:45) *
В штатной прошивке действительно все работает тока через АТ команды,
но ведь можно создать свою прошивку для ESP, которая будет работать с внешним МК так, как нужно.
Есть даже готовая прошивка, чтобы писать софт на ESP8266 в среде Arduino sm.gif

Другое дело - если в самой ESP есть TCP стек, то зачем сверху городить во внешмем МК другой?


Хочется не к ESP прикрутить внешний МК, а ровно наоборот - к МК прикрутить внешний ESP и использовать ESP для транспорта TCP пакетов к уже готовому веб-серверу и не заниматься изобретением велосипеда


Цитата(jcxz @ Feb 18 2016, 12:01) *
Есть только TCP-сокеты и UDP.


ну так TCP сокеты на 80-ом порту - это и есть веб-сервер.
Надо только решить задачу по имитации оргазма получения-передачи данных с уарта в эзернет


Цитата(Forger @ Feb 17 2016, 13:45) *
Если очень хочеться, то можно в ESP использовать, например, тока UDP, т.е. разбирать TCP/IP пакеты от внешнего контроллера с его стеком и отправлять их под UDP,
используя ESP просто как UDP-мост.

с этим проблем нет - просто скармливаем данные с уарта в колл-бек от UDP.. а вот от HTTP коллбеков библиотеке несколько и непонятно, что, где и куда нужно кормить...
jcxz
Цитата(evgen2 @ Feb 18 2016, 15:34) *
ну так TCP сокеты на 80-ом порту - это и есть веб-сервер.

Веб-сервер это HTTP-протокол, реализуемый поверх TCP. Сервер открывает TCP-порт в пассивном режиме. И не обязательно 80-й. Любой.

Цитата(evgen2 @ Feb 18 2016, 15:34) *
с этим проблем нет - просто скармливаем данные с уарта в колл-бек от UDP.. а вот от HTTP коллбеков библиотеке несколько и непонятно, что, где и куда нужно кормить...

Ещё раз: UDP не имеет никакого отношения к HTTP-протоколу, как и к TCP-протоколу. RTFM наконец-то!
evgen2
Цитата(jcxz @ Feb 18 2016, 14:04) *
Веб-сервер это HTTP-протокол, реализуемый поверх TCP. Сервер открывает TCP-порт в пассивном режиме. И не обязательно 80-й. Любой.


Ещё раз: UDP не имеет никакого отношения к HTTP-протоколу, как и к TCP-протоколу. RTFM наконец-то!

Уважаемый, мы тут не азы http/tcp/udp обсуждаем, а конкретную реализацию, которая привязана к конкретной библиотеке. Можете что-нибудь сказать по заявленной в топике теме?.

ЗЫ:
Вообще ожидалось, что ответы могут быть
* я так делал.....
* в рамках библиотеки RL-ARM - TCPnet - никак, не парься и переходи на....
* изобретай велосипед в виде двух отдельных вебсерверов
* делай вебсервер на ecp8266, а с контроллером обменивайся сообщениями
hd44780
Знатоки ESP8266 пишут, что его встроенный TCP ни в дугу не годится, почитайте специализированный форум - http://esp8266.ru/forum/
При каких-то "неправильных" обрывах связи он некорректно закрывает свои сетевые сокеты - сокет не закрывается и не подлежит повторному использованию. А т.к. сокетов у него всего 4 шт, то довольно быстро модуль может впасть в ступор и потребуется его полный перезапуск путём обесточивания.
Ноги сброса у модуля нет (если я правильно помню).
Про UDP я не помню sad.gif

Имейте в виду это обстоятельство.

На том форуме даже написали свою библиотеку с исправлением этих багов и выложили исходники. Правда, на мой взгляд, та библиотека напоминает некий конструктор "Сделай сам", в котором куча всякой всячины и который надо подчищать и допиливать под свои цели.
Forger
Цитата(evgen2 @ Feb 18 2016, 19:27) *

https://geektimes.ru/post/241842/
AlexandrY
Цитата(evgen2 @ Feb 18 2016, 18:27) *
Уважаемый, мы тут не азы http/tcp/udp обсуждаем, а конкретную реализацию, которая привязана к конкретной библиотеке. Можете что-нибудь сказать по заявленной в топике теме?.

ЗЫ:
Вообще ожидалось, что ответы могут быть
* я так делал.....
* в рамках библиотеки RL-ARM - TCPnet - никак, не парься и переходи на....
* изобретай велосипед в виде двух отдельных вебсерверов
* делай вебсервер на ecp8266, а с контроллером обменивайся сообщениями


Рекомендую перейти на MQX. Открытый TCP стек, прозрачный драйвер MAC уровня.
Есть примеры реализации ходовых протоколов MQTT, XMPP .
А это доступ к Facebook, Google Hangouts и другим месенджерам, к облакам Bluemix, Azure и т.д.
Ну кому сейчас интересен Web сервер?
mantech
Цитата(AlexandrY @ Feb 18 2016, 23:22) *
Есть примеры реализации ходовых протоколов MQTT, XMPP .
А это доступ к Facebook, Google Hangouts и другим месенджерам, к облакам Bluemix, Azure и т.д.
Ну кому сейчас интересен Web сервер?


Ох, облака, облака... Железом-то как управлять из них будете? В виде молнии biggrin.gif
k000858
Цитата(AlexandrY @ Feb 18 2016, 23:22) *
Рекомендую перейти на MQX. Открытый TCP стек, прозрачный драйвер MAC уровня.
Есть примеры реализации ходовых протоколов MQTT, XMPP .
А это доступ к Facebook, Google Hangouts и другим месенджерам, к облакам Bluemix, Azure и т.д.
Ну кому сейчас интересен Web сервер?

А есть порт этой ОС под STM32 контроллеры?
Как у нее обстоят дела с лицензией?
evgen2
Цитата(AlexandrY @ Feb 18 2016, 23:22) *
Рекомендую перейти на MQX. Открытый TCP стек, прозрачный драйвер MAC уровня.
Есть примеры реализации ходовых протоколов MQTT, XMPP .
А это доступ к Facebook, Google Hangouts и другим месенджерам, к облакам Bluemix, Azure и т.д.
Ну кому сейчас интересен Web сервер?


Ага. Так прямо и представляю доступ к Facebook, Google Hangouts и другим месенджерам из 64к RAM, из которых 30к нужно будет отдать MQX

Цитата(k000858 @ Feb 19 2016, 07:03) *
А есть порт этой ОС под STM32 контроллеры?
Как у нее обстоят дела с лицензией?

http://www.nxp.com/products/software-and-t...-tcp-ip:MQXRTCS

Цитата(hd44780 @ Feb 18 2016, 21:22) *
Знатоки ESP8266 пишут, что его встроенный TCP ни в дугу не годится, почитайте специализированный форум - http://esp8266.ru/forum/


там знатоки какие-то не такие, я там умудрился сам себе же ответить на первый же вопрос ;-)

http://esp8266.ru/forum/threads/kak-polzov...958/#post-14374

На самом деле, как я понимаю, со стандартной прошивкой всё сильно зависит от версии, а проблемы начинаются с документации и пониманием что они имеют ввиду под версией (прошивки и документации).
  1. "4A-ESP8266__AT_Instruction_Set__EN_v0.30".pdf, от 3 июля 2015
  2. "4A-AT-ESP8266 AT Instruction Set_v0.23".pdf, внутри написано v 0.23 от апреля 2015г.
  3. "4B-AT-Espressif AT Command Examples_v0.4" от 14 марта 2015
  4. "ESP8266_Specifications_v4" от 8 сентября 2014
  5. "ESP8266_Beginners_Guide_V0.4.1" от 17 сентября 2014


я пользуюсь первым из списка. Со стабильностью связи пока не разобрался - иногда целые сутки работает нормально, иногда какая-то ерунда получается.
AlexandrY
Цитата(evgen2 @ Feb 19 2016, 16:15) *
Ага. Так прямо и представляю доступ к Facebook, Google Hangouts и другим месенджерам из 64к RAM, из которых 30к нужно будет отдать MQX


К Google Hangouts подключал используя СС3100 и MQX.
Протокол используется XMPP совместно с SSL v3.
Самое сложное понять как аккаунт получить для дивайса.

А MQX я портировал даже на вот такой дивайс - https://geektimes.ru/post/268918/
Будет время как нибудь опубликую.
kolobok0
Цитата(evgen2 @ Feb 15 2016, 13:28) *
...Но если бы получилось скрестить, было бы весьма симпатично...


сам начал копать ESP8266 - по цене самое гуманное выходит WiFi канал.
Пока осадок такой...
Это в первую очередь(внешне) переходник WiFi<->UART
Протоколы команд AT даны. Суть - открыли сокет, послали пачку на него с указанием протокола - если передача, пытаемся вычитывать из порта
некоторое время - если приём, закрываем сокет. Есть режимы точки доступа, есть клиента, а есть проброса последовательного порта(причём он
может быть совместим с другими режимом).
Во вторую очередь(внутренне) - это мк внутрь которого можно загрузить некий скрипт на си подобном языке. И использовать модуль за 2,5 бакса
с минимальной обвязкой периферией. программа открыта. предназначено это всё в основном для мелких бытовых девайсов. судя по годам -
сравнительно недавно всё вышло на рынок и набирает обороты.
на российском форуме даже есть градация = старт, юарт, луа sm.gif

значит вязать его можно по последовательному порту.
команды есть, настройки есть, далее копай не хачу.

По потреблению не плохо, по мощности-чувствительности есть получше модели типа USR-WIFI232(на втором месте по цене и функциональности
я бы сказал).

да, ещё..
встречаются косяки в производстве модулей(перевёрнутые компоненты, разводка, кривость пайки, битые модули) - китай одним словом. Но я так понимаешь,
что это больше исключения - т.е. единичные случаи.

где то так.
(круглый)
bugdesigner
Как я понял, есть задача прикрутить wifi к уже существующему проекту на МК. Мне кажется для этого лучше подойдёт какой нибудь wifi адаптер с SDIO или SPI. ESP8266 больше подходит для IOT как самостоятельный модуль. Для вашего проекта ESP со стандартной прошивкой - костыли, имхо.
kolobok0
Цитата(bugdesigner @ Feb 21 2016, 10:22) *
...для этого лучше подойдёт какой нибудь wifi адаптер с SDIO или SPI...


если разработка единичная или требует скорострельности - то да, Вы правы.
Но если сравните цены(а для серии устройств это критично), то Вы поменяете своё утверждение(если Вы конечно-же не производитель таких модулей sm.gif )

в добавок esp привлекателен тем, что время потраченное в его погружение - дополнительные ходы в решении мелких, оконечных устройств в
дешёвом сегменте. чиссо из опыта юзанья подобных модулей.

(круглый)
bugdesigner
Цитата(kolobok0 @ Feb 21 2016, 15:19) *
Но если сравните цены(а для серии устройств это критично), то Вы поменяете своё утверждение

Модули CP812 на rtl8189 стоят около $3 в розницу, а если брать 1К штук, то и меньше $2 можно найти. Как-то мнение не меняется, особенно для серии устройств. Я не против ESP8266 - её можно применить для небольших проектов, но как "вещь в себе". Это ведь SOC, а топикстартеру нужен адаптер.
kolobok0
Цитата(bugdesigner @ Feb 23 2016, 15:35) *
Модули CP812 на rtl8189 стоят около $3..


что то не смог найти позиции на продажу и описалово (наверное сбой гугла) sm.gif .
если Вас не затруднит - скиньте ссылочку о чём речь.

(круглый)
ЗЫ
Вот то, о чём говорил я выше
ебэй
evgen2
Цитата(kolobok0 @ Feb 23 2016, 16:24) *
что то не смог найти позиции на продажу и описалово (наверное сбой гугла) sm.gif .
если Вас не затруднит - скиньте ссылочку о чём речь.


Вот тут кетайцы хотят за 5 штук десять тыр
http://ru.aliexpress.com/item/5pcs-lot-SDI...2050830250.html

Оооо...
Потребляемая мощность в режиме ожидания: 190 МВт; наивысшего состояния: 650 МВт

Цитата(bugdesigner @ Feb 23 2016, 15:35) *
Модули CP812 на rtl8189 стоят около $3 в розницу, а если брать 1К штук, то и меньше $2 можно найти. Как-то мнение не меняется, особенно для серии устройств. Я не против ESP8266 - её можно применить для небольших проектов, но как "вещь в себе". Это ведь SOC, а топикстартеру нужен адаптер.


у топикстартера вот это
http://www.ebay.com/itm/ESP8266-WIFI-Remot...M4AAOSwQYZWyr40

правда, от ЧиД, по 450 руб, но точно не палево и точно новые
Forger
Я бы купил вот такую штуку или вот такую.
Под ардуино доступны некоторые низкоуровневые функции, поэтому можно соорудить практически что-угодно, было бы желание wink.gif
bugdesigner
CP812 я год назад брал на алиэкспрессе 5 штук за 16 долларов + доставка. Сейчас смотрю - цены подросли, но за 4.2 купить можно. Прошу прощения, если ввёл в заблуждение. Оптовые цены можно получить у китайцев при переписке, и они могут быть и в 2 раза меньше.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.