linux
October 19, 2023

Raspberry Pi Кнопка выключения системы и индикатор работы

ТехнологииБольше по теме

Raspberry Pi Кнопка выключения системы и индикатор работы

Сборка и подключение

Схему расположения выводов можно посмотреть на сайте pinout.xyz

GPIO3 - PIN #5, GPIO14 - PIN #8 , GND - PIN #6

Монтажная схема:

Монтажная схема

Принципиальная схема:

Схема
сборка

Кнопку подключаем к физическим выводам 5 (SCL - GPIO3) и 6 (GND).

Светодиод индикатора подключаем через резистор 330 Ом к физическим выводам 8 (TXD - UART0) и 6 (GND).

подключение

Настройка кнопки

Установка с помощью скрипта

1. Скачиваем скрипт:

git clone https://github.com/Howchoo/pi-power-button.git

2. Запускаем установку:

./pi-power-button/script/install

3. Для удаления используем команду:

./pi-power-button/script/uninstall

Ручная установка

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

1. Первый скрипт - listen-for-shutdown.py:

nano listen-for-shutdown.py

2. Содержание первого скрипта:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import subprocess

GPIO.setmode(GPIO.BCM)
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(3, GPIO.FALLING)

subprocess.call(['shutdown', '-h', 'now'], shell=False)

3. Помещаем его в /usr/local/bin и делаем исполняемым:

sudo mv listen-for-shutdown.py /usr/local/bin/
sudo chmod +x /usr/local/bin/listen-for-shutdown.py

4. Создаем второй скрипт listen-for-shutdown.sh:

nano listen-for-shutdown.sh

5. Содержание второго скрипта:

#!/bin/sh

### BEGIN INIT INFO
# Provides: listen-for-shutdown.py
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

# If you want a command to always run, put it here

# Carry out specific functions when asked to by the system
case "$1" in
 start)
 echo "Starting listen-for-shutdown.py"
 /usr/local/bin/listen-for-shutdown.py &
 ;;
 stop)
 echo "Stopping listen-for-shutdown.py"
 pkill -f /usr/local/bin/listen-for-shutdown.py
 ;;
 *)
 echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"
 exit 1
 ;;
esac
exit 0

6. Сохраняем второй скрипт в /etc/init.d и делаем исполняемым:

sudo mv listen-for-shutdown.sh /etc/init.d/
sudo chmod +x /etc/init.d/listen-for-shutdown.sh

7. Регистрируем в автозагрузку:

sudo update-rc.d listen-for-shutdown.sh defaults

8. Запускаем скрипт:

sudo /etc/init.d/listen-for-shutdown.sh start

Настройка индикатора

Для Raspberry Pi версий старше 3 необходимо переопределить пин для отображения активности на GPIO в файле /boot/config.txt :

dtoverlay=pi3-act-led,gpio=14
dtparam=act_led_trigger=default-on

Наиболее часто используемые варианты пульсаций:

default-on - Включено по умолчанию
heartbeat - Мигнуть сердцебиением (1-0-1-00000)
timer - Мигнуть 1 раз в секунду
mmc0 - Мигнуть при активности mmc0 (SD Card)
cpu0 - Мигнуть при использовании cpu0
rfkill0 - Мигнуть при активности wifi

Все варианты пульсаций:

none - Нет тригера
kbd-scrolllock - Клавиатура scroll lock
kbd-numlock - Клавиатура num lock
kbd-capslock - Клавиатура caps lock
kbd-kanalock - Клавиатура kana lock
kbd-shiftlock - Клавиатура shift
kbd-altgrlock - Клавиатура altgr
kbd-ctrllock - Клавиатура ctrl
kbd-altlock - Клавиатура alt
kbd-shiftllock - Клавиатура left shift
kbd-shiftrlock - Клавиатура right shift
kbd-ctrlllock - Клавиатура left ctrl
kbd-ctrlrlock - Клавиатура right ctrl
timer - Мигнуть 1 раз в секунду
oneshot - Мигнуть единожды
heartbeat - Мигнуть сердцебиением (1-0-1-00000)
backlight - Включена подсветка
gpio - Мигнуть когда высокий уровень определенного GPIO
cpu0 - Мигнуть при использовании cpu0
cpu1 - Мигнуть при использовании cpu1
cpu2 - Мигнуть при использовании cpu2
cpu3 - Мигнуть при использовании cpu3
default-on - Включено по умолчанию
panic - Мигнуть при kernel panic
mmc0 - Мигнуть при активности mmc0 (первичный интерфейс SD Card)
mmc1 - Мигнуть при mmc1 (вторичный интерфейс SD Card)
rfkill0 - Мигнуть при активности wifi
rfkill1 - Мигнуть при активности bluetooth

Ссылки

Демонстрация работы на https://www.youtube.com/watch?v=Z0LrG2ldfzI

3d-модель корпуса на сайте https://www.thingiverse.com/thing:4357153

Оригинальные статьи на howchoo.com:

How to Add a Power Button to Your Raspberry Pi

Build a Simple Raspberry Pi LED Power/Status

ТехнологииБольше по теме