Serial to Ethernet адаптер на Arduino

В продолжение темы управления ИБП через COM порт. Решил все это дело завести в Home Assistant, чтобы иметь возможность удаленного включения/отключения нагрузки. Хотя в природе уже и существуют готовые устройства (раз, два), выполняющие необходимую работу, было принято решение сделать свой костыль. К тому же, это выходит намного дешевле.

Для построения адаптера требуется самый минимальный набор компонентов:

Так же, возможно, для подключения к оконечному устройству понадобится Null-modem переходник или соответствующий кабель (в случае с ИБП я воспользовался первым вариантом). Более подробно можно почитать в wiki. В дополнение ко всему прочему, при необходимости, можно использовать обычные переходники, но они не заменят null-модем, это для другого - например, мне это позволило сэкономить на покупке кабеля (был в наличии male-female, а для подключения мне нужен был male-male).

Прошиваем Arduino специальным скетчем, собираем все вместе (модуль RS-232 подключаем к контактам TX и RX соответственно) и...все готово!

Для защиты от случайного короткого замыкания я поместил все в термоусадку диаметром 35мм. Так же рекомендую дополнительно зафиксировать RS-232 модуль с помощью герметика для электроники.

В прошивке сделано подключение к сети с получением IP адреса по DHCP. Для отправки данных можно использовать стандартный Telnet клиент, либо бесплатный PuTTY. Некоторые параметры задаются в скетче в виде констант:

  • MACADDRESS - MAC адрес Ethernet шилда. Иногда присутствует в виде наклейки, в остальных же случаях можно воспользоваться специальным сервисом для его генерации, используя следующие параметры:
    • MAC Start Range - A8:61:0A:00:00:00
    • MAC End Range - A8:61:0A:FF:FF:FF
  • TCPPORT - номер порта, данные с которого будут транслироваться в RS-232 (по-умолчанию задан стандартный telnet порт 23);
  • MAXCLIENTS - максимальное количество одновременных сетевых подключений (по-умолчанию стоит 3, больше не рекомендую - возможны проблемы из за нехватки оперативной памяти);
  • BAUDRATE - скорость соединения с COM портом (по-умолчанию 2400 бит/с, требовалось согласно даташиту протокола управления моим ИБП). Задаете значение, которое необходимо для подключаемого устройства.

P.S. Для корректной прошивки Arduino Nano она должна быть снята с Ethernet-шилда!

Проект на GitHub: https://github.com/avdeevsv91/arduino-serial2ethernet

Обсуждение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *