Настройка портов I/O (GPIO)

В роутерах LT70, LT71 каждая из 9 линий ввода-вывода I/O может быть запрограммирована на вход или на выход с возможностью работы в одном из следующих режимов:

  • режим измерения напряжения (АЦП, по умолчанию для всех GPIO)
  • режим определения состояния входной линии типа "сухой контакт"
  • режим управления нагрузкой (выход "открытый коллектор").

Настройка портов I/O производится как через веб-интерфейс, так и с помощью командной строки.

Настройка портов I/O через веб-интерфейс

Чтобы настроить режим работы линий ввода-вывода через веб-интерфейс:

  1. Откройте меню СлужбыI/O Lines.
  2. В колонке Режим выберите требуемый режим из выпадающего списка:
    • АЦП – режим измерения напряжения
    • Сухой контакт – режим определения состояния входной линии
    • Открытый коллектор – режим управления нагрузкой
  3. Нажмите Применить.

    lines_IO_1

ВАЖНО!

  • Чтобы измененные через веб-настройки сохранились при следующем включении роутера, активируйте чекбокс в столбце Сохранять настройки при загрузке.
  • Текущие значения считываются с роутера автоматически и отображаются в столбце Измеренное напряжение, mV после применения настроек.

Управление линиями I/O через командную строку

Линии I/O имеют для каждого направления свою символическую ссылку (Symlink) в ОС Linux (см. Карту портов).

При управлении каждой линией I/O могут быть использованы два сигнала:

  1. PULLDOWN – "нижний ключ", притягивающий линии I/O к земле. Может принимать следующие состояния:
    • 1 – PULLDOWN включен
    • 0 – PULLDOWN выключен.
  2. PULLUP # – "верхний ключ", включает источник тока в линии I/O. Обратите внимание: сигнал инвертирован, поэтому команды подаются следующим образом:
    • 1 – PULLUP # выключен
    • 0 – PULLUP # включен.

ВНИМАНИЕ!

  • Если вы работаете с PULLDOWN, PULLUP# должен быть выключен!
  • Если вы работаете с PULLUP#, PULLDOWN должен быть выключен!

Узнать состояние сигналов PULLUP и PULLDOWN на каждом входе можно с помощью команд, где N+1 – номер входа I/O (например, для входа IO1 в команде используется 0 – см. Карту портов):

  • cat /dev/puN/value – состояние сигнала PULLUP
  • cat /dev/pdN/value – состояние сигнала PULLDOWN.

Переключение линий I/O в режим "АЦП"

Чтобы переключить вход (например, вход IO1) в режим АЦП, подайте следующую команду:

echo high > /dev/pu0/direction – настройка порта на вход (отключить "верхний ключ")
echo low > /dev/pd0/direction – отключить "нижний ключ".

Переключение линий I/O в режим "Сухой контакт"

Чтобы переключить вход (например, вход IO1) в режим "Сухой контакт", подайте следующую команду:

echo low > /dev/pd0/direction – отключить "нижний ключ".

Вы можете продолжить работу с "верхним ключом":

echo low > /dev/pu0/direction – включить "верхний ключ".
echo high > /dev/pu0/direction – отключить "верхний ключ".

Переключение линий I/O в режим "Открытый коллектор"

Чтобы переключить вход (например, вход IO1) в режим "Открытый коллектор", подайте следующую команду:

echo high > /dev/pu0/direction – отключить "верхний ключ".

Вы можете продолжить работу с "нижним ключом":

echo high > /dev/pd0/direction – включить "нижний ключ".
echo low > /dev/pd0/direction – отключить "нижний ключ".

Для остальных портов настройка режима работы осуществляется аналогичным образом.

Считывание значений с линий I/O

Считать преобразованные значения с каждого входа АЦП можно с помощью команды, где N+1 – номер входа I/O (например, для входа IO1 в команде используется 0 – см. Карту портов):

getinfo adcN

Получить преобразованные значения напряжения со входа АЦП (в мВ) можно с помощью системного сервиса ubus.

  • Запрос всех значений:
    ubus call iolines voltage '{"adc": "all"}'
  • Запрос одиночного значения (на примере входа IO3):
    ubus call iolines voltage '{"adc": "adc2"}'