• Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу