В роутере LT5x предусмотрены 3 универсальных порта ввода-вывода GPIO (маркировка I1, I2, I3).

Выводы являются независимыми, могут быть сконфигурированы в Операционной системе и предполагают три режима использования:
- Подключение резистивных датчиков

- Управление нагрузкой. В данном режиме выводы I1 - I3 можно объединять для увеличения нагрузочной способности выхода. Питание можно использовать как внешне

- Измерение напряжения (режим работы по умолчанию

PULLUP - "Подтягивающий" резистор к питанию.
PULLDOWN - "Подтягивающий" резистор к заземлению.
ADC - АЦП.
1. Конфигурирование GPIO через WEB
Необходимо перейти во вкладку Сервисы -> Линии I/O

Описание:
- АЦП - Режим "Измерение напряжения"
- Сухой контакт - Режим "Подключение резистивных датчиков"
- Открытый коллектор - Режим "Управление нагрузкой"
Выбирая нужные пункты, включаются необходимые режимы.
Чтобы измененные через WEB-интерфейс настройки сохранились при следующем включении роутера, поставьте флажок в столбце "Сохранять настройки при загрузке". Чтобы прочитать текущие значения с роутера, нажмите кнопку "Обновить" в колонке "Обновить замеры".
2. Конфигурирование GPIO через Консоль
Каждый GPIO имеет определенный индекс и направление по умолчанию, в операционной системе, приведем таблицу соответствий:
| Порт | Назначение | Индекс в ОС | Направление по умолчанию |
|---|---|---|---|
| IO1 | IO1PULLUP# | /dev/pu1 | OUT |
| IO1PULLDOWN | /dev/pd1 | OUT | |
| IO2 | IO2PULLUP# | /dev/pu2 | OUT |
| IO2PULLDOWN | /dev/pd2 | OUT | |
| IO3 | IO3PULLUP# | /dev/pu3 | OUT |
| IO3PULLDOWN | /dev/pd3 | OUT |
- PULLDOWN— “нижний ключ”, притягивающий линии I/O к земле. Может принимать следующие состояния:
- 1 – PULLDOWN включен
- 0 – PULLDOWN выключен
- PULLUP# — “верхний ключ”, включает источник тока в линии I/O. Обратите внимание: сигнал инвертирован, поэтому команды подаются следующим образом:
- 1 – PULLUP# выключен
- 0 – PULLUP# включен
Узнать состояние сигналов PULLUP и PULLDOWN на каждом входе можно с помощью команды:
cat /dev/pux/value, где x - номер входа I/O.
3. Считывание значений с линий I/O
Считать непреобразованные значения с каждого входа АЦП можно с помощью команды:
getinfo adcx, где x - номер входа I/O
Получить непреобразованные значения с АЦП в формате .json можно с помощью системного сервиса ubus.
- Запрос всех значений:
ubus call iolines raw '{"adc": "all"}'
- Запрос одиночного значения:
ubus call iolines raw '{"adc": "adc2"}'
Вычислить значение напряжения для режима АЦП (в мВ), используя непреобразованное значение, можно по следующей формуле:
Vin = N * 38
где
- N – непреобразованное значение АЦП
- 38 – коэффициент для пересчёта непреобразованных значений АЦП в напряжение в мВ
Получить преобразованные значения напряжения со входа АЦП (в мВ) также можно с помощью следующих команд:
- Запрос всех значений:
ubus call iolines voltage '{"adc": "all"}'
- Запрос одиночного значения:
ubus call iolines voltage '{"adc": "adc2"}'
Внимание:
- Если мы работаем с PULLDOWN, PULLUP# должен быть выключен!
- Если мы работаем с PULLUP#, PULLDOWN должен быть выключен