Serial port to wifi adapter

Подключение устройств с COM портами к Wi-Fi сети

Часто возникают ситуации, когда необходимо подключить какое-либо устройство с интерфейсом RS-232/422/485 или Ethernet к другому такому же устройству или ПК, но оно находится далеко, а прокладка кабеля до него затруднительна. В этом случае можно организовать передачу данных по беспроводной связи. Сделать это можно несколькими способами, и у каждого есть свои особенности. Давайте рассмотрим варианты.

Вариант 1: NPort c Wi-Fi

Если ваши устройства расположены в пределах прямой видимости, можно использовать Wi-Fi. Самый простой и экономически выгодный способ передать RS-232/422/485 по Wi-Fi – использовать преобразователь NPort cо встроенным Wi-Fi адаптером. В этом случае NPort может работать в двух режимах: Infrastructure или Ad-Hoc.

Режим Infrastructure

В этом режиме NPort будет в качестве Wi-Fi клиента подключаться к Wi-Fi точке доступа.

Режим Ad-Hoc

В этом режиме устройства NPort могут соединяться с друг другом напрямую, без участия точки доступа.

Как быть, если нужно одновременно подключить COM и Ethernet устройства к Wi-Fi?

NPort также имеет Ethernet порт, что позволяет одновременно подключить к беспроводной сети еще и Ethernet устройства, что избавляет от необходимости покупать дополнительную точку доступа.

Как быть, если устройство с COM-портом расположено на движущемся объекте?

NPort W2x50A поддерживают технологию беспроводного роуминга на уровне клиента (Client-based Turbo Roaming). Если NPort установлен на движущемся объекте, то при движении NPort может переключатся между точками доступа, обеспечивая непрерывную связь (время переключения менее 500 мс).

Вариант 2: AWK-1131C Wi-Fi-клиент

AWK-1131C оснащен COM-портом RS-232/422/485 для подключения последовательных устройств к Wi-Fi сети. Также, как и обычный NPort, AWK-1137C поддерживает самые востребованные режимы работы, включая виртуальный COM-порт.

Сравнительная таблица NPort W2x50A и AWK-1137C

NPort W2150A AWK-1137C
Режим работы Wi-Fi Client Client/Slave/Client-Router
Режим работы COM-порта Real COM, RCF2217, TCP Server, TCP Client, UDP, Pair Connection, Ethernet Modem Real COM, RCF2217, TCP Server, TCP Client, UDP
Буфер COM-порта 20 МБ 256 КБ
Ethernet-интерфейс 1×10/100 BaseT(X) RJ45 2×10/100 BaseT(X) RJ45
Защита от электростатических разрядов (ESD) Уровень 2 Уровень 4
Способ установки на DIN-рейку Крепление на заднюю панель Крепление на боковую панель
Время переключение роуминга 500 мс 150 мс
NAT Нет Есть
Макс. мощность передатчика 16 дБм 26 дБм
Международные радио сертификаты CE, ARIB RCR STD-33, ARIB STD-66 CE, FCC, MIC, NCC, KC, RCM, ANATEL, SRRC, WPC
Технология AeroMag Нет AeroMag Client
Управление NPort Search Utility Wireless Search Utility, MXconfig/MXview

NPort W2150A-EUNPort W2150A-EU

Ethernet сервер последовательных интерфейсов, 1xRS-232/422/485, с Wi-Fi 802.11a/b/g/n, 0. +55С, с адаптером питания

AWK-1137C-EUAWK-1137C-EU

Источник

Путешествия из COM в Wi-Fi и обратно

Hi-Link HLK-RM04, как следует из описания продавца — адаптер Wi-Fi/Serial/Ethernet. То есть штука, которая умеет перемещать данные между этими интерфейсами. У производителя, впрочем, более актуальный взгляд на вещи: Hi-Link именует это изделие модулем маршрутизатора. Чем оно, собственно, и является.

Читайте также:  Недоступен принтер через wifi

А что касается меня, то купил я эту штуку в первую очередь именно как конвертер Serial — Wi-Fi, то есть из обычного последовательного порта прямиком в интернет. Точнее, это я так думал, что — прямиком в интернет.

Но, несмотря на то, что некоторые вещи оказались довольно затейливыми (опять же, для меня), маршрутизатор должен подойти для множества применений. К примеру, в моем случае это Wi-Fi весы с передачей показаний в таблички Google и на смартфон. Или, вот, можно попробовать прицепить управление блоком питания — который, собственно и стал причиной этого текста.

