Распиновка Orange Pi 3 LTS — первое, что нужно сверить перед подключением датчиков, экранов и модулей к 40-пиновому разъёму платы: неверно поданное питание 5 В на сигнальный пин или ошибка с нумерацией контактов способны вывести из строя как периферию, так и сам одноплатник. Плата построена на процессоре Allwinner H6, и её разъём расширения физически повторяет раскладку Raspberry Pi, однако логика нумерации пинов в программном коде отличается — это источник большинства ошибок у новичков.
В этой статье разберём назначение каждого контакта, различия между физической и логической нумерацией, способы проверки распиновки программно и правила безопасного подключения нагрузки. Материал ориентирован на тех, кто собирает проекты на Orange Pi 3 LTS под Linux (Debian/Ubuntu-сборки от Orange Pi или Armbian).
Общая структура 40-пинового разъёма
Разъём расширения Orange Pi 3 LTS — это двухрядная гребёнка 2×20 контактов с шагом 2,54 мм. Расположение пинов стандартное для всей линейки Orange Pi с 40-контактными разъёмами: первый пин находится у края платы со стороны, противоположной разъёмам USB, и обычно помечен шелкографией или квадратной площадкой на обратной стороне.
Контакты делятся на несколько функциональных групп. Часть пинов отвечает за питание, часть — за землю, остальные — программируемые линии GPIO, которые можно переконфигурировать под интерфейсы I2C, SPI, UART, PWM и I2S. Важно понимать: один и тот же физический контакт может выполнять разные функции в зависимости от настроек в device tree операционной системы.
- 🔌 Пины питания: 5 В (пины 2 и 4) и 3,3 В (пины 1 и 17) — для питания внешних модулей.
- ⏚ Земля (GND): пины 6, 9, 14, 20, 25, 30, 34, 39 — общий провод для всех цепей.
- 📡 Сигнальные GPIO: остальные контакты, работающие с логическими уровнями 3,3 В.
- 🔧 Мультиплексные функции: I2C, SPI, UART, PWM — назначаются через конфигурацию системы.
Таблица распиновки основных контактов
Ниже приведена распиновка ключевых контактов разъёма. Полную официальную схему со всеми альтернативными функциями стоит сверять с user manual конкретной ревизии платы, поскольку назначение отдельных GPIO может отличаться в зависимости от версии образа системы.
| Физический пин | Функция по умолчанию | Альтернативная функция |
|---|---|---|
| 1 | 3,3 В (питание) | — |
| 2 / 4 | 5 В (питание) | — |
| 3 | GPIO (TWI/I2C SDA) | I2C данные |
| 5 | GPIO (TWI/I2C SCL) | I2C тактирование |
| 7 | GPIO | общего назначения |
| 8 / 10 | UART TX / RX | отладочная консоль или GPIO |
| 19 / 21 / 23 | SPI MOSI / MISO / CLK | GPIO |
Обратите внимание: все сигнальные линии Orange Pi 3 LTS работают с уровнями 3,3 В и не толерантны к 5 В. Подача пятивольтового логического сигнала на вход GPIO — одна из самых частых причин выхода платы из строя при работе с Arduino-совместимыми модулями.
⚠️ Внимание: перед подключением любого модуля убедитесь, что его сигнальные выходы выдают не более 3,3 В. Для 5-вольтовой периферии используйте двунаправленный преобразователь логических уровней (logic level shifter).
Физическая и логическая нумерация пинов
Главная путаница при работе с распиновкой возникает из-за трёх разных систем нумерации. Физическая нумерация (BOARD) — это просто порядковый номер контакта на гребёнке от 1 до 40. Нумерация BCM пришла из мира Raspberry Pi и на Orange Pi работает лишь частично, в рамках совместимости библиотек. Системная нумерация — это номера линий GPIO, которые видит ядро Linux через подсистему gpiochip.
Для Allwinner H6 номер GPIO в системе вычисляется по формуле, привязанной к банкам портов (PA, PB, PC и так далее): номер равен смещению банка плюс позиция пина внутри банка. Например, линия PC7 и PL10 будут иметь совершенно разные системные номера, хотя физически могут находиться рядом. Точное соответствие для вашей прошивки проще всего получить командой, описанной в следующем разделе.
Как проверить распиновку программно
Самый надёжный способ убедиться, какая линия куда выведена, — посмотреть карту GPIO прямо в работающей системе. В современных образах для Orange Pi 3 LTS доступны утилиты из пакета gpiod и библиотека WiringOP (аналог WiringPi, адаптированный под Orange Pi).
Для просмотра всех линий GPIO и их текущего состояния выполните:
sudo apt install gpiod
gpioinfo
Если установлена библиотека WiringOP, удобную таблицу соответствия физических пинов и системных номеров показывает команда:
gpio readall
Вывод gpio readall отобразит две колонки с номерами пинов, их текущий режим (вход/выход/альтернативная функция) и уровень сигнала. Это самый быстрый способ сверить реальную распиновку с документацией без риска ошибиться.
☑️ Проверка перед первым подключением периферии
Подключение I2C, SPI и UART
Интерфейс I2C используется чаще всего — для датчиков температуры, OLED-дисплеев, расширителей портов. На разъёме задействованы пины 3 (SDA) и 5 (SCL), питание берётся с пина 1 (3,3 В) или 2 (5 В), земля — с любого GND, например пина 6. После физического подключения шину нужно активировать: в зависимости от образа это делается через утилиту orangepi-config (раздел System → Hardware) или правкой конфигурации overlays в файле загрузочного раздела.
Проверить, видит ли система подключенное устройство, можно командой:
sudo i2cdetect -y 0
Номер шины (0, 1 или другой) зависит от того, какой контроллер I2C выведен на разъём в вашей конфигурации — посмотреть доступные шины поможет i2cdetect -l. Если адрес устройства не появился в таблице, проверьте подтяжку линий SDA и SCL, общий провод GND и то, что интерфейс действительно включён в системе.
Интерфейсы SPI (пины 19, 21, 23, 24) и UART (пины 8, 10) активируются аналогично. Учтите, что отладочная консоль системы по умолчанию может занимать один из UART — перед использованием порта для своего устройства консоль на этом порту нужно отключить в параметрах ядра.
Начинайте отладку любого интерфейса с i2cdetect или gpioinfo — сначала убедитесь, что система видит шину, и только потом ищите ошибку в своём коде.
Типичные ошибки и меры предосторожности
Практика показывает, что большинство проблем с GPIO на Orange Pi 3 LTS связаны не с неисправностью платы, а с ошибками подключения. Разберём основные сценарии.
- ⚡ Подача 5 В на сигнальный пин — необратимое повреждение входа процессора. Используйте level shifter.
- 🔀 Путаница в нумерации — код написан под номера BCM, а подключение сделано по физическим номерам, или наоборот.
- 🔋 Перегрузка линии 3,3 В — стабилизатор платы рассчитан на ограниченный ток; прожорливые модули питайте отдельно.
- 🧲 Подключение при включённом питании — риск короткого замыкания и повреждения пинов.
- 📟 Занятый UART — отладочная консоль блокирует порт, и внешнее устройство «молчит».
⚠️ Внимание: реле, электромоторы и другую индуктивную нагрузку нельзя подключать к GPIO напрямую. Обязательны транзисторный ключ или готовый релейный модуль с опторазвязкой, а также защитный диод против обратной ЭДС.
Ещё один неочевидный момент — суммарная нагрузка на пины питания. Линия 5 В на разъёме связана с входным питанием платы, поэтому при слабом блоке питания подключение энергоёмкой периферии (например, сервоприводов) вызывает просадки напряжения и перезагрузки системы. Если плата внезапно перезагружается при срабатывании подключённого устройства, возможная причина именно в этом — проверьте качество и запас по току источника питания.
Почему gpio readall показывает другие номера, чем в примерах из интернета
Большинство туториалов писалось под Raspberry Pi или под другие модели Orange Pi с процессорами H3/H5. У Allwinner H6 иная карта банков GPIO, поэтому системные номера линий отличаются. Всегда ориентируйтесь на вывод gpio readall именно на вашей плате и вашем образе системы, а не на скриншоты из чужих инструкций.
Пример: управление светодиодом через GPIO
Классическая проверка работоспособности пина — мигание светодиодом. Вам понадобится сам светодиод, резистор номиналом порядка 220–330 Ом (точное значение зависит от светодиода; задача резистора — ограничить ток до безопасного для GPIO уровня) и два провода. Анод светодиода через резистор подключается к выбранному GPIO, катод — к GND.
Управление через файловый интерфейс sysfs выглядит так (номер линии подставьте из вывода gpio readall):
echo N | sudo tee /sys/class/gpio/export
echo out | sudo tee /sys/class/gpio/gpioN/direction
echo 1 | sudo tee /sys/class/gpio/gpioN/value
Здесь N — системный номер линии GPIO. Значение 1 зажигает светодиод, 0 — гасит. Если светодиод не реагирует, проверьте полярность его подключения, исправность резистора и соответствие номера линии физическому пину. Для Python-проектов удобнее библиотека OPi.GPIO, которая предоставляет привычный интерфейс в стиле RPi.GPIO.
Распиновка Orange Pi 3 LTS физически совместима с 40-пиновой гребёнкой Raspberry Pi, но системная нумерация GPIO у Allwinner H6 своя — всегда сверяйтесь с выводом gpio readall на конкретной плате.
Часто задаваемые вопросы
Совместима ли распиновка Orange Pi 3 LTS с Raspberry Pi 3?
Физически разъёмы совпадают: расположение пинов питания, земли, I2C, SPI и UART идентично, поэтому большинство HAT-плат и шлейфов подключаются напрямую. Однако программная нумерация GPIO отличается — код, написанный под RPi.GPIO с номерами BCM, потребует адаптации под библиотеку OPi.GPIO и системные номера линий Allwinner H6.
Можно ли подключать 5-вольтовые датчики к GPIO?
Напрямую — нет. Сигнальные входы платы рассчитаны на 3,3 В и не имеют толерантности к 5 В. Для 5-вольтовой периферии используйте двунаправленный преобразователь логических уровней или делитель напряжения на резисторах (для однонаправленных линий).
Как узнать, какой системный номер соответствует физическому пину?
Установите библиотеку WiringOP и выполните команду gpio readall — она выведет полную таблицу соответствия физических пинов, системных номеров и текущих режимов работы. Альтернатива — утилита gpioinfo из пакета gpiod, показывающая все линии GPIO контроллера.
Не работает UART на пинах 8 и 10 — в чём причина?
Возможная причина — отладочная консоль системы, которая по умолчанию может занимать этот порт. Проверьте параметры ядра в загрузочной конфигурации и отключите консоль на данном UART, либо используйте другой последовательный порт, если он выведен на разъём. Также убедитесь, что TX платы соединён с RX устройства и наоборот.
Сколько тока можно взять с пина 3,3 В?
Точное значение зависит от схемы стабилизатора конкретной ревизии платы, и безопасный предел лучше уточнять в официальной документации. Общее правило: линия 3,3 В предназначена для маломощной периферии (датчики, преобразователи уровней), а энергоёмкие модули — сервоприводы, GSM-модемы, LED-ленты — следует питать от отдельного источника с объединением земель.