Wiren Board 4: GPIO List
This is the approved revision of this page, as well as being the most recent.
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров 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