• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ретрансляция uart сигнала в wifi и обратно

a.takhvatulin

New member
Всем привет!
Бьюсь на следующей задачей:
Есть устройство, которое по uart через ft232 передает данные в usb порт ПК. Нужно с помощью esp послать сигнал по вайфай и этот сигнал нужно отловить вайфай адаптером на ПК. Так вот как бы мне его отловить, какие библиотеки под С использовать. И какой протокол лучше выбрать TCP или UDP? Канал связи будет работать следующим образом: Устройство раз в секунду шлет данные, и иногда в редких случаях будут поступать команды от ПК.
 

a.takhvatulin

New member
Посмотрел.
Не сильно ли наворочен вебсокет для моей задачи? Может есть более простые решения? Мои знания ограничиваются знаниями языка С и С++.
 

lsm

Разработчик Smart.js
Команда форума
Посмотрел.
Не сильно ли наворочен вебсокет для моей задачи? Может есть более простые решения? Мои знания ограничиваются знаниями языка С и С++.
Можно вебсокет, можно голый TCP использовать.

Если коротко:
После того как прошивка сконфигурирована - все что отсылается на UART, идет на Internet server. Все что приходит с Internet сервера - идет в UART. Идет либо по TCP, либо по WebSocket.
 

a.takhvatulin

New member
Я щас наверно кучу глупых вопросов назадаю.. Все дело в том, что я никогда не сталкивался с интернет протоколами и не уверен, что правильно понимаю как он работает.
Допустим я прошил в есп UARTtoWebSockets. Теперь моя есп поднимает точку доступа и становится TCP-сервером?
 

a.takhvatulin

New member
И еще уточнение на всякий случай. Устройство и ПК находятся в локальной сети и выхода в интернет у них нету.
Сверхзадача такая: имеет датчик магнитного поля, который установлен в месте, где невозможно установить стационарный ПК и необходимо настроить передачу данных с помощью esp на андроид-планшет. На планшете будет программа монитор, которая отображает текущее измерение поля.
Для начала решил поработать с ПК, так как с Си я знаком, а вот с Java не очень(только начинаю изучать). Поэтому мне хочется максимально просто с программной точки зрения реализовать прием\передачу данных между датчиком и Планшетом\ПК
 

lsm

Разработчик Smart.js
Команда форума
И еще уточнение на всякий случай. Устройство и ПК находятся в локальной сети и выхода в интернет у них нету.
Сверхзадача такая: имеет датчик магнитного поля, который установлен в месте, где невозможно установить стационарный ПК и необходимо настроить передачу данных с помощью esp на андроид-планшет. На планшете будет программа монитор, которая отображает текущее измерение поля.
Для начала решил поработать с ПК, так как с Си я знаком, а вот с Java не очень(только начинаю изучать). Поэтому мне хочется максимально просто с программной точки зрения реализовать прием\передачу данных между датчиком и Планшетом\ПК
Ясно, спасибо!
Вообще, UARTtoWebSocket предполагает что используется внешний WebSocket или TCP сервер.
Но. Эта прошивка может также поднимать и свой сервер, как в режиме станции так и в режиме Access Point.

Решение вашей задачи я вижу следующее:
1. На планшете вы пишете обычную статическую HTML страничку - консоль
2. HTML страничка- консоль имеет JavaScript код который делает WebSocket соединение с ESP8266 модулем
3. Все что ESP8266 модуль получает c UART, будет приходить на страничку.

JS код на страничке примерно такой:

JavaScript:
var ws = new WebSocket('ws://192.168.4.1');

ws.onmessage = function(ev) {
  // ev.data содержит данные которые пришли от модуля
  // можно их показать на графике и тп
};
 

a.takhvatulin

New member
Хорошо. А возможно ли пойти иным путем. Например оставить прошивку с АТ командами? МК(он управляет датчиком) будет посылать в uart ат-команды для есп(с ат командами уже поработал и два есп между собой могли обмениваться данными), а есп будет пересылать это по wifi. Так вот возможно ли поймать компом или планшетом данные которые были посланы с помощью АТ команд? Можно ли обойтись без яваскрипт'а используя лишь Си(для случая реализации под ПК на винде)?
 

lsm

Разработчик Smart.js
Команда форума
Хорошо. А возможно ли пойти иным путем. Например оставить прошивку с АТ командами? МК(он управляет датчиком) будет посылать в uart ат-команды для есп(с ат командами уже поработал и два есп между собой могли обмениваться данными), а есп будет пересылать это по wifi. Так вот возможно ли поймать компом или планшетом данные которые были посланы с помощью АТ команд? Можно ли обойтись без яваскрипт'а используя лишь Си(для случая реализации под ПК на винде)?
Мне думается что можно. На С тогда нужно написать сервер для планшета/компа который будет принимать данные.
В случае с UART-to-WebSocket писать только нужно веб страничку.
 

