Как управлять силовой нагрузкой через GPIO порты роутеров серии R4
Наши роутеры позиционируются как промышленное решение, поэтому мы предусмотрели наличие программно управляемых портов GPIO для коммутации различной нагрузки.
GPIO (англ. general-purpose input/output, источник Википедия) расшифровывается как интерфейс ввода/вывода общего назначения — интерфейс для связи между компонентами компьютерной системы, к примеру микропроцессором и различными периферийными устройствами. Контакты GPIO могут выступать как в роли входа, так и в роли выхода — это, как правило, конфигурируется программно. Значения, принимаемые данными портами, могут быть либо 0, либо 1. Программное значение 0 означает низкий уровень напряжения на порту (как правило это 1 В и ниже), а программное значение 1 - высокий уровень напряжения на порту (5 В).
В роутерах серии R4 (например, RL41w, RL41L и другие) предусмотрено три порта GPIO. В указанной серии роутеров эти порты обладают стандартными для своего типа физическими характеристиками : напряжение высокого уровня не превышает 5 вольт, а ток - 25 мА.
Часто у наших клиентов возникает вопрос: как задействовать данные порты для управления серьёзной нагрузкой? Возникает этот вопрос неспроста, так как стандартных токовых характеристик не хватает для управления нагрузкой через обычные реле. Для решения этого вопроса мы провели исследование, нашли подходящие реле и собрали на их основе схему подключения для управления нагрузкой 220v. Для этого пришлось последовательно использовать два реле - одно твердотельное, второе электромагнитное.
Для данной задачи подошли вот такие позиции:
- Finder 34.81.7.005.9024 - твердотельное реле.
- Finder 34.51.7.005.0010 - механическое реле.
Для удобства использования у производителя есть сокет для монтирования реле на DIN рейку:
- Finder socket type 93.01.7.024.
Ниже приводим электрическую схему подключения к роутеру:
В данной схеме подписаны разъёмы реле и роутера. 12v напряжение следует брать с разъёма блока питания роутера. Как видно из схемы, электромагнитное реле можно подключить в двух режимах: нормально разомкнутое (контакты 14 и 11) и нормальное замкнутое (контакты 11 и 12). Управляя напряжением на GPIO порту роутера цепь будет замыкаться или размыкаться.
Для переключения данных портов из 0 значения в значение 1 и наоброт есть несколько способов. Первый способ - WEB интерфейс роутера, раздел Tools ⇒ GPIO. Для этого способа необходимо выбранный GPIO порт переключить в режим на выход (поле Direction в значение OUT), а для переключения высокого или низкого уровня напряжения на выходе с данного порта служит поле Value: его значение LOW означает низкий уровень, логический 0, а значение HIGH - высокий уровень, логическая 1. Соответственно, подавая на порт значение 1, вы заставляете срабатывать первое реле и замыкаться, что приводит в свою очередь к срабатыванию второго реле, которое в свою очередь одни свои контакты замыкает, а другие - размыкает.
Примером второго способа можно привести возможность управления через SMS. Для этого необходимо использовать консольную команду, описанную в нашей статье - Command over SMS, с правильными опциями.
Пример
Приведу пример управления через SMS: есть прибор, который периодически необходимо перезагружать по питанию в силу каких-либо обстоятельств. Для этого организовываем питание данного прибора через электромагнитное реле из нашей схемы выше, подключив прибор к клеммам нормально замкнутым. Переведя порт на роутере из положения 0 в положение 1 и вернув обратно, мы вызовем кратковременный разрыв цепи и, как следствие, перезагрузку по питанию прибора.
Для данного примера будем использовать первый GPIO порт. Его необходимо настроить в интерфейсе роутера в режим Direction ⇒ OUT, Value ⇒ LOW как на скриншоте ниже:
Далее в разделе настроек Services ⇒ Command over SMS добавляем правило, активируем его (Enable поле), указываем ключевое слово, а в поле Command вписываем команду:
gpio write 1 1 && sleep 1 && gpio write 1 0
На самом деле тут три команды, разделённые знаками &&, которые заставляют операционную систему роутера выполнять эти команды последовательно и только если предыдущая команда была выполнена успешно. Первая команда "gpio write 1 1" переводит порт 1 в значение 1, то есть высокий потенциал. Вторая команда "sleep 1" заставляет роутер ждать одну секунду и только после этого выполнить третью команду "gpio write 1 0" - переводит первый порт назад в значение 0, то есть низкий потенциал.
Описание команд утилиты "gpio" есть в нашей базе знаний - Настройка GPIO в роутерах R-серии из консоли. А команда "sleep" является стандартной командой интерпретатора операционной системы роутера.
Сервис поддержки клиентов работает на платформе UserEcho