Hi-Link HLK-RM04, как следует из описания продавца — адаптер Wi-Fi/Serial/Ethernet. То есть штука, которая умеет перемещать данные между этими интерфейсами. У производителя, впрочем, более актуальный взгляд на вещи: Hi-Link именует это изделие модулем маршрутизатора. Чем оно, собственно, и является.
А что касается меня, то купил я эту штуку в первую очередь именно как конвертер 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 почему-то не спешат выполнять мой заказ.
Модуль питается от 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 потребовалось:
// 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_
// #define _DEBUG_
4) Там же — не забыть поставить свой любимый цифровой пин в #define ESCAPE_PIN
#define ESCAPE_PIN 4
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. Но это уже не ко мне :)
Доклад закончил.
Планирую купить+63Добавить в избранноеОбзор понравился+63
+121
Внизу вон еще одну штуку предложили — крошечный маршрутизатор с USB и разведенным на плате последовательным портом меньше чем за $10. На него тоже можно поставить OpenWRT и рулить Arduino в некотором смысле.
Думаю, что в теории — да. Правда, я настолько глубоко не разбирался, поэтому предполагаю, что все зависит от потребностей в управляемых выходах. Т.е. я пользовался только COM-портом, а TP-Link любят за множество именно что выходов.
Но, опять же — я в этом дилетант. Может быть, то, что у HLK-RM04 обозначено как GPIO (а этого прилично) — и есть искомое.
Этот же хорош исполнением (модуль, интерфейсы все выведены, и т. Яд), но плох объёмом памяти — 640KB 16M всё же не хватает.
Сам имею таких несколько (с «development boards»).
tp-link TL-WR703N тоже не стоит забывать. Да, $20 стоит, но зато возможности нужные имеются, а также качество, документированность и так далее на высоте. И что приятно особо — выпускается с 2011-го, и думаю не скоро его снимут с произодства.
резковато, но в целом всё правда, тот же nexx 1520 или лучше клон а15 из моего обзора точно так же могут использоваться как и устройство из обзора — сЕриал-то есть! openwrt поставить и вперед.
update, какие все молодцы, уже все камменты ссылками на клон 15 заср закидали :)
Автор не написал, но как раз эта плата — суть тоже самое, что хаме а15 (только вы где-то раскопали меньший объем рам). Процессор тоже тот же. При этом на этой плате больше gpio и выведены 2 эзернета (в отличие от последнего), если к свистку по ссылке можно подпаяться по всем этим ногам — тогда свисток победит, а для самоделок вот эта платка все же лучше.
Хватит хамить в каждом посте. Я не «раскопал», я умею читать, и верю своим глазам.
А плата эта не «лучше», а хуже, ибо у нее 16М памяти, и после загрузки свободно 4-5 максимум. А Вы можете теоретищировать и хамить и далее.
Автор, как обычно, решал свою частную задачу и особо не лез в детали — вот и не в курсе по поводу процессоров. В этом, собственно, заключается основная проблема автора.
Вот с этим у меня тоже проблемы: обычно отдаю предпочтение наиболее очевидным решениям. На момент размышлений о HLK-RM04 (несколько месяцев назад) мне казалось, что это оптимальный вариант для Arduino. Да и с Линуксом мы, как бы сказать, на двойное «вы», что ли.
Скрипт для шелл намного проще и гибче чем Wiring.
Пример который читает с ардуинки строку с состоянием датчиков и шлет на народный монитор:
ARDUINO_PORT=/dev/ttyACM0
cd /tmp
stty -F $ARDUINO_PORT raw speed 115200
if read LINE; then
wget --post-data "$LINE" narodmon.ru/post.php
rm post.php
fi < $ARDUINO_PORT
В качестве альтернативы можно порекомендовать вот такую штуку mySKU.me/blog/aliexpress/26886.html. На неё устанавливается OpenWRT, а для связи с Arduino используется либо преобразователь USB-Serial либо внутренний последовательный порт. И дешевле и антенна уже встроена.
В кратце: готовый модуль 21х13мм с 32bit RISC SoC ESP8266, который умеет многое из 802.11bgn, в режиме Ad-Hoc и soft-AP(про клиента не понял), по SPI и UART.
За 7$ на seeedstudio.com, или на али от 4,5$ у продавца с количеством продаж менее 300, зато с 3 вариантами исполнения: полосковой антенной и 8 пинами как на seeedstudio.com, с разъёмом (CRC9?) и 4 контактными отверстиями, либо с 14 smd-площадками.
Да, но это местная связь. А HLK-RM04 позволяет отправлять статистику прямо в интернет. Т.е. на нем получается полностью автономное интернет-устройство.
ESP8266 прямо в интернет ходить, к сожалению, не умеет — нет встроенного протокола DNS. Хотя если соединяться с сервером по IP, а не по имени, то запросто :)
На самом деле странный там какой-то текст. Мне, к примеру, слабо понятны ответы автора в стиле «мопед не мой».
Ну да ладно, будем считать, что он просто хотел проинформировать широкую общественность (хотя мог бы и раньше про всякие альтернативы тоже рассказывать).
Вопрос: он может мапить 485 по Ethernet или WiFi? Или из коробки только мапить СОМ по ним? И вообще им можно замапить СОМ? Заранее спасибо, и отличная штуковина)
Их стоимость зашкаливает, а по работе после каждой грозы при больших расстояниях не спасает защита и заземление — по несколько штук уходят в защиту по питанию и все.
Вы его сами то читали? Жалкие 9 страничек в основном электрических схем.
Про протокол там ничего нет, кроме упоминания поддержки каких-то расширенных AT команд
Еще посоветуйте в исходниках библиотеки покопаться ;)
Повторяю вопрос. По какому протоколу идет взаимодействие с внешним устройством по COM порту?
Какой запрограммируете. Serial.print() с ардуины, читаете строчку символов c /dev/ttyUSB0 на линуксе, дальше делаете с ней что хотите и наоборот. Это просто однокристальный компьютер с линуксом на борту, изначально домашний рутер.
Читайте внимательнее посты, прежде чем минусить
Про Ethernet/WiFi я ничего не писал.
И причем здесь Windows, когда одно устройство на LINUXе работает, а другое AVR микроконтроллер?
Про протокол там упоминается в стиле «serial», «UART». Соответственно, судя по уровням сигналов это TTL (раз оно с Arduino работает). Передача/прием, соответственно, по двум линиям: RXD/TXD, больше никаких сигналов нет.
Братцы, подскажите.
Задача подружить станок с ЧПУ с современным компом.
По умолчанию это делается через комп с LPT портом.
Можно ли это сделать через какой либо проводный (безпроводный) адаптер.,
Или в комисионку путь держать?
Большинство адаптеров не умеют bit banding.
А старые программы вообще обращались в порты напрямую.
Тем не менее, у меня был USB-LPT адаптер, умеющий «дергать пинами», и с ним через драйвер успешно работал обычный Wiggler.
В комиссионку. Ну или покупать специальную интерфейсную плату для станков, работающую через USB или Ethernet, которую поддерживает Ваш софт (что у Вас, Мач?). Этот вопрос хорошо освещен на ЧПУ-форумах.
А вообще еще продаются материнки с ЛПТ :)
Я под это дело собрал новый комп, дарить мне никто ничего не захотел :(
Возник, правда, некоторый геморр при установке XP — оказывается производители железа уже не делают дрова под эту операционку :)
Я спер из дому старый 17" монитор, который валялся на чердаке после замены его на 23" :)) Для Мача как раз то что нужно, хотя в CAD-ах часто не хватает :)
Посмотрел даташит внимательнее (помня, что девеломпент-ответная часть на эту штуку имеет только один RS-232):
На нем, действительно, только один RS-232
Пять! ног gpio есть, но не задействованы (можно сказать, что их нет)
Есть 2 выхода, на 1.8В (пока я не понял полезности) и 3.3В (вот это немного полезнее)
Так что получается, что подпайка к консольному порту на Nexx или безымянном свистке, имеет примерно тот же смысл, что и эта платка.
(ABATAPA, еще раз спасибо за объем РАМ, мне даже кажется, что весь этот длинный комментарий я написал ради последней строчки)
>Так что получается, что подпайка к консольному порту на Nexx или безымянном свистке, имеет примерно тот же смысл, что и эта платка.
Не совсем, то что не разведено на свистке придется выковыривать прямо с ног SOCа, а это не каждому Левше под силу.
Так я для этого даташит и прочитал — на свистке нет +1.8 и 3.3В источника питания, а единственный UART можно распаять. Ну и вроде тут разъем антенный. Тут удобство в маленьком размере и выведенных ногах (если нужно) и все.
Чистите все куки и нет проблем :)
Да и без этого я как-то менял… Но вообще согласен, русский Али — в топку. Хрен поймешь этот автоперевод в описании или в названии :)
Плюсанул как смог. :)
Теперь буду знать, кого пытать, если что, по поводу апгрейда моего БП с блютуз в БП с ВайФай. :)))
Соорудите QI-charger 220v ещё ))
Есть еще вайфай модуль за доллар, как раз на майску есть обзор.
Правда я ошибся, NRF24L01 не полноценный вайфай, а беспроводная связь для микроконтроллеров.
А вот что ставять в планшеты (по 4,5$):
aliexpress.com/item/FREE-SHIPPING-WIFI-module-RTL8188EUS-module-tablets-dedicated-signal-receiving-module/1856507449.html
А в унитаз можно встроить, что бы потом на компе глянуть сколько сбросил? :) Шутка. :)
Но, опять же — я в этом дилетант. Может быть, то, что у HLK-RM04 обозначено как GPIO (а этого прилично) — и есть искомое.
mySKU.me/blog/aliexpress/26886.html
Этот же хорош исполнением (модуль, интерфейсы все выведены, и т. Яд), но плох объёмом памяти —
640KB16M всё же не хватает.Сам имею таких несколько (с «development boards»).
Какие?
Что не так с качеством этой платы, или nexx 1520?
Какая документированность у тплинка на 1 rs-232 порт? Сколько тысяч страниц?
Прогресс, наконец-то, проиграл!
update, какие все молодцы, уже все камменты ссылками на клон 15
засрзакидали :)А плата эта не «лучше», а хуже, ибо у нее 16М памяти, и после загрузки свободно 4-5 максимум. А Вы можете теоретищировать и хамить и далее.
Остро воспринято, уж вам-то я точно не хамил.
Я в этом сомневаюсь в каждом посте?
Еще раз поблагодарю ранимого человека, сообщившего мне второй раз, что в плате 16 Мб. Спасибо. Но ног gpio у нее больше, что иногда тоже хорошо.
Спасибо в 3-й раз. Мне прям льстит.
Вот это похоже?
Только вот может проще c ардуиной подвязать?
Пример который читает с ардуинки строку с состоянием датчиков и шлет на народный монитор:
ARDUINO_PORT=/dev/ttyACM0
cd /tmp
stty -F $ARDUINO_PORT raw speed 115200
if read LINE; then
wget --post-data "$LINE" narodmon.ru/post.php
rm post.php
fi < $ARDUINO_PORT
В кратце: готовый модуль 21х13мм с 32bit RISC SoC ESP8266, который умеет многое из 802.11bgn, в режиме Ad-Hoc и soft-AP(про клиента не понял), по SPI и UART.
За 7$ на seeedstudio.com, или на али от 4,5$ у продавца с количеством продаж менее 300, зато с 3 вариантами исполнения: полосковой антенной и 8 пинами как на seeedstudio.com, с разъёмом (CRC9?) и 4 контактными отверстиями, либо с 14 smd-площадками.
www.seeedstudio.com/depot/WiFi-Serial-Transceiver-Module-w-ESP8266-p-1994.html
aliexpress.com/item/Free-shipping-ESP8266-serial-WIFI-wireless-module-wireless-transceiver/2031529724.html
aliexpress.com/item/ESP8266-serial-WIFI-wireless-transceiver-module/2032176105.html
aliexpress.com/item/ESP8266-serial-WIFI-wireless-module-wireless-transceiver/2032165245.html
Не пиар, не нравится продавец на али — берите у других.
aliexpress.com/item/10Pcs-x-NRF24L01-Wireless-Module-2-4G-Wireless-Communication-Module-Upgrade-Module/1289649564.html
Брать лучше с интегрированной антенной. Ну или с антенным разъемом, если планируется внешняя антенна.
Ну да ладно, будем считать, что он просто хотел проинформировать широкую общественность (хотя мог бы и раньше про всякие альтернативы тоже рассказывать).
Хотя, конечно, понимаю, что UART — это, мягко говоря, обобщение. Но ничего лучше придумать не могу.
Или просто консоль?
Про протокол там ничего нет, кроме упоминания поддержки каких-то расширенных AT команд
Еще посоветуйте в исходниках библиотеки покопаться ;)
Повторяю вопрос. По какому протоколу идет взаимодействие с внешним устройством по COM порту?
Так я Zyxel Keenetic подключал к Ардуине
А я то думал, что действительно WiFi/COM шлюз.
Отказался от этого геммора в пользу iBoard/nrf24l01
Для Windows есть драйвер.
Про Ethernet/WiFi я ничего не писал.
И причем здесь Windows, когда одно устройство на LINUXе работает, а другое AVR микроконтроллер?
«А я то думал, что действительно WiFi/COM шлюз.».
Так вот, это действительно шлюз IP <-> COM (TTL).
А вот Вы — нет.
У меня все работает.
P.S. Взвешивание котов — это пять!
Задача подружить станок с ЧПУ с современным компом.
По умолчанию это делается через комп с LPT портом.
Можно ли это сделать через какой либо проводный (безпроводный) адаптер.,
Или в комисионку путь держать?
А старые программы вообще обращались в порты напрямую.
Тем не менее, у меня был USB-LPT адаптер, умеющий «дергать пинами», и с ним через драйвер успешно работал обычный Wiggler.
А вообще еще продаются материнки с ЛПТ :)
Возник, правда, некоторый геморр при установке XP — оказывается производители железа уже не делают дрова под эту операционку :)
Я там много мониторов напер, вплоть до 20", немного неисправных
На нем, действительно, только один RS-232
Пять! ног gpio есть, но не задействованы (можно сказать, что их нет)
Есть 2 выхода, на 1.8В (пока я не понял полезности) и 3.3В (вот это немного полезнее)
Так что получается, что подпайка к консольному порту на Nexx или безымянном свистке, имеет примерно тот же смысл, что и эта платка.
(ABATAPA, еще раз спасибо за объем РАМ, мне даже кажется, что весь этот длинный комментарий я написал ради последней строчки)
Не совсем, то что не разведено на свистке придется выковыривать прямо с ног SOCа, а это не каждому Левше под силу.
Если они только между собой общаются, тогда это дорогая замена NRF24L01
Да и без этого я как-то менял… Но вообще согласен, русский Али — в топку. Хрен поймешь этот автоперевод в описании или в названии :)
После этого, конечно, «зависания» как рукой сняло.