Как установить и настроить WiringPi на Orange Pi PC?
Для работы с GPIO (англ. general-purpose input/output) — интерфейс ввода/вывода общего назначения, необходимо установить WiringOP или WiringPi на Orange Pi. В данной статье мы узнаем как правильно скачать и установить библиотеку WiringPi на Orange Pi PC и проверить работоспособность примером программы на языке C (Си), а именно, самым простым примером — мигание светодиодом.
Смотрите ещё:
Orange PI PC — четырёхъядерный мини ПК
Как создать загрузочную флешку Ubuntu Mate для Orange Pi PC из Windows
Руководство пользователя Orange Pi (ENG)
Установка Android на Orange Pi
Banana Pi BPI-M3 – удаленный доступ к рабочему столу из Windows
Что такое WiringPi и WiringOP?
WiringPi это GPIO библиотека написана @drogon-ом, первоначально для Raspberry Pi, но Orange Pi модифицировали и адаптировали её под свои мини компьютеры и называли её WiringOP, где OP — сокращение от Orange Pi. Подробнее о библиотеке WiringPi можно узнать на сайте разработчика http://wiringpi.com/.
Загрузка, установка и проверка WiringOP/WiringPi на Orange Pi
WiringPi загружена на GIT для облегчения отслеживания изменений. Для того, что бы вытянуть WiringOP из github необходимо чтобы у вас был установлен пакет git-core. Если у вас не установлен GIT, то вы можете установить его с помощью:
sudo apt-get install git-core
При возникновении каких-либо ошибок, тогда необходимо обновить вашу ОС:
sudo apt-get update sudo apt-get upgrade
Загрузка WiringOP/WiringPi
git clone https://github.com/zhaolei/WiringOP.git -b h3
В случае если вы уже клонировали файлы ранее, тогда необходимо просто обновить до последней версии:
cd WiringOP git pull origin
Загрузка WiringOP/WiringPi для Orange Pi Zero
git clone https://github.com/vladikoms/WiringOP-Zero.git
или
git clone https://github.com/xpertsavenue/WiringOP-Zero.git
Загрузка WiringOP/WiringPi для Orange Pi PC 2
git clone https://github.com/zhaolei/WiringOP.git -b h5
или
git clone https://github.com/kazukioishi/WiringOP.git -b h5
Установка WiringOP/WiringPi (H3, H5)
cd WiringOP chmod +x ./build sudo ./build
Установка WiringOP/WiringPi на Orange Pi Zero
cd WiringOP-Zero chmod +x ./build sudo ./build
Проверка WiringOP/WiringPi
gpio -v gpio readall
Самая простая программа: Мигание светодиодом
Мигание светодиодом является самой простой программой для управления пинами ввода/вывода на плате. Создайте файл с именем blink.c с содержанием:
#include <wiringPi.h> int main (void) { wiringPiSetup(); pinMode (0, OUTPUT) ; for (;;) { digitalWrite(0, HIGH); delay (500) ; digitalWrite(0, LOW); delay(500); } return 0; }
Затем, для компиляции и запуска, вы должны выполнить следующие командны:
sudo gcc blink.c -o blink -lwiringPi -lpthread sudo ./blink
Чтобы увидеть результат, вам нужно будет подключить один светодиод между CON3-11 и GND с резистором на 220 Ом для ограничения тока.
Как найти номер вывода
Об этом можно узнать тут: тык. Номера выводов с GPIO не совпадают с номерами в WiringPi
Материалы
GitHub — zhaolei/WiringOP: This is a GPIO access library for OrangePi. It is based on the original WiringPi for Raspberry Pi.
Установка Git
WiringPi
Raspberry Pi | Wiring | Download & Install | Wiring Pi
Приветствую, спасибо за полезный материал, у меня плата orange pi plus 2, соответственно не все работает(lan, usb не работают) по причине немного отличающегося оборудования, а есть тоже самое только под orange pi plus 2 ?, спасибо
А каким образом можно остановить даную команду?
Почти любой процесс в терминале можно остановить нажав Ctrl+C
Начал устанавливать, все вначале шло норм, но после части выполненных нормально операций по команде sudo ./build (дошло до [complite] drcSerial.c
и hx711.c:86:2 error: ‘for’ loop initial declarations are only allowed in c99 or c11 mode
обновите версию g++ (больше> 4.8):
чтобы проверить какая у вас версия:
или:
ещё можно добавить в начале Makefile следующею команду:
или
Словил эту же ошибку. OrangePI Zero. Armbian. Все апдейты на 26.02.2018 прошли без ошибок. Но при компиляции wiringPi-zero вылетела ваша ошибка. Решение указано на GitHub. Исходники копировать отсюда:
git clone https://github.com/vladikoms/WiringOP-Zero
С ними библиотека скомпилировалась, диод замигал..
Плата pi zero, ставил
git clone https://github.com/xpertsavenue/WiringOP-Zero.git
cd WiringOP-Zero
chmod +x ./build
sudo ./build
Выдает следующую ошибку:
GPIO Utility
[Link]
/usr/bin/ld: gpio.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
gpio.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:48: recipe for target ‘gpio’ failed
make: *** [gpio] Error 1
не подскажете, что делать?
У вас Orange Pi Zero? Пробуйте этот вариант:
вместо
Спасибо, помогло!
плата: Orange Pi Zero
./build: 4: ./build: [[: not found
wiringPi Build script
=====================
WiringPi Library
[UnInstall]
make: Nothing to be done for ‘all’.
[Install Headers]
[Install Dynamic Lib]
WiringPi Devices Library
[UnInstall]
make: Nothing to be done for ‘all’.
[Install Headers]
[Install Dynamic Lib]
GPIO Utility
make: Nothing to be done for ‘all’.
[Install]
All Done.
NOTE: To compile programs with wiringBP v2, you need to add:
-lwiringPi
to your compile line(s) To use the Gertboard, MaxDetect, etc.
code (the devLib), you need to also add:
-lwiringPiDev
to your compile line(s).
Попробуй этот вариант:
К сожалению, нету у меня Orange Pi на базе Allwinner H5, чтобы протестировать работоспособность библиотеки.
Можешь проверит вариант от zhaolei не указывая имя ветки:
Спасибо!!! По первой ссылке получилось.
Вроде все установил. Открываю пример blink из wiringpi, ругается на wiringPiSetup() и соответственно далее на все строки.
А можно поподробнее? Какая у вас плата и полное сообщение ошибки.
Если использовать команду
ошубок быть не должно.
Плата BananaPi M2Ultra. Плохо, что в комментах нельзя выделить код. Вот что получается:
Для BananaPi есть другая статья:
https://micro-pi.ru/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-wiringpi-%d0%bd%d0%b0-banana-pi/
Но BPI-SINOVOIP обновили WiringPi и теперь есть одна для всех плат (support rpi all & bananapi m1-m1p-r1 m2 m2m m2p m2u m3 m64).
Устанавливается аналогично.
П.С. Код можно добавить с использованием тэга
<pre>...</pre>
Попробовал еще раз. После запуска установки были выдаются строки типа
А в самом конце
Но после запуска компиляции тестового примера ошибка осталась прежняя
Не понятно, куда копать 🙁
Скомпилировалось при таком вызове
Есть ещё люди с такой ошибкой, тут отсутствует библиотека pthread
https://lb.raspberrypi.org/forums/viewtopic.php?t=211276
В команде ошибка, а именно в
-pthread
, нужно-lpthread
, получается так:По поводу параметра pthread, залез в доки по gcc, там пишут:
Так что без «l»
Надо еще понять, что значит: -lm -lrt
PS. Спасибо за ваши статьи.
Проверил, с pthread без разницы, а вот wiringPi без «l» не пойдет.
П.С. Скомпилировалось или нет?
Да, скомпилировалось. Правда диод не мигает.
Добавил в код вывод millis() в консоль — работает. Т.е. программка работает, но светодиод не мигает. Как правильно снести, установленный wiringPi?
Хочу заново скачать и установить.
Снести можно так:
В моём примере используется пин 0, но не факт, что на Банане он тот-же.
Попробуйте использовать любой другой доступный из
GPIO.XX
, весь список можно получить командойgpio readall
, смотрите на колонкуwPI
, пин под номером «0» работать и не должен, можете попробовать 21, 22, 23, 24 или 25-й.Да я немного ступил, когда зашел на
, то внизу прочел readme, ну и взял и использовал
.
Вечером переставлю и попробую заново.
В общем, ерунда какая то получается ;(
Деинсталлировал установленный пакет, выполнил
, установил. В результате
Что-от мне подсказывает, что это из за ОС Armbian, с твоей проблемой ещё сталкивались тут
http://forum.banana-pi.org/t/banana-pi-bpi-m2-ultra-m2u-wiringpi-gpio-demo/3027/10
If you look closer to WiringPi source code, you can see it receive info about board from:
The easiest solution (not saying it is the right one) is to create it with this content (copied from bananapi images):
Tested on Armbian image.
Вам нужно будет создать файл
/var/lib/bananapi/board.sh
и прописать в него следующее содержание:Из за отсутствия этих параметров ваш мини-ПК определяется как Raspberry Pi, т.е. по умолчанию.
После этих операций удалите WiringPi, перезапустите систему и установите по новой. Надеюсь, что получится на этот раз!
Заработало! Спасибо за помощь, я уже хотел бросить.
С такой ошибкой кто то сталкивался?
Oops — unable to determine board type… model: 0
Подскажите как исправить если знаете.
Можете уточнить, какая у вас плата/модель и что именно установили? Скорее всего, вы установили неправильную версию.
У меня OrangePI Zero а устанавливал вот по етой ссылке «https://github.com/xpertsavenue/WiringOP-Zero.git». Возможно проблемма связана с тем что установлена Arch linux. Но мне кажется должна быть возможность и на ней запустить.
Можете попробовать установить вот эту версию:
от xpertsavenue не у всех работает, даже тут отписались люди, что заработало именно с версией от vladikoms.
Удалить можно так:
Неа. Та же ошибка. Я так понимаю оно просто не видит модель. Не понятно только где оно смотрит ее.
Скорее всего это из за отличающегося или отсутствии файла
на Arch linux.
Можете отредактировать функцию
вместо этого
вставить
чтобы всегда возвращались параметры для Orange Pi Zero.
Или использовать Armbian
В каком файле искать эту функцию?
Забыл уточнить: WiringOP-Zero/wiringPi/wiringPi.c
Странно, но даже ето не помогло .
Так после того, как вы отредактировали файл, нужно удалить wiringPi.o файл, но лучше все *.o файлы и libwiringPi.so, и переустановить WiringPi, чтобы был эффект.
Но мне кажется, что будет работать на другой ОС
Я так и сделал. Только я не файл удалил а полностью удалил все, командой ./build uninstall А потом заново установил.
Привет, нужна помощь. Плата Orange Pi 4
Установил WiringOP по этой ссылке https://github.com/orangepi-xunlong/WiringOP.
Пытаюсь скопмилить, получаю вот такие ошибки
/usr/lib/gcc/aarch64-linux-gnu/7/../../../../lib/libwiringPi.so: undefined reference to `shm_open’
/usr/lib/gcc/aarch64-linux-gnu/7/../../../../lib/libwiringPi.so: undefined reference to `crypt’
collect2: error: ld returned 1 exit status
При добавлении ключей -lrt -lcrypt — компилится без ошибок, но не работает. (подключил кулер к пинам 4 и 6). Командой gpio read 4 ответ 1, то есть по идеи кулер должен работать?
А как решить проблему кода с прерываниями? Обычный blink работает хорошо, а вот когда скомпилировал и запускаешь isr-osc, то вылезает ошибка:
gpio: Unable to open GPIO edge interface for pin 4: Permission denied
wiringPiISR: unable to open /sys/class/gpio/gpio355/value: No such file or directory
Даже если запускаешь так:
sudo ./isr-osc
то вылетает та же самая ошибка. Кто-то запускал примеры с прерываниями? Плата — OrangePi 3 LTS