Добавление Wi-Fi к различным устройствам

Предисловие Один мой хороший товарищ занимается автоматизацией зданий. И вот как-то за кружкой пива пожаловался он мне на один из объектов, который находится у него в эксплуатации. «Головой» всей тамошней автоматики является ПЛК 100 известного отечественного производителя ОВЕН. Работает он автономно, без постороннего вмешательства, но раз в месяц необходимо с него снимать логи и контролировать общую исправность всей автоматики в здании. Проблема в том, что в шкафу, в котором расположен ПЛК, по каким-то причинам не провели Ethernet от местной сетки. Дотянуть провод, по неким организационным причинам не представляется возможным. И вешать GSM модем нельзя, т.к. шкаф находится в подвале, где нету сети. При этом до шкафа с ПЛК добивает местная Wi-Fi сеть, однако у ПЛК 100 нет Wi-Fi.И вот приходится каждый месяц ездить на объект с ноутбуком, включаться переходником USB-RS232 в прибор и снимать логи. В результате, я пообещал «допилить» ПЛК, добавив в него Wi-Fi.Общая идея Поглядев описание на прибор, я увидел, что на борту он имеет Ethernet, два RS-232 и RS-485. При этом Ethernet, по описанным выше причинам, для меня был бесполезен. RS-485 использовался в качестве полевой шины для управления автоматикой. А вот RS-232 использовался только для снятия логов. Его и было принято решения модифицировать в Wi-Fi.Для этого требовалось раздобыть UART-WIFI модуль, разобрать ПЛК, найти микросхему UART-RS232 и подпаяться прямо к её UART’у (иными словами, к UART’у внутреннего процессора ПЛК, на котором «сидит» RS232).Вскрыв корпус ПЛК, около разъемов RS232 были быстренько обнаружены и идентифицированы микросхемы драйверов. Интересно, что для двух разных портов RS232 используются 2 разных драйвера: MAX3232 от Maxim и ADM3251E от Analog Devices.imageНу, для нас это не столь и важно, т.к. драйвер будет удалён с платы и заменён на Wi-Fi модуль.Вторая часть — поиск Wi-Fi модуля. К нему были выставлены следующие требования:

выводной монтаж модуля (т.е. не SMD) — чтобы легко было подпаяться к выводам, а не утюжить под него плату наличие Transparent режима (мост UART-TCP) — т.е. минимальное число АТ-команд, необходимое для работы наличие антенны прямо на модуле или возможность её легкого подключения разумеется, управление по UART желательно, цена до $10 Первым делом, была идея воспользоваться модулем на базе гремящего на весь рунет чипа esp8266. Но почитав о нём в интернете, не понял есть ли в нем, Transparent режим и к тому же много-то намеков, что пока прошивка с АТ-командами работает недостаточно стабильно. В общем, решил поискать ещё.В итоге на aliexpress был обнаружен очень подходящий по описанию модуль по имени RAK425. Производитель сего чуда был легко нагуглен по названию модуля. На сайте производителя оказалась вменяемая документация и ещё какие-то файлы, которые я особо и не смотрел. Ребята произвели на меня впечатление «приличных» китайцев, так что было принято решение брать. Правда, штучную продажу найти не удалось, потому купил «упаковку» из 5-ти штучек за $50 не считая доставки — пусть лежат, найду применение и остальным со временем.Работаем паяльником Первым делом, открываем даташит на микросхему ADM3251E и ищем контакты для питания её TTL уровня — Vcc, GND (контакты 2 и 10 соответственно). Наш Wi-Fi модуль работает от напряжения 3,3В, поэтому на всякий случай нужно померить чем запитана ADM3251E у ОВЕНа. Вот тут облом — мультиметр показал 4.9В.Попытаем счастье с MAX3232. По даташиту питание идет на контакты 15 и 16. Мне повезло и питание там 3,3В, так что принимаем решение подключать модуль сюда.А что, если питание не 3.3В? Если питание больше, то можно воспользоваться недорогим и легкодоступным линейным стабилизатором напряжения а-ля кренка, в каком-нибудь выводном корпусе типа ТО-92. Типа LP2950CZ-3.3/NOPB — судя по всему должна потянуть по току.

Подготавливаем Wi-Fi модуль, напаяв на нужные контакты 4 провода (Vcc, GND, RxD и TxD в соответствии с распиновкой из документации). Сам модуль можно положить прямо внутрь корпуса ПЛК100. Для того, что бы он там ничего не коротнул заворачиваем модуль в термоусадку.imageТеперь находим в даташите на микросхему контакты, к которым нужно подпаять линии RxD и TxD. Выпаиваем драйвер и на его место сажаем наш модуль: imageТеперь засовываем модуль внутрь ПЛК и собираем. Всё очень удачно помещается, так что ПЛК выглядит снаружи девственно нетронутым.Настраиваем W-Fi модуль Чем мне понравился RAK425, так это красиво реализованным в нём transparent transmission, т.е. прозрачный мост UART-WIFI в нём организовывается вообще без поддержки АТ-команд, т.е. для программы в ПЛК100 передача процесс передачи в комп вообще не пришлось править — он по прежнему считает, что передаёт данные в RS232.Работает так: после подачи питания модуль поднимает собственную точку доступа. Подключившись ноутом к этой точке, набираем в браузере адрес модуля (по-умолчанию 192.168.7.1) и попадаем на веб-страницу его настройки. Там пишем название Wi-Fi сети к которой хотим подключиться и пароль к ней. А так же параметры TCP соединения: я открыл на модуле TCP-сервер на порту 1234. Перезагружаем ПЛК100 по питанию (а значит и наш модуль) и после рестарта модуль подключается к нашей Wi-Fi сети. Теперь все данные, которые мы отправляет в наш сервер автоматически ретранслируются в UART модуля (а значит и в UART процессора ПЛК100).Приводить скриншоты процесса настройки не вижу смысла, там всё очень просто, понятно и описано в документации.На этом в общем-то и всё. Единственное, что потребовалось далее это пробросить порт на IP нашего модуля в роутере на объекте и мониторить состояние автоматики через интернет. Вот уже второй месяц на исходе, как там всё работает и ездить ежемесячно на объект не приходится. Товарищу лафа, мне бутылка коньяка.Заключение Цель статьи не в том, что бы показать как прикрутить W-Fi к конткретному ПЛК100 (маловероятно, что аналогичная задача возникнет еще у кого-то), а в том, что бы продемонстрировать один из возможных подходов для установки удаленного доступа к какому-либо оборудованию, которое изначально для этого не предназначено.

© Habrahabr.ru