Давненько ничего не публиковал… навалилось всего и сразу, как проблем, так и работы. Ну да ладно, это у всех бывает, давайте лучше посмотрим, чего мне прислали на обзор.
Собственно, не буду скрывать и сразу говорю, что я написал в компанию Rakwireless Technology Co. и предложил небольшое сотрудничество — мне отсылают несколько различных плат, а с меня обзор на них. На удивление согласились, отправляли, правда, более двух недель, но не суть.
Начнём с простой и довольно полезной в радиолюбительском творчестве платы переходника WiFi-UART — WIS473MA-UART.
Распаковка
Присылают каждую продукцию в фирменной коробочке с лейблами компании:
Внутри же лежит плата, которая хорошо защищена от повреждения при транспортировке:
Помимо неё USB-microUSB шнур и немного джамперов:
Плата поближе:
Пайка в целом хорошая, хотя флюс местами не отмыт или видны потёки, но самое плохое место, которое глаз режет — это пайка модуля. Сама по себе пайка с ламельными контактами хороша, но вот сам модуль стоит на плате криво и довольно сильно уехал (почти половина от ширина контакта) от своего должного местоположения на плате. Ничего не замкнуто, работает, но настораживает.
На нижней стороне платы много шелкографии с подписями разъёмов и перемычек (в этом плане довольно продуманно):
На плату может быть установлен модуль как RAK473 (на основе RTL8711AM), так и более дешевый RAK476 (на основе RTL8711AF\RTL8710AF). Сама плата же может использоваться как шилд, так и как база для других шилдов (что удобно, если заливать сюда уже свою прошивку).
Схемотехника
Производитель предоставляет схему платы, пройдемся вкратце по ней. USB-интерфейс на основе дешевого китайского чипа — CH340G, подключены только RX\TX линии, и даже их можно отключить перемычками (J2) для подключения пинов модуля к ардуино-бордам:
Но следует помнить, что модуль имеет уровни 3,3В, а ардуино-борды обычно имеют 5В уровни. Модуль НЕ имеет толерантности к 5В.
Далее разъёмы ардуино и их соединение на плате:
Отдельно показаны все перемычки для поддержки разных типов модулей:
В моём случае всё установлено для RAK473.
И соединения самого модуля:
Здесь можно отметить следующие моменты:
- если R1 заменить на 0,1-0,22 Ом резистор, то посредством разъёма J1 можно контролировать потребление почти всего модуля;
- почти всего — потому что питание порта VDD_IOE подключено хоть и тоже через отключаемую перемычку R20, но в обход R1;
- на плате также установлен SWD-разъём для программирования и отладки — P2, что довольно удобно, и при необходимости, наигравшись с AT-командами, можно заливать свою прошивку;
- есть пользовательские кнопки, 2 шт (хотя у меня они что-то не заработали, может, в прошивке дело, не обновлял);
- распиновка модуля, хоть и написано RAK473, но она не совсем корректна, поэтому я ранее уже изучал распиновку модуля и нарисовал свою (правильную) с основными интерфейсами.
Собственно, обновлённая распиновка модуля ниже (кликни для увеличения):
Здесь показаны только распространённые интерфейсы, для подключения I2S, PCM и других придется обращаться к даташиту. :) Да, мог ошибиться, лучше все-таки перепроверять.
Тестовое приложение для ПК
Ну что, будем проверять модуль. Можно взять готовые программы терминалы\клиенты или опробовать самому, написав свою. Я за второй вариант.
За вечер на C# (WPF) был создан простейший, дубовый вариант программы, в которой есть и COM-Терминал, и TCP-Клиент одновременно.
Если всё исходники свернуть по блокам, то программа вообще крошечная. :) Исходники можно взять здесь — COM-TCP-Tester. Сразу предупреждаю, что это не самый лучший пример для подражания написания ПО (хоть и учтены нюансы и некоторые паттерны), т. к. не особо старался делать правильно. Сделано топорно, главное, чтобы быстро и работало. Выглядит также неказисто, но всё базовое для проверки есть:
Программа запоминает настройки при выходе и загружает при старте, подключившись, можно свернуть «Настройки» и работать полностью только с терминальными окнами. Программу удобно разворачивать для большего обзора, но есть проблемы с масштабированием кнопок и строкой отправки (не заморачивался с вёрсткой интерфейса, поправимо при необходимости).
AT-команды и WEB-сервер
Подключаем модуль к ПК, должен обнаружиться COM-порт (горит светодиод POWER и мигает LINK):
Если подключиться к COM порту платы на скорости 115200 и нажать кнопку Reset на плате, в терминал должно прийти приветствие:
Welcome to RAK473
Можно начинать! Вначале можно поиграться с web-сервером, отправляем команду (все команды должны заканчиваться символами \r\n !) :
at+start_web
Этой простой командой модуль стартует Web-сервер и открытую Wi-Fi точку RAK473_WEB_***** . Подключаемся к ней и заходим в браузере по IP: 192.168.7.1 , открывается основная страница настроек (admin\admin):
Также есть страница Advance, где можно сменить стандартные логин\пароль:
И страница FW Update для обновления прошивки:
На первой же странице Net Config можно нажать поиск WiFi сетей и выбрать необходимую, к которой нужно подключиться:
Далее требуется ввод пароля и подтверждение применения настроек:
После подтверждения модуль перезапускается:
Настройки сохраняет. Правда, после перезапуска модуль не подключается к выбранной WiFi сети, и web-управление после подключения к сети посредством AT-команд также не доступно (только если не запустить опять АТ-командой, то опять создастся открытая WiFi сеть). Тут я, признаюсь, не вникал, было просто интересно поглядеть, чего сделали в общем, возможно, что-то упустил и поэтому у меня оно так работало…
Более интересно для меня было запустить всё AT-командами (в web-интерфейсе нет настроек TCP и автозапуска, поэтому к Web управлению я отнёсся скептически, т. к. похоже больше пока на черновой вариант).
Итак, после перезапуска\старта модуля отправляем команду переключение на ANCII режим:
at+ascii=1
Далее вводим пароль и имя вашей WiFi сети:
at+psk=ПарольWiFi at+connect=ИмяWiFi
После подключения вводим:
at+ipdhcp=0
И в ответ придут текущие параметры подключения:
mac=60:C5:**:**:**:** addr=192.168.1.102 mask=255.255.255.0 gw=192.168.1.1 dns1=192.168.1.1 dns2=0.0.0.0
Отсюда нам нужен IP модуля. Теперь можно попробовать запустить TCP-сервер командой с указанием порта (25000):
at+ltcp=25000
Всё! Можно пробовать подключаться TCP-клиентом к модулю. При подключении клиента модуль выдаст в терминал следующее:
at+recv_data=128,0,55656,192.168.1.55
Если отправить с клиента строку Hello, то в терминал будет выведено:
at+recv_data=0,55656,192.168.1.55,7,Hello
Чтобы отправить клиенту что-либо, в самом простом случае надо в терминал модулю отправить:
at+send_data=0,0,0,12,HelloFromRAK
Синтаксис этой команды следующий:
at+send_data=<uuid>,<dest_port>,<dest_ip>,<data_length> ,<data_stream>
- uuid — это условный ID клиента, назначается по очереди подключения клиентов к серверу
- dest_port — порт клиента. Можно игнорировать, назначив 0
- dest_ip — IP клиента. Можно игнорировать, назначив 0
- data_length — количество символов\байт для передачи
- data_stream — строка\поток данных
Для изучения возможностей стоит прочитать Quick Start Guide на этот модуль, также кое-что есть в примерах прошивки для RAK477 (RTL8710).
Сходу не нашел, как реализовать прозрачный вариант UART-TCP (тут правда сложность, если клиентов более 1-го), со стороны UART отправка только посредством AT-Команд. Зато есть исходники для управления модулем из того же STM32 (хотя вопрос тут уже спорный, зачем оно нужно, если в самом модуле АРМ Cortex-М3…).
Габариты платы
Удивительно, что нигде нет размеров платы и отверстий для крепления, но можно найти проект для Альтиума и оттуда получить желаемое:
Исходный проект можно скачать здесь — WisNode-UART WIFI PCB File (немного поправленная версия).
Вывод
Довольно интересная плата для начинающего радиолюбителя с возможностью дальнейшего расширения, т. к. выведены все пины и без проблем можно заливать свою прошивку, используя плату уже не как шилд, а как полноценную базовую плату.
Ссылки
Полезные ссылки по теме модуля\чипа:
- RAK WIKI — общее описание, примеры и немного документации;
- Document Download — страница с прошивками, тулсами и различными сертификатами (на эту плату как-то не густо, зато на модуль отдельно можно много чего скачать);
- RAK Shop — не реферальная ссылка на магазин RAK на площадке AliExpress. Конкретно эта плата — Wisnode UART WI-FI.
- AmebaIoT — официальный сайт RTL-чипов, можно скачать SDK, ардуино, примеры и т. д. Требуется регистрация!
- Подраздел на форуме esp8266.ru — неофициальное SDK, много примеров, разборов работы модуля и т. д.