给树莓派添加开、关机键

声明

本文由u013062709原创,禁止二次修改发布。转载及引用内容请注明出处,并标明本站网址。文中程序仅供学习使用,本人不承担任何由使用文中代码产生的法律责任。


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

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

  • 远程登录然后敲命令(这是最合适的关机方法,但是太麻烦,如果没有电脑在身边就没法关机了)
  • 拔电源(简单粗暴,但很容易导致文件损坏)

所以为了愉快的使用树莓派,最好还是给它添加一个像电脑一样的电源键,百度了一大圈发现国内(没错,我就是针对国内,来来回回就那么几篇文章,还反反复复互相抄)只有一种添加电源键的方法,那就是写个python脚本、或者其他脚本、或者编译一个程序,反正原理都是一样的,让这个脚本(或程序)开机启动,程序中一直检测设置为电源键的GPIO,如果被触发则关机。这个方法虽然能解决问题,但真的low爆了!!!而且只能关机,不能开机。

在这里跟大家分享一个非常优雅,能关机也能开机的方法:
打开并仔细阅读 /boot/overlays/README
好了今天的分享到此结束,谢谢大家。


其实 /boot/overlays/README 里面已经说的很详细了,为了造福广大人民群众,我就整理一下。

不少人看见英文就头疼,而且这个文件有上千行,很少有人会仔细阅读,这里我就只把电源相关的内容摘录出来(不同版本系统文件的内容略有不同):

Name:   gpio-shutdown
Info:   Initiates a shutdown when GPIO pin changes. The given GPIO pinis configured as an input key that generates KEY_POWER events.This event is handled by systemd-logind by initiating ashutdown. Systemd versions older than 225 need an udev ruleenable 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 systemcan be powered up again by driving GPIO3 low. The defaultconfiguration uses GPIO3 with a pullup, so if you connect abutton 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,<param>=<val>
Params: gpio_pin                GPIO pin to trigger on (default 3)active_low              When this is 1 (active low), a fallingedge generates a key down event and arising edge generates a key up event.When this is 0 (active high), this isreversed. 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 anexternal pullup.

这里已经说得很明白了,只要在 /boot/config.txt 中添加相关配置就能实现关机。

比如像这样:

# 使用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,目前我没有找到自定义其他开机键的方法。
# 使用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爆的开关机按键方案吧!

给树莓派添加开关机键相关推荐

  1. Android 系统(151)----添加开关机铃声

    一.制作bootanimation.zip(windows)和准备开机铃声bootaudio.mp3 1.新建文件夹:bootanimation 2.在文件夹bootanimation中新建文件夹pa ...

  2. 直接按开关机键重启服务器

    出现了这个界面: 按F1 进入系统

  3. 给树莓派添加一个开、关机按键(改进版本)

    声明 本文由晓宇(xiaoyu_ebox)原创,转载及引用内容请注明出处,并标明本站网址.文中程序仅供学习使用. 关键词 树莓派 开关键 开关机按键 修改开关键 GPIO17开关键 问题起因 一直以来 ...

  4. 计算机关机键 自动重启,电脑按了关机键后电脑又自动重启了,怎么处理 啊

    一般关机重启有两种,一个是关机前的操作卡了引起的,另一个是每回关机都是重启,下面分别说一下. 1)关机前电脑卡引起的: 玩游戏.看视频.或操作大程序.或电脑用的时间长了,这时是很卡的,您要有一些耐心等 ...

  5. 计算机休眠变关机,电脑如何按关机键变成休眠

    电源键,早已经司空见惯的按钮,其实我们可以自己设置按下电源按钮后的功能,比如关机.休眠睡眠,甚至是无任何操作,如果发现电源键有异常,也可以来这里管理,下面就由学习啦小编跟大家分享电脑按关机键变成休眠的 ...

  6. 怎么使用计算机开机关机,笔记本电脑怎么开关机_笔记本电脑正确的开关机步骤-win7之家...

    我们在使用笔记本电脑之后,都会进行开关机,看似简单的开关机,如果方法不正确的话,就会对电脑使用寿命有影响,所以正确的开关机可以帮助我们延长电脑使用寿命,那么笔记本电脑怎么开关机呢?针对这个问题,本文给 ...

  7. 计算机强制关机原理,电脑远程开机 ( 与开关按键作用一样可强制开关机 , 非网络唤醒(WOL) ) (ESP32 8266)...

    远程开关及功能, 而且是直接控制主机开关机键, 而不是使用 `Wake On LAN(WOL)` 的功能, 这样的好处是有绝对的控制权,就算电脑死机,也可以触发长按强制关机的命令,而且也不会出现`WO ...

  8. 服务器经常开关机会影响吗,频繁给手机重启/开关机,会对手机产生危害吗?...

    原标题:频繁给手机重启/开关机,会对手机产生危害吗? 频繁的给手机重启/开关机,对手机的危害可以忽略不计,因为如今的智能手机没那么脆弱,并不会因为你频繁开关机就造成损坏,非要说"危害&quo ...

  9. python语音控制智能家电_Python 树莓派智能音箱语音控制电脑开关机-Python 实用宝典...

    完成下面这个有趣的实验,你所需要的东西有: 1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部 ...

最新文章

  1. swift 语言评价
  2. 使用qwt作曲线图——有网格线背景的画法
  3. getDeclaredField和getField的区别
  4. UpdatePanel里使用FileUpload
  5. Ehcache 整合Spring 使用页面、对象缓存
  6. 100个网络基础必备知识 ,值得收藏!
  7. java ee maven_针对新手的Java EE7和Maven项目–第8部分
  8. 人群频率 | gnomAD数据库简介 (一)
  9. Django:模型层ORM,创建模型类,字段类型
  10. CSS定位中“父相子绝”
  11. 斑斓中国BlenderCN项目库
  12. python学习之路四(类和对象1)
  13. Android UI:使用矢量图,抛弃PNG
  14. CAD贱人工具箱6.0免注册
  15. python:BeautifulSoup解析爬取网页文章demo
  16. php编写出一个时钟,用HTML5实现一个时钟
  17. 设置透明主题引起动画失效以及打开其他应用闪现桌面图标的问题
  18. java modifier access_Java中的默认访问修饰符是什么? (What is the default access modifier in Java?)...
  19. Python numpy函数:shape用法(简单样本及样本对应变量场景)
  20. 从内存角度深入看结构体(window/linux)大小

热门文章

  1. 计算机 屏幕卡住,电脑屏幕突然卡死应该怎么办?
  2. OSChina 周四乱弹 —— 你的车我很喜欢,谢谢司机
  3. 抱歉,Xposed真的可以为所欲为——3.微信运动占领封面出售广告位(转载)
  4. ssh 安全配置 以及ssh key 认证登录
  5. 基于特征工程完成对贷款数据集Lending Club的预处理
  6. 教育技术专业网站地址大全
  7. 用C语言编写你自己内核
  8. Vue + Element-UI —— 项目实战(零)(项目概述)
  9. 给孩子打印试卷用什么软件?
  10. mathtype软件