声明
本文由晓宇(xiaoyu_ebox)原创,转载及引用内容请注明出处,并标明本站网址。文中程序仅供学习使用。
关键词
树莓派 开关键 开关机按键 修改开关键 GPIO17开关键
问题起因
一直以来,树莓派关机1)要么直接拔掉电源,2)要么登陆后执行shutdown命令关机。
这两种方式:
- 第一种简单粗暴,但是直接关机对树莓派的SD伤害非常大,搞几次之后就会损坏SD卡。
- 第二种方式比较安全,但是很麻烦,如果树莓派没有接到显示器上时,需要SSH登陆树莓派,再执行关机命令。
今天我们给树莓派添加一个硬件的开关机按键,使树莓派开机、关机变得非常简单。
解决方案
一、实现方式
给树莓派添加开关机按键有两种方式。
- 第一种是在树莓派的GPIO口上接一个按键,然后在树莓派上写一个程序,这个程序不断的检测按键有没有按下,如果按键按下,则执行“sudo shutdown -h now”。 这种方式容易理解,但相比等会要讲的第二种方式来说,稍显麻烦。
- 第二种方式更为简单优雅,只需要添加一行代码即可实现。在/boot/config.txt 文件末尾添加这样一行代码:
dtoverlay=gpio-shutdown
保存,然后重启树莓派,在树莓派的GPIO3(BCM3)和GND引脚之间接一个按键。这时按下按键树莓派就关机了,再按一下按键,树莓派开机。是不是非常的方便,树莓派引脚图如下。
二、实现原理
在树莓派的/boot/overlays/文件下,包含了大量的设备树,使得树莓派的内核支持大量的硬件配置,前提是你要开启才行。 开启的方式也比较简单,只需要在/boot/config.txt文件中添加或者删除相应的命令即可。树莓派的/boot/config.txt文件相当于电脑的BIOS。 这里只看/boot/overlays/README中和本文开关键相关的内容,完整的内容可以在以下两个页面中查看。
Name: gpio-shutdown
Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin
is configured as an input key that generates KEY_POWER events.
This event is handled by systemd-logind by initiating a
shutdown. Systemd versions older than