Наконец, говорят, и OpenWRT на HLK-RM04 водрузить можно. Я считаю, за такие деньги — очень неплохое достижение.

Итак, изначально мне хотелось добавить каких-нибудь беспроводных возможностей своим Arduino. Помимо, разумеется, освоенных приемников и передатчиков на 433 МГц. Однако стоимость Wi-Fi-шилда как-то угнетала.

Это объясняет энтузиазм, с которым я набросился на HLK-RM04. Тем более, что перед покупкой почитал интернет и уяснил, что так или иначе, но к Arduino его подключить можно.

Изделие представляет из себя таракана о 28 ногах, причем с несовместимым с Arduino шагом 2 мм (у Arduino, напоминаю, 2.54 мм). Так что или готовьтесь паяться к ногам, или травить плату (финальную или переходник), или как я, покупайте вилку с соответствующим шагом.

Я добросовестно пропустил пост-продажную фотосессию, а сейчас таракан живет в весах. На руках только портрет перед вживлением. Здесь видна оборотная сторона модуля, вилки и кривая пайка:

Забегая вперед: вилка или подобные переходники очень удобны при макетировании. Иными словами, если нужно время от времени отключать HLK-RM04 или менять подключения, то это, по сути, единственный вариант, чтобы не портить понапрасну родные ноги и не тратить время на перепайку.

А это — картинка с сайта производителя:

Вторая очевидная проблема заключается в антенне. Говорят, существует две разновидности — со встроенной антенной и без таковой. В DX, как следует из комментариев на странице товара, продается без. Наверняка, купить антенну можно, хотя до сих пор я до этого не дошел — Dessy почему-то не спешат выполнять мой заказ.

Если кратко, то ноги трансформируются в:

2) Последовательные порты: 2

Модуль питается от 5В (минимум — 3.9В), и также способен питать периферию, причем двумя разными напряжениями: 3.3В и 1.8В до 300 мА на каждый (полагаю, при наличии достаточно мощного основного источника).

При этом максимальное потребление самого модуля (Wi-Fi плюс оба Ethernet) составляет, согласно документации, 160 мА.

Кроме ног у HLK-RM04 есть несколько индикаторов: питание, сетевая активность. Достаточно, чтобы понять, что происходит.

С точки зрения сетевого устройства видим следующее:

1) Поддержка беспроводных сетей 802.11b/g/n до 150 Мбит с защитой 64/128/152 bit WEP,
WPA-PSK/WPA2-PSK, WPA/WPA2

Читайте также:  Зачем нужен усилитель вай фай

2) Поддержка проводных сетей 10/100 Мбит

3) Режимы работы: клиент, сервер, точка доступа

В общем, обычный маленький маршрутизатор. У которого, как и у любого уважающего себя маршрутизатора, есть веб-конфигуратор. Достаточно лишь подключить питание и сходить по адресу 192.168.16.254.

Вот таким образом выглядят основные экраны конфигурации и статистики:

В целом, поскольку на Шахерезаду я мало похож, то дозволенные речи о ТТХ на этом и закончу и продолжу о том, как подружиться с Arduino.

Итак, по счастью один клевый чувак успел переписать библиотеку Wi-Fi (называется она WiFiRM04) как раз с учетом всей специфики HLK-RM04. Труд, полагаю, титанический, поскольку в железке, к примеру не реализован обмен с веб-серверами, да и сама она мало чем напоминает веб-сервер (хотя по ее адресу в некоторых браузерах можно наблюдать данные с COM-порта).

То есть, никаких GET/POST из коробки, а это для меня было жизненно важно: надо же как-то организовывать обмен с серверами для сбора статистики. Тем не менее, мне удалось взять себя в руки после осознания этого факта. Очевидно, по совместительству и причины, почему HLK-RM04 стоит таких скромных денег.

Для простоты подключений и тестирования работоспособности всего кода отлаживался я на Arduino Mega. Однако целевой платформой была все же Pro Mini, и это вселяло определенные опасения. Дело в том, что библиотека тоже собрана под Mega, у которой и два COM-порта, и памяти вообще-то выше крыши.

Чтение интернета оптимизма тоже не добавляло. В основном, чуваки, отличные от автора библиотеки, никак не могли приспособить ее к работе на Arduino Uno, у которой, напоминаю, памяти меньше в 8 раз, а последовательных портов — всего один.

