0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何才能给树莓派添加开关机键

Wildesbeast 来源:未知 作者:blog.csdn.net bxgj 2019-10-13 09:11 次阅读

作为一个硬件爱好者、嵌入式系统工程师、技术宅,树莓派肯定是要玩一玩的,但是用的时间长了总会发现它有一些不完美的地方,比如:没有电源键!

常用的关机方法有两种(外接屏幕和键盘的就不说了):

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 爆的开关机按键方案吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1481

    浏览量

    123246
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51897
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105504
收藏 人收藏

    评论

    相关推荐

    纯硬件电路如何实现一开关机功能

    以前我们也分析过软件一开关机电路,但这种电路有一个弊端,当软件程序跑飞时将无法关机,用纯硬件的电路路将避免这种情况的出现。
    的头像 发表于 02-17 14:49 1.2w次阅读
    纯硬件电路如何实现一<b class='flag-5'>键</b><b class='flag-5'>开关机</b>功能

    单键开关机

    在很多移动设备中都需要单键开关机电路,有的是由分立器件组成,有的是用IC,是否有开关机电路,及稳定又经济呢?大师们,拍过来吧
    发表于 02-12 16:02

    请问一开关机电路怎么设计?

    各位大神,请问一开关机电路怎么设计?智能按键的芯片有哪些?
    发表于 05-31 04:36

    如何给树莓添加开关机

    树莓添加开关机声明本文由u013062709原创,禁止二次修改发布。转载及引用内容请注明出处,并标明本站网址。文中程序仅供学习使用,
    发表于 10-28 08:28

    如何给树莓添加一个开、关机按键

    树莓添加一个开、关机按键(原创)声明关键词问题起因解决方案一、实现方式二、实现原理三、改进方案声明本文由晓宇(xiaoyu_ebox)原创,转载及引用内容请注明出处,并标明本站网址
    发表于 10-29 09:12

    开关机电路方案

    开关机电路方案一、先上一个低功耗的一开关机电路,这个电路的特点在于关机时所有三极管全部截止几乎不耗电。原理很简单:利用Q10的输出与输
    发表于 10-29 06:27

    单片机一开关机电路的相关资料分享

    单片机一开关机电路,多种方案可供选择,有纯硬件的也有软硬结合的一开关机电路方案一、先上一个低功耗的一
    发表于 11-25 08:43

    开关机电路问题

    这是设计的一开关机电路,VBAT1是3.7v电池输入,VBAT2是输出。理论上上电时,由于按键没按下,Q9(AO3401)不导通,但是实际是只要上电,Q9就导通,甚至我直接将Q8的3脚直接接地,Q9还是导通,请问是什么原有,电路设计不对吗?
    发表于 01-11 10:25

    电脑自动开关机的方法 电脑定时开关机

    电脑自动开关机的方法 电脑定时开关机 自动定时开机的实现:首先在启动计算机时,按“Delete”进入BIOS界面。在BIOS设置主界面中
    发表于 01-27 09:52 4354次阅读

    树莓添加开关机

    树莓添加开关机声明本文由u013062709原创,禁止二次修改发布。转载及引用内容请注明出处,并标明本站网址。文中程序仅供学习使用,
    发表于 10-21 15:51 12次下载
    给<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>添加开关机</b><b class='flag-5'>键</b>

    树莓添加一个开、关机按键(原创)

    树莓添加一个开、关机按键(原创)声明关键词问题起因解决方案一、实现方式二、实现原理三、改进方案声明本文由晓宇(xiaoyu_ebox)原创,转载及引用内容请注明出处,并标明本站网址
    发表于 10-22 10:06 8次下载
    给<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>添加</b>一个开、<b class='flag-5'>关机</b>按键(原创)

    单片机 一开关机 软件结合

    单片机一开关机电路,多种方案可供选择,有纯硬件的也有软硬结合的一开关机电路方案一、先上一个低功耗的一
    发表于 11-16 19:21 15次下载
    单片机 一<b class='flag-5'>键</b><b class='flag-5'>开关机</b>  软件结合

    软件配合实现的“一开关机电路

    软件配合实现的“一开关机电路”一开关机电路仅使用一个按键,就可以实现开机和关机的功能。这个电路可以令产品更加简洁,好处是:1、避免了繁杂
    发表于 12-09 10:36 30次下载
    软件配合实现的“一<b class='flag-5'>键</b><b class='flag-5'>开关机</b>电路

    原来小米手机电源除了开关机,还隐藏这3大用法,真是厉害了

    说起手机电源是干嘛的,大家第一反应就是开关机,其实也没错,电源就是用来开关机和唤醒屏幕的,但是手机电源的功能并不只是如此,今天笔者就说
    发表于 01-07 10:36 11次下载
    原来小米手机电源<b class='flag-5'>键</b>除了<b class='flag-5'>开关机</b>,还隐藏这3大用法,真是厉害了

    开关机电路的工作原理是什么

    开关机电路的工作原理涉及多个电子元件的协同工作,主要包括MOS管、三极管、电容、电阻以及可能的单片机(MCU)等。 一、电路组成 一开关机电路通常由以下几个关键元件组成: MOS
    的头像 发表于 10-07 18:11 526次阅读
    一<b class='flag-5'>键</b><b class='flag-5'>开关机</b>电路的工作原理是什么