作为一个硬件爱好者、嵌入式系统工程师、技术宅,树莓派肯定是要玩一玩的,但是用的时间长了总会发现它有一些不完美的地方,比如:没有电源键!
常用的关机方法有两种(外接屏幕和键盘的就不说了):
1、远程登录然后敲命令(这是最合适的关机方法,但是太麻烦,如果没有电脑在身边就没法关机了)
2、拔电源(简单粗暴,但很容易导致文件损坏)
所以为了愉快的使用树莓派,最好还是给它添加一个像电脑一样的电源键,百度了一大圈发现国内(没错,我就是针对国内,来来回回就那么几篇文章,还反反复复互相抄)只有一种添加电源键的方法,那就是写个python脚本、或者其他脚本、或者编译一个程序,反正原理都是一样的,让这个脚本(或程序)开机启动,程序中一直检测设置为电源键的gpio,如果被触发则关机。这个方法虽然能解决问题,但真的low爆了!!!而且只能关机,不能开机。
在这里跟大家分享一个非常优雅,能关机也能开机的方法:
其实 /boot/overlays/readme 里面已经说的很详细了,为了造福广大人民群众,我就整理一下。
不少人看见英文就头疼,而且这个文件有上千行,很少有人会仔细阅读,这里我就只把电源相关的内容摘录出来(不同版本系统文件的内容略有不同):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 225 need an udev rule
enable listening to the input device:
action!=remove, subsystem==input, kernel==event*,
subsystems==platform, drivers==gpio-keys,
attrs{keys}==116, tag+=power-switch
this overlay only handles shutdown. after shutdown, the system
can be powered up again by driving gpio3 low. the default
configuration uses gpio3 with a pullup, so if you connect a
button between gpio3 and gnd (pin 5 and 6 on the 40-pin header),
you get a shutdown and power-up button.
load: dtoverlay=gpio-shutdown,=
params: gpio_pin gpio pin to trigger on (default 3)
active_low when this is 1 (active low), a falling
edge generates a key down event and a
rising edge generates a key up event.
when this is 0 (active high), this is
reversed. the default is 1 (active low).
gpio_pull desired pull-up/down state (off, down, up)
default is up.
note that the default pin (gpio3) has an
external pullup.
这里已经说得很明白了,只要在 /boot/config.txt 中添加相关配置就能实现关机。
比如像这样:
1
2
# 使用gpio3(这里的gpio指3bcm gpio编号,也就是scl1)作为电源键,下降沿为按下,上升沿为弹起,内部上拉
dtoverlay=gpio-shutdown
保存并重启,之后你只需要在gpio3和gnd之间接个按键就能实现关机,是不是很简单?
开始划重点!!考试要考的!!记住了!!
不需要添加任何配置,正常关机后不切断树莓派电源,将gpio3拉到低电平就能开机!没错,这样就实现了开机键!如果不需要gpio3做开机键,请自行阅读 /boot/overlays/readme 中 gpio-poweroff 相关内容
前面提到的配置默认使用gpio3,也就是scl1作为电源键,占用了i2c接口,虽然可以用其他gpio软件模拟i2c,但显然很不方便,最好如下改成其他gpio,注意这样改了以后这个gpio口只能做关机键使用,开机键还是gpio3,目前我没有找到自定义其他开机键的方法。
1
2
# 使用gpio_pin=17,即gpio_0(物理引脚pin_11)做关机键
dtoverlay=gpio-shutdown,gpio_pin=17,active_low=1,gpio_pull=up
gpio3与scl1冲突,具体表现为,当启用i2c以后,gpio3做scl1使用,因此只能使用gpio3开机,不能关机。所以如果想只用一个按键作为开、关机键,必须放弃硬件i2c,用其他引脚软件模拟i2c;如果一定要即有开、关机键又同时使用硬件i2c,那么就用gpio3做开机键,另外配置一个按键做关机键。
以上内容我只在树莓派3b+(系统版本:raspbian buster with desktop, image with desktop based on debian buster, version:july 2019, release date:2019-07-10, kernel version:4.19)上做过验证,其他版本不保证可用
/boot/overlays/readme 中还有很多非常有用的配置,有兴趣的同学自己去研究。
最后希望大家赶紧行动起来!!抛弃那些 low 爆的开关机按键方案吧!
美新半导体荣获“2021年最具潜力中国模拟IC设计公司”奖,全新形象亮相ELEXCON
媒体报道 | 安森美CEO:未来3年碳化硅收入预计达40亿美元
电子工程师怎样学习编程
积分电路原理
基板旋转冲洗过程中小结构的表面清洗
如何才能给树莓派添加开关机键
微擎小程序模块安装上传打包操作步骤解析
FANUC机器人TCP三点法介绍
基于AHB接口的高性能LCD控制器IP设计
微软已经与美国金融公司MSCI发起了基于云的战略联盟
主动红外入侵探测器的安装环境_主动红外探测器的安装注意事项
联通上线5G升级包 9.9元即可畅享5G流量
嵌入式状态监测与故障诊断装置设计
智能硬件创新设计行业走势及战略布局
基于LINUX的嵌入式浏览器的设计与实现
华为史上最好看手机今天发布 叫板iPhone7
带鱼屏+升降镜头?颜值超高,但看到处理器?再见?
适用于传输少量数据的蓝牙低能耗技术
IBM助力客户斩获多项IDC中国未来企业大奖
三种write mode,你真的理解吗?