a.takhvatulin

New member
Мне думается что можно. На С тогда нужно написать сервер для планшета/компа который будет принимать данные.
Думаю мне подойдет такой вариант.
Получается я с помощью МК и АТ команд поднимаю TCP сервер на есп, далее пишу приложение для ПК\андроид которое конектиться к есп в качестве TCP клиента. Затем с МК с помощью АТ команды посылаю байт данных и он улетает по wifi на TCP-клиент, верно? А чтобы отправить байт информации в МК мне нужно уже использовать функции той библиотеки с помощью которой создал TCP клиента на ПК и посылать данные на TCP сервер(т.е. на есп) и есп их ретранслирует в uart вместе с служебными байтам?
 

lsm

Разработчик Smart.js
Команда форума
Думаю мне подойдет такой вариант.
Получается я с помощью МК и АТ команд поднимаю TCP сервер на есп, далее пишу приложение для ПК\андроид которое конектиться к есп в качестве TCP клиента. Затем с МК с помощью АТ команды посылаю байт данных и он улетает по wifi на TCP-клиент, верно? А чтобы отправить байт информации в МК мне нужно уже использовать функции той библиотеки с помощью которой создал TCP клиента на ПК и посылать данные на TCP сервер(т.е. на есп) и есп их ретранслирует в uart вместе с служебными байтам?
Да. Вы только что описали работу UART-to-TCP.
Наша прошивка и это умеет. Но если вам интересно писать самому AT команды и все отлаживать - делайте AT командами, расскажите пожалуйста потом про результат и сколько времени все у вас заняло.
 

a.takhvatulin

New member
Наша прошивка и это умеет
Я прошел по ссылке посмотрел, но к сожалению английский плох и я так и не понял где увидеть перечень того что может прошивка и как ей управлять. Может быть где то есть документация к прошивке на русском языке?
Но если вам интересно писать самому AT команды и все отлаживать
Прошивку я придумывать не хочу, просто думал воспользоваться готовой. В программе для МК немного переписать функции приему\отправки для оптимизации работы с АТ командами
 

DeusExMachina

New member
Добрый день!
У меня похожая задача - мне нужен прозрачный мост TCP/UDP/http (что конкретно еще не решил) <-> UART. Сначала прибор будет работать как AP, но в дальнейшем возможно подключение к Wi-Fi инфраструктуре предприятия и нужно будет работать как Station.
Существует много разных прошивок, но хотелось бы попробовать с NodeMCU, посколько легче будет модифицировать в будущем (надеюсь). Есть ли примеры скажем TCP<->UART на чистом NodeMCU?
 

DeusExMachina

New member
Добрый день!
У меня похожая задача - мне нужен прозрачный мост TCP/UDP/http (что конкретно еще не решил) <-> UART. Сначала прибор будет работать как AP, но в дальнейшем возможно подключение к Wi-Fi инфраструктуре предприятия и нужно будет работать как Station.
Существует много разных прошивок, но хотелось бы попробовать с NodeMCU, посколько легче будет модифицировать в будущем (надеюсь). Есть ли примеры скажем TCP<->UART на чистом NodeMCU?
 

DeusExMachina

New member
Добрый день!
У меня похожая задача - мне нужен прозрачный мост TCP/UDP/http (что конкретно еще не решил) <-> UART. Сначала прибор будет работать как AP, но в дальнейшем возможно подключение к Wi-Fi инфраструктуре предприятия и нужно будет работать как Station.
Существует много разных прошивок, но хотелось бы попробовать с NodeMCU, посколько легче будет модифицировать в будущем (надеюсь). Есть ли примеры скажем TCP<->UART на чистом NodeMCU?
 

nikolz

Well-known member
Добрый день!
У меня похожая задача - мне нужен прозрачный мост TCP/UDP/http (что конкретно еще не решил) <-> UART. Сначала прибор будет работать как AP, но в дальнейшем возможно подключение к Wi-Fi инфраструктуре предприятия и нужно будет работать как Station.
Существует много разных прошивок, но хотелось бы попробовать с NodeMCU, посколько легче будет модифицировать в будущем (надеюсь). Есть ли примеры скажем TCP<->UART на чистом NodeMCU?
net - NodeMCU Documentation
 
Сверху Снизу