Итого, с учетом по умолчанию включенного в библиотеке модуля отладки, даже крошечная программа с участием библиотеки WiFiRM04 компиллируется в чуть меньше 30КБ — это, чтобы вы понимали, почему у меня были опасения (ведь у Pro Mini памяти всего 32 КБ). Между тем, есть и хорошие новости: автор все же предусмотрел и работу с одним портом, и выключение отладочного модуля.

О первом написано на GitHub, а о втором я узнал из форума Arduino.cc.

Кстати, несмотря на то, что у Pro Mini всего один порт, есть хитрость, как понять что происходит при работе модуля. Если после загрузки программы в Pro Mini подключить и HLK-RM04, и одновременно десктоп с монитором порта, то видно, что именно контроллер отправляет преобразователю. А это позволяет понять, в каком вообще состоянии тот находится.

В сухом остатке для адаптации WiFiRM04 под Arduino Pro Mini потребовалось:

1) В at_drv.cpp сделать так:

#define DEFAULT_BAUD1 9600 #define DEFAULT_BAUD2 9600
// use Serial1 as default serial port to communicate with WiFi module #define AT_DRV_SERIAL Serial // use Serial2 to communicate the uart2 of our WiFi module #define AT_DRV_SERIAL1 Serial

3) Там же — закомментировать #define _DEBUG_

4) Там же — не забыть поставить свой любимый цифровой пин в #define ESCAPE_PIN

Читайте также:  Connect to any wifi apk

3) В wl_definitions.h изменить MAX_SOCK_NUM на 1

Собственно, в таком виде Arduino и HLK-RM04 готовы к общения с серверами в интернете. И, теоретически, могут и сами подрабатывать веб-серверами.

Примеры кода есть в самой библиотеке WiFiRM04, а особо любопытных приглашаю впечатлиться сборкой Wi-Fi-весов целиком от и до.

Или посмотреть видео, как эти самые весы работают:

Небольшой комментарий. Весы получились многовидовые (люди, коты), многопользовательские (рассчитаны на взвешивание жителей и гостей). Выбор режима и «пользователя» — коротким нажатием на стол весов.

Один длинный сигнал — взвешивание людей. Количество коротких сигналов за ним — порядковый номер взвешиваемого. Два длинных сигнала — взвешивание котов (по классической методе: сначала на весы с котом, потом — без кота), количество коротких сигналов после — номер кота 🙂 Три коротких нажатия — сброс в исходное состояние (люди, людь #1).

Результаты озвучиваются смартфоном через Newtifry, визуализируются смартфоном через Народный мониторинг и заносятся в таблицу Google.

Все вместе связывает сервис Pushing Box, который получает данные и затем рассылает их кому надо. Собственно, иначе с Google и не получится, поскольку Arduino не в состоянии осилить HTTPS, зато Pushing Box транслирует полученное в необходимый протокол без вопросов.

Теперь о впечатлениях от модуля. Для начала, он даже без антенны вполне себе пристойно работает. Ну, насколько можно верить его статистике, которая на расстоянии около 3 метров от маршрутизатора сообщает, что сигнал так себе, но линк в целом нормальный.

Это вообще-то огромный плюс.

Есть и минусы. Во-первых, по непонятным мне причинам HLK-RM04 периодически перестает откликаться, так что возникает ощущение, что он завис. Закономерности я не вижу: может «зависнуть» и через пять минут после включения, и через пять дней. Возвращение к жизни пока грубым выключением и включением питания.

Во-вторых, он как-то неадекватно реагирует на попытки изменить DNS на серверы Яндекс. Иными словами — тоже перестает откликаться. По счастью оживить его для смены серверов на Google довольно просто: тоже достаточно выключить и включить (но можно и вообще в ноль сбросить, достаточно пины замкнуть). Так что вы понимаете — только Google, только АНБ.

Возможно, что это связано со спецификой моей конструкции: нет антенны, кастомная библиотека, модуль в ограниченном пространстве где, быть может, не хватает вентиляции. Может быть, роль играет домашний маршрутизатор — не знаю.

Для чего еще можно использовать эту штуку? Hi-Link говорит об удаленном управлении, игрушках, всяческой автоматизации. Я встречался с тем, что определенная категория граждан очень довольна использованием модуля в автомобильных компьютерах — они там снимают параметры через COM и читают их на планшетах или чем придется через Wi-Fi.

В общем, любые применения, где нужно каким-то образом объединить последовательный порт с Ethernet или Wi-Fi. Вплоть до того, что можно организовать мост (беспроводной, так сказать, провод) из двух HLK-RM04. Но это уже не ко мне 🙂

Источник

Оцените статью
Adblock
detector