Мигаем светодиодом на 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-протоколу, предварительно распаковав архив. Распакованные файлы я поместил в домашний каталог пользователя.
Для установки библиотеке нужно запустить скрипт 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. Жду ваших комментариев.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии