Raspberry Pi Кнопка выключения системы и индикатор работы
Сборка и подключение
Схему расположения выводов можно посмотреть на сайте pinout.xyz
Кнопку подключаем к физическим выводам 5 (SCL - GPIO3) и 6 (GND).
Светодиод индикатора подключаем через резистор 330 Ом к физическим выводам 8 (TXD - UART0) и 6 (GND).
Настройка кнопки
Установка с помощью скрипта
git clone https://github.com/Howchoo/pi-power-button.git
./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
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