WiringPi и Shell скриптове на Raspberry Pi

Управление на GPIO пинове с WiringPi и Shell скриптове на Raspberry Pi

WiringPi беше една от най-популярните библиотеки за управление на GPIO пиновете на Raspberry Pi, но тя вече не се поддържа официално. В резултат на това инсталирането ѝ чрез стандартните хранилища на Raspberry Pi може да се окаже предизвикателство. В тази статия ще разгледаме как да инсталираме WiringPi от GitHub и ще предложим алтернативи като Pigpio и RPi.GPIO за управление на GPIO пиновете. Ще включим също така примери за управление на изходи и изчитане на входове както с Shell, така и с Python скриптове.

Инсталиране на WiringPi от GitHub

Ако предпочитате да използвате WiringPi, все още можете да го инсталирате от GitHub. Следвайте стъпките по-долу:

Клонирайте хранилището на WiringPi

git clone https://github.com/WiringPi/WiringPi.git

Преминете в директорията на WiringPi

cd WiringPi

Инсталирайте WiringPi

sudo ./build

След успешната инсталация можете да използвате командата gpio readall, за да видите състоянието на всички GPIO пинове. Може също така да свалите библиотеката от тук.

gpio readall

Управление на GPIO пинове с WiringPi и Shell скриптове на Raspberry Pi

Ако предпочитате да използвате Shell скрипт за управление на GPIO пиновете, ето как можете да направите това с WiringPi.

Създаване на файл в който ще напишем първия ни скрипт

touch blink.sh  # Създаване на файл в който ще напишем скрипта 

Промяна на правата за достъп на файла като и го прави изпълним

chmod +x blink.sh # Прави файла изпълним

Отваряне на файла с конзолен текстов редактор “nano”

nano blink.sh # Отваряне на файла с текстов редактор

Пример: Blink с Shell Скрипт в безкраен цикъл

Копирайте този скрипт в файла blink.sh

#!/bin/bash  # Указва коя програма (интерпретатор) трябва да изпълни съдържанието на скрипта

gpio mode 25 out  # Задаване на пин 25 като изходен пин

while true  # започване на безкраен цикъл
  do
    gpio write 25 on  # повдигане на пин 25 в логическа единица (3.3v)
    sleep 0.5         # време на изчакване 0.5 секунди
    gpio write 25 off # смъкване на пин 25 в логическа нула (0v)
    sleep 0.5         # време на изчакване 0.5 секунди
  done

За да запаметите информацията на файла натиснете “Ctrl+x“, в долния ляв ъгъл ще ви изпише въпроса “Save modified buffer?” тогава натиснете “Y” и “Enter“. Вашата програма е вече запаметена.

Този скрипт на практика прави същото като blink.ino в Arduino. Може да прочетете нашата статия: Arduino IDE и Arduino UNO първaта ни програма. По традиция това е първия скрипт който пишем без значение от езика който използваме.

Схема и видео на този проект

Raspberry Pi 4 WiringPi Shell blink.sh

Схемното решение е начертано на Fritzing.

Raspberry Pi 4 WiringPi blink.sh

Стартиране на Shell скрипта blink.sh

За да стартирате скрипта blink.sh просто трябва да въведете командата за изпълнение

bash blink.sh # С оказване на интерпретатора
./blink.sh    # Без оказване на интерпретатора

Изчитане на GPIO пинове с WiringPi

За да изберете пина който изкате да изчетете може да използвате командата. Тази команда принтира във вашия терминал pinout на Raspberry Pi.

gpio readall # Извежда pinout на Raspberry Pi
Raspberry pi 4 конфигурация на пиновете (pinout)
Raspberry pi 4 конфигурация на пиновете (pinout)

За изчитането на определен пин ще използваме метода по създаване и делигиране на права на даден файл, описан по-горе. След създаването на файл “gpioRead.sh“, копирайте кода и го запаметете.

#!/bin/bash  # Указва коя програма (интерпретатор) трябва да изпълни съдържанието на скрипта

gpio mode 25 in # Задаване на пин 25 като входен пин

status=$(gpio read 25)  # записване на състоянието на пина (0 или 1) в променливата "status"
echo $status  # извеждане (принтиране) на променливата

Изпълнението на скрипта се случва по същия начн описан за скрипта blink.sh.

Този скрипт ни връща състоянието на пин 25. То може да е “0” ако пина е в състояние на логическа нула, или “1” ако пина е в състояние на логическа единица (3.3v).

Изчитането на дигитален вход с WiringPi и Shell е лесно и бързо благодарение на командата gpio, която идва с библиотеката. С помощта на тази команда можете да проверите състоянието на конкретен GPIO пин с Shell скрипт или като използвате терминала на Raspberry Pi.

Заключение

Въпреки че WiringPi вече не се поддържа официално, все още има начини да използвате тази мощна библиотека за управление на GPIO пиновете на вашето Raspberry Pi. С помощта на Shell скриптове и командата gpio, можете лесно да контролирате различни устройства и да четете състоянието на пиновете. Алтернативно, можете да използвате библиотеки като RPi.GPIO или Pigpio, които предоставят актуални и поддържани начини за работа с GPIO пиновете. Която и библиотека да изберете, Raspberry Pi предлага множество възможности за управление и автоматизация на електронни компоненти, което прави устройството изключително гъвкаво и мощно средство за различни проекти.