Кнопка выключения raspberry pi 2
Сегодня будем делать кнопку, которая будет отвечать за выключение raspberry pi 2 и будет подсоединена к GPIO.
Все действия, описанные в этой статье и на сайте вы выполняете на свой страх и риск, за причинённый ущерб ответственность несёте сами. Если согласны поэкспериментировать с raspberry pi, то вперёд!
Сам я в этих GPIO абсолютно не разбираюсь, поэтому начну всё с нуля. В результате мы получим первую рабочую кнопку с полезной функцией. На изображении все GPIO разъемы нашего raspberry pi 2.
Дальше берём кнопку примерно такую как на вкл/выкл обычный стационарный ПК. Я именно такую и взял со старого корпуса обычного ПК, она раньше была reset’ом. Кнопка соединена с двумя проводами которые втыкались в материнскую плату опять же обычного компьютера.
Raspberry pi в момент подсоединения проводков и устройств должен быть выключен, так что выключаем.
sudo shutdown -h now
Один провод от кнопки подсоединяем к 38-ому разъему GPIO (см номер в кружке на первом изображении), а второй провод от кнопки подключаем к 40-ому разъему (см номер в кружке на первом изображении).
Когда подсоединили, включаем raspberry pi в розетку, потом подключаемся к нему по ssh и создаём папочку, где будем скрадывать свои скриптики:
sudo mkdir -p /script/gpio
sudo chmod -R 0777 /script
cd /script/gpio
sudo nano shdown.sh
вписываем туда (почти каждую строчку я пояснил для себя и для читателей, так как я это понимаю) :
#! /bin/bash
# 1) Говорим ядру, что мы хотим использовать GPIO20
# Cмотрим на первую картинку статьи и видим, что разъему под номером 38
# соответствует GPIO 20
# после этой команды в директории /sys/class/gpio
# появится директория gpio20, в которой в свою очередь
# появятся файлы active_low, device, direction, edge, subsystem, uevent, value
echo "20" > /sys/class/gpio/export
#
# 2) Указываем, что линия будет выходом
echo "out" > /sys/class/gpio/gpio20/direction
#
# 3) Установим логический 1 для значения исходящей (out) линии.
# Вход (in) можно читать, а на выход (out) задавать значение
echo "1" > /sys/class/gpio/gpio20/value
# 4) Говорим ядру, что мы хотим использовать GPIO21
# смотрим на первую картинку и видим, что разъему под номером 40
# соответствует GPIO21
echo "21" > /sys/class/gpio/export
#
# 5) Указываем, что линия будет входом
echo "in" > /sys/class/gpio/gpio21/direction
# Далее идёт логика:
while ( true )
do
# 6) Если контакт №40(GPIO21) получает логическое значение 1
# (а он его получит от контакта №38(gpio20), когда нажмётся физическая кнопка и цепь замкнётся)
if [ $(</sys/class/gpio/gpio21/value) == 1 ]
then
# тогда
# 7) освобождаем(unexport) порт GPIO20(порядковый номер 38)
echo "20" > /sys/class/gpio/unexport
# 8) освобождаем(unexport) порт GPIO21(порядковый номер 40)
echo "21" > /sys/class/gpio/unexport
# 9) подаём команду на выключение raspberry pi (shutdown -h now)
shutdown -h now "The system is turned off using the GPIO"
fi
# 10) в противном случае приостанавливаем выполнение освобождения
# портов и выключение на 0.02 секунды
sleep 0.02
done
Делаем его исполняемым:
sudo chmod +x /script/gpio/shdown.sh
Пробуем запустить:
sudo /script/gpio/shdown.sh
Потом жмём с небольшой задержкой в 1 секунду физическую кнопку, которую мы подключили к разъемам 38 и 40. Raspberry pi выключится.
Закинем это дело в автозапуск, чтобы не надо было каждый раз после перезагрузки запускать вручную sudo /script/gpio/shdown.sh. Для это выполняем:
sudo nano /etc/rc.local
Вписываем перед «exit 0» строчку:
sudo /script/gpio/shdown.sh &
Всё, после перезагрузки будет выполняться наш скриптик shdown.sh, который отвечает за выключение нашего raspberry pi 2 с помощью обычной физической кнопки.
Прикручиваем выключение Raspberry PI по кнопке
- Вложения
-
- gpio_raspberry-pi-2-624x234.jpg (82.88КБ)2020 просмотров
RA9WUT/3
Alinco DR-130, DR-510, DJ-191. Bafeng UV-5R, Motorola Radius CP50, Softrock RXTX SDR 40/30/20 метров
Alinco DR-130, DR-510, DJ-191. Bafeng UV-5R, Motorola Radius CP50, Softrock RXTX SDR 40/30/20 метров
Re: Прикручиваем выключение Raspberry PI по кнопке
Круть! Спасибо!