Команда gpio readall на Orange Pi возвращает ошибку «command not found» или падает с сообщением о невозможности определить модель платы — это верный признак того, что классическая библиотека wiringPi не подходит для вашего одноплатника и нужен её порт WiringOP. Оригинальная wiringPi разработана под Raspberry Pi и не знает ни процессоров Allwinner, ни распиновки разъёмов Orange Pi, поэтому прямое копирование инструкций с «малиновых» туториалов приводит к нерабочему коду.
В этой статье разберём, чем WiringOP отличается от оригинала, как правильно скомпилировать библиотеку под конкретную модель платы, как читать и переключать пины GPIO и что проверять, если светодиод или датчик не отвечает. Материал ориентирован на платы Orange Pi Zero, Orange Pi PC, Orange Pi One, Orange Pi 3 и родственные модели на чипах Allwinner H2+, H3, H5, H6.
Что такое WiringOP и чем она отличается от wiringPi
Библиотека wiringPi появилась как удобный способ управлять выводами GPIO на Raspberry Pi из программ на C и из командной строки. Она даёт простую нумерацию пинов (wiringPi numbering), утилиту gpio и функции вроде digitalWrite(), знакомые пользователям Arduino.
WiringOP — это форк wiringPi, адаптированный под одноплатники Orange Pi. Главное отличие — внутренняя карта пинов: библиотека знает, какие физические контакты 40- или 26-контактного разъёма соответствуют каким линиям GPIO процессора Allwinner, и умеет определять модель платы. Без этой адаптации обращение «по номеру wiringPi» будет либо ошибкой, либо обращением не к тому выводу.
Отдельно стоит упомянуть WiringOP-Zero — вариант, заточенный под компактные платы вроде Orange Pi Zero, где разъём урезан и нумерация отличается. Перед установкой важно понять, какой именно форк соответствует вашей плате: репозитории и их поддержка со временем менялись, поэтому ориентируйтесь на документацию к конкретной модели и на актуальные источники сообщества.
- 🔌 WiringOP — форк для «больших» Orange Pi на Allwinner H3/H5 и близких.
- 📦 WiringOP-Zero — вариант для Orange Pi Zero и плат с урезанным разъёмом.
- 🧭 gpio readall — ключевая утилита, показывающая карту пинов и их состояние.
- ⚙️ Нумерация wiringPi, BCM и физическая нумерация разъёма — три разные системы, их легко перепутать.
Подготовка системы перед установкой
Перед сборкой убедитесь, что система обновлена и установлены инструменты компиляции. На образах на базе Debian/Ubuntu (Armbian, Orange Pi OS на Debian) обычно достаточно поставить git и build-essential, если они ещё не установлены.
sudo apt updatesudo apt install -y git build-essential
Полезно заранее проверить, не установлена ли уже какая-то версия библиотеки — в некоторых официальных образах Orange Pi OS WiringOP предустановлена. Это делается простой командой gpio -v или gpio readall. Если утилита отвечает и показывает таблицу пинов, компилировать ничего не нужно.
⚠️ Внимание: не устанавливайте одновременно оригинальную wiringPi и WiringOP — они используют одинаковые имена библиотек и утилиту gpio, что приводит к конфликтам и непредсказуемому поведению. Если ранее ставили wiringPi для Raspberry Pi «по привычке», удалите её перед сборкой WiringOP.💡
Перед любыми экспериментами с GPIO сделайте резервную копию образа системы или хотя бы конфигурации — ошибочная подача сигнала на пин, занятый системой, может нарушить работу платы до перезагрузки.