Мигаем светодиодом на Orange Pi Zero

Сайт: 

Автор: Андрей Осипов

Дата: 26/03/2019

В предыдущих статьях я описал процесс настройки сети и установки веб-сервера на Orange Pi Zero. Так же обещал рассказать о настройке FTP-сервера, но посчитал это не целесообразным занятием, потому как доступа по SFTP вполне достаточно. Если кому-то эта тема интересна, то сообщите в комментариях к этой статье.

Сегодня я расскажу как можно управлять портами ввода-вывода и всей доступной периферией.

Распиновка Orange Pi Zero показана на рисунке. Пины, расположенные слева, предназначены для подключения наушников, микрофона, инфракрасного датчика и т.д. и нас мало интересуют. С правой стороны расположены пины периферии и цифровых портов. Как видно, один и тот же пин может выполнять разные функции: цифровой порт или интерфейсный пин.

На плате также имеется пользовательский светодиод, который подключен на один из портов. Далее попробуем помигать им.

Для начала устанавливаем библиотеку wiringPi для управления портами ввода-вывода и остальной периферией. Вообще библиотека разрабатывалась для миникомпьютеров Raspberry PI и не подходила для Orange Pi. Однако в настоящее время есть адаптированная под Orange Pi версия библиотеки. Установить ее можно как указано здесь http://www.orangepi.org/Docs/WiringPi.html

У меня же клонировать репозиторий не получилось, так как требовалось ввести логин и пароль аккаунта GitHub, которые мне не известны. Поэтому я просто скачал все в виде ZIP-архива из репозитория https://github.com/xpertsavenue/WiringOP-Zero и добавил содержимое архива на SD-карточку OrangePi через Total Commander по SFTP-протоколу, предварительно распаковав архив. Распакованные файлы я поместил в домашний каталог пользователя.

Как получить доступ к файловой системе OrangePi Zero через Total Commander я уже писал в предыдущей статье.

Для установки библиотеке нужно запустить скрипт build. Для скрипта не установлены права на запуск. Мы должны их предоставить сами.

cd ~/WiringOP-Zero-master/
sudo chmod a+x build
sudo ./build

После успешной установки можно посмотреть состояние всех портов командой:

gpio readall

Справку обо всех командах wiringPi можно получить набрав:

gpio –h

Из таблицы можно увидеть, что пользовательский светодиод STAT-LED подключен на порт 30, который сейчас работает в режиме цифрового выхода OUT. Если же порт находится в каком-то другом режиме, то настроить его в режим цифрового вывода можно командой:

gpio mode 30 output

Зажигаем светодиод установкой логической «1» на выходе 30:

gpio write 30 1

Гасим светодиод установкой логического «0» на выходе 30:

gpio write 30 0

Напишем простую программу, которая заставит светодиод мигать. С нуля писать ее не придется, т.к. она уже есть в каталоге examples в качестве примера. Просто копируем файл blink.c в рабочий каталог, изменяем номер порта на 30 и компилируем его.

В созданном на предыдущих шагах каталоге ~/public/www добавляем каталог cgi-bin:

mkdir ~/public/www/cgi-bin

Копируем в созданный каталог пример программы blink:

cp ~/WiringOP-Zero-master/examples/blink.c ~/public/www/cgi-bin/blink.c

Открываем исходник программы в редакторе и меняем номер порта с 0 на 30:

mcedit ~/public/www/cgi-bin/blink.c

Находим строчку #define LED 0 и меняем на 30

Сохраняем и закрываем исходник

Компилируем программу командой:

gcc -o ~/public/www/cgi-bin/blink.bin ~/public/www/cgi-bin/blink.c -I/usr/local/include -lwiringPi –lpthread

Далее в каталоге с программой должен появиться файл blink.bin. Запускаем программу командой:

sudo ~/public/www/cgi-bin/blink.bin

После запуска программы светодиод должен замигать. Остановить программу можно нажав клавиши CTRL+C

Кстати, помигать светодиодом можно и с помощью скрипта, который тоже есть в каталоге с примерами.

Копируем скрипт в рабочий каталог:

cp ~/WiringOP-Zero-master/examples/blink.sh ~/public/www/cgi-bin/blink.sh

Открываем в редакторе файл blink.sh и меняет строчку PIN=0 на PIN=30:

mcedit ~/public/www/cgi-bin/blink.sh

После сохранения файла, запускаем скрипт на исполнение:

sh ~/public/www/cgi-bin/blink.sh

И также видим, что светодиод мигает. Остановить выполнение скрипта можно клавишами CTRL+C

В следующий раз расскажу как разрабатывать программы в Eclipse IDE  работая под Windows. Жду ваших комментариев.