Установка и настройка WiringOP/WiringPi на Orange Pi PC

Как установить и настроить 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

Установка WiringPi на Orange Pi PC (1)

Самая простая программа: Мигание светодиодом

Мигание светодиодом является самой простой программой для управления пинами ввода/вывода на плате. Создайте файл с именем 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

Похожие записи

Комментарии 28

  • Приветствую, спасибо за полезный материал, у меня плата orange pi plus 2, соответственно не все работает(lan, usb не работают) по причине немного отличающегося оборудования, а есть тоже самое только под orange pi plus 2 ?, спасибо

  • А каким образом можно остановить даную команду?

  • Начал устанавливать, все вначале шло норм, но после части выполненных нормально операций по команде sudo ./build (дошло до [complite] drcSerial.c
    и hx711.c:86:2 error: ‘for’ loop initial declarations are only allowed in c99 or c11 mode

    • Словил эту же ошибку. 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

    не подскажете, что делать?

  • ./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).

  • Спасибо!!! По первой ссылке получилось.

  • Вроде все установил. Открываю пример blink из wiringpi, ругается на wiringPiSetup() и соответственно далее на все строки.

  • Плата BananaPi M2Ultra. Плохо, что в комментах нельзя выделить код. Вот что получается:

    avs@BananaPi:~/wiringPi/examples$ ls
    COPYING.LESSER  README.TXT      blink.sh       blink8.c     isr-osc.c       max31855.c  rht03.c       softPwm.c
    Gertboard       blink-thread.c  blink12.c      clock.c      isr.c           nes.c       scrollPhat    softTone.c
    Makefile        blink.c         blink12drcs.c  delayTest.c  lcd-adafruit.c  okLed.c     serialRead.c  speed.c
    PiFace          blink.o         blink6drcs.c   ds1302.c     lcd.c           pwm.c       serialTest.c  spiSpeed.c
    PiGlow          blink.rtb       blink8-drcn.c  header.h     lowPower.c      q2w         servo.c       wfi.c
    avs@BananaPi:~/wiringPi/examples$ sudo gcc blink.c -o blink -lwiringPi -lpthread
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `crypt'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `rint'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `pow'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `shm_open'
    collect2: error: ld returned 1 exit status
    
  • avs@BananaPi:~/wiringPi/examples$ gpio -v
    gpio version: 2.50
    Copyright (c) 2012-2018 Gordon Henderson
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type: gpio -warranty
    
    Raspberry Pi Details:
      Type: Model A, Revision: 00, Memory: 256MB, Maker: Sony
      * Device tree is enabled.
      *--> Banana Pi BPI-M2-Ultra
      * Root or sudo required for GPIO access.
    avs@BananaPi:~/wiringPi/examples$
    avs@BananaPi:~/wiringPi/examples$
    avs@BananaPi:~/wiringPi/examples$
  • Попробовал еще раз. После запуска установки были выдаются строки типа

    mcp3422.c: In function 'waitForConversion':
    mcp3422.c:50:5: warning: ignoring return value of 'read', declared with attribute warn_unused_result [-Wunused-result]
         read (fd, buffer, n) ;
         ^~~~~~~~~~~~~~~~~~~~
    

    А в самом конце

    All Done.
    
    NOTE: To compile programs with wiringPi, 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).

    Но после запуска компиляции тестового примера ошибка осталась прежняя

    avs@BananaPi:~/BPI-WiringPi2/examples$ sudo gcc blink.c -o blink -lwiringPi -lpthread
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `crypt'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `rint'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `pow'
    /usr/lib/gcc/arm-linux-gnueabihf/7/../../../../lib/libwiringPi.so: undefined reference to `shm_open'
    collect2: error: ld returned 1 exit status

    Не понятно, куда копать 🙁

  • Скомпилировалось при таком вызове

    gcc blink.c -o blink -pthread -lwiringPi -lm -lrt -lcrypt
  • По поводу параметра pthread, залез в доки по gcc, там пишут:

    -pthread
    Link with the POSIX threads library. This option is supported on GNU/Linux targets, most other Unix derivatives, and also on x86 Cygwin and MinGW targets. On some targets this option also sets flags for the preprocessor, so it should be used consistently for both compilation and linking.
    

    Так что без «l»
    Надо еще понять, что значит: -lm -lrt
    PS. Спасибо за ваши статьи.

  • Да я немного ступил, когда зашел на

    https://github.com/BPI-SINOVOIP/BPI-WiringPi2.git

    , то внизу прочел readme, ну и взял и использовал

     git clone git://git.drogon.net/wiringPi

    .
    Вечером переставлю и попробую заново.

  • В общем, ерунда какая то получается ;(
    Деинсталлировал установленный пакет, выполнил

    	
    git clone https://github.com/BPI-SINOVOIP/BPI-WiringPi2.git

    , установил. В результате

    avs@BananaPi:~/BPI-WiringPi2$ gpio readall
    Unable to determine hardware version. I see: Hardware   : Allwinner sun8i Family
    ,
     - expecting BCM2708, BCM2709 or BCM2835.
    If this is a genuine Raspberry Pi then please report this
    to projects@drogon.net. If this is not a Raspberry Pi then you
    are on your own as wiringPi is designed to support the
    Raspberry Pi ONLY.
  • Заработало! Спасибо за помощь, я уже хотел бросить.

  • С такой ошибкой кто то сталкивался?
    Oops — unable to determine board type… model: 0
    Подскажите как исправить если знаете.

  • Я так и сделал. Только я не файл удалил а полностью удалил все, командой ./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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *