Wiren Board 4: GPIO List
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.
Самый простой и удобный способ работы с железом контроллера — через MQTT, связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс MQTT и скрывают аппаратные различия между аппаратными ревизиями контроллеров.
Работа в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.
Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. берут описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими аппаратными ревизиями оборудования.
Работа с GPIO в Linux
GPIO (General-purpose input/output — ввод/вывод общего назначения) — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.
В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.
ВНИМАНИЕ: не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.
Подробно про работу с GPIO читайте в статье Работа с GPIO. Также рекомендуем прочитать соответствующий раздел документации к ядру Linux.
Для других версий контроллера смотрите Таблицы GPIO разных версий контроллера.
Посмотреть таблицу GPIO можно командой cat /sys/kernel/debug/gpio, или в разделе ниже.
Реализация портов RS-485
| Модель контроллера | Название порта в Linux | Разъём на контроллере | Примечание |
| Wiren Board 4 | /dev/ttyNSC0 | Подписан RS-485-ISO | Изолированный порт, установлен терминатор |
| /dev/ttyNSC1 | Неизолированный порт, установлен терминатор |
GPIO для транзисторов управления низковольтной нагрузкой
| клеммник | функция | GPIO | вывод olinuxino | комментарии |
| Клеммник ADC1 | FET/ADC | 17 | 20 @ CON1 | Выход "открытый коллектор"; ADC channel 3 |
| Клеммник ADC2 | FET/ADC | 7 | 18 @ CON1 | Выход "открытый коллектор"; ADC channel 4 |
| Клеммник ADC3 | FET/ADC | 5 | 16 @ CON1 | Выход "открытый коллектор"; ADC channel 6 |
| Клеммник ADC4 (out) | FET/ADC/DI | 53 | 14 @ CON1 | Выход "открытый коллектор"; ADC channel 0; цифровой вход |
| Клеммник ADC5 (out) | FET/ADC/DI | 2 | 13 @ CON1 | Выход "открытый коллектор"; ADC channel 1; цифровой вход |
| Клеммник D1 (out) | FET/DI | 248 | GPIO6@ LAN9514 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D2 (out) | FET/DI | 247 | GPIO5@ LAN9514 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D3 (out) | FET/DI | 246 | GPIO4@ LAN9514 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D4 (out) | FET/DI | 245 | GPIO3@ LAN9514 | Выход "открытый коллектор"; вход "сухой контакт" |
GPIO на клеммниках
| клеммник | функция | GPIO | вывод olinuxino | комментарии |
| Клеммник ADC4 (in) | FET/ADC/DI | 123 | GPIO3 @ SC16IS752 | Выход "открытый коллектор"; ADC channel 0; цифровой вход |
| Клеммник ADC5 (in) | FET/ADC/DI | 1 | 12@CON1 | Выход "открытый коллектор"; ADC channel 1; цифровой вход |
| Клеммник R1 | GPIO, вход резистивных датчиков | 16 | 19 @ CON1 | ADC channel 7 |
| Клеммник R2 | GPIO, вход резистивных датчиков | 6 | 17 @ CON1 | ADC channel 5 (подтянут к 3.3V (как?)) |
| Клеммник 1-WIRE1 | 1-wire/GPIO | 52 | 26 @ CON1 | встроенная подтяжка, 1-wire по-умолчанию |
| Клеммник 1-WIRE2 | 1-wire/GPIO | 50 | 25 @ CON1 | встроенная подтяжка, 1-wire по-умолчанию |
GPIO для входов "сухой контакт"
| клеммник | функция | GPIO | вывод olinuxino | комментарии |
| Клеммник D1 (in) | FET/DI | 36 | 7 @ CON1 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D2 (in) | FET/DI | 37 | 8 @ CON1 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D3 (in) | FET/DI | 38 | 9 @ CON1 | Выход "открытый коллектор"; вход "сухой контакт" |
| Клеммник D4 (in) | FET/DI | 39 | 10 @ CON1 | Выход "открытый коллектор"; вход "сухой контакт" |
GPIO на реле
| Linux GPIO | вывод olinuxino | комментарии |
| 33 | 4@CON1 | Relay 2 |
| 34 | 5@CON1 | Relay 1 |
GPIO для внутреннего использования
| Linux GPIO | ||
| 51 | 27 @ CON1 | ADC MUX A |
| 57 | 22 @ CON1 | ADC MUX B |
| 54 | 21 @ CON1 | ADC MUX C |
| 35 | 6 @ CON1 | 3.3V rail shutdown |
| 3 | 12@CON2 | sc16is752 chip select |
| 25 | 27@CON2 | IRQ sc16is752 |
| 92 | 24 @ CON2 | RFM69H IRQ |
| 4 | 15 @ CON1 | RFM69H chip select |
| 91 | 25 @ CON2 | RFM69H _DIO2 |
| NRF24L01 chip select | ||
| NRF24L01 enable | ||
| 120 | GPIO0 @ SC16IS752 | RS-485 isolated supply enable |
| 124 | GPIO4 @ SC16IS752 | SIM900R power FET |
| 125 | GPIO5 @ SC16IS752 | SIM900R power KEY |
| 249 | GPIO7 @ LAN951x | SIM900R power status (input) |
| 32 | 3@CON1 | watchdog output |
| 60 / PWM2 | 28@CON2 | Buzzer |
| 126 | GPIO6 @ SC16IS752 | Red LED |
| 127 | GPIO7 @ SC16IS752 | Green LED |
GPIO на разъёме расширения
| Linux GPIO | |||
| 55 | 7 @ CON2 | CE | i2c scl, подтяжка к 3.3V |
| 56 | 8 @ CON2 | CSN | i2c sda, подтяжка к 3.3V |
| 23 | 26 @ CON2 | IRQ |
См. также Работа с GPIO