为树莓派打造一个安全关机的功能,不需要命令行,不需要额外电路板!
来源:互联网 发布:a5淘宝客 编辑:程序博客网 时间:2024/06/14 06:29
在刚刚拿到树莓派的调试期,最难以忍受的就是各种“tmd怎么又连不上了” “诶这系统有问题” 这些乱七八糟的问题了,如果有显示器还好,如果没有显示器,然后诸如ssh连接之类的东西又不能正常运行,这可怎么好好的sudo halt啊。。。
博主便是如上这些悲惨经历的受害者,因为整天拔电关机导致存储卡会经常出现一些莫名其妙的问题,简直是崩溃的
于是我便上网搜索除命令行之外的关机方式,找到了诸如“关机按键”的方案,感觉很巧妙 但是我并不想让我的树莓派时时刻刻都接着面包板和电线 于是。。。
为什么不用跳线板呢????
好了说正经的,其实我们可以找一个贴近GND的IO口(如GPIO 7 对应BCM码为4)然后给这个io口声明一个下降沿中断,在中断中执行关机命令 然后将这个脚本设置为开机自启就可以啦!
以下是我编辑的代码
#!/usr/bin/pythonimport RPi.GPIO as GPIOfrom os import systemdef fun(arg): GPIO.cleanup() print(arg) system('sudo halt') print('success')GPIO_PIN=4GPIO.setmode(GPIO.BCM)GPIO.setup(GPIO_PIN,GPIO.IN,pull_up_down=GPIO.PUD_UP)GPIO.add_event_detect(GPIO_PIN,GPIO.FALLING,bouncetime=2000,callback=fun)while True: pass
- bouncetime相当于按钮的防抖 单位为ms 因为我们是直接短接gnd 所以根本没有抖的一说 所以将此参数设置为2000防止一不小心碰到就关机
将脚本设置为开机自启
虽然说脚本已经写好了 但是我们需要将这个脚本设置为开机自启
开机自启对于新手而言最粗暴的方法就是sudo nano /etc/rc.local 啦
首先我们需要给予文件可执行权限
chmod 777 xxx.py
我们在该文件的exit 0 之前添加这么一句:
sudo nohup /xxx/xxx/xxx/xxx/xxx.py &
- 因为该python脚本为后台脚本 需要持续执行 所以用nohup为其创建后台进程。&的意义为保留该进程并继续之后的命令
将路径和文件名改好 重启试一下“短接板关机法吧!”
阅读全文
0 0
- 为树莓派打造一个安全关机的功能,不需要命令行,不需要额外电路板!
- mac为啥不需要关机?
- 不需要额外空间的交换函数的弊端
- 横屏EditText不需要额外的输入框,软键盘判断
- java导出excel不需要额外jar包
- 不为不需要的东西付出代价
- 用pureftpd+pureDB虚拟用户,建立一个简单安全(不需要数据库支持)的linux ftp站
- 整数数组中,每个元素均出现两次,除了一个元素例外,如何找出这个元素?能否设计一个线性时间的算法,且不需要额外的存储空间?
- 一个不需要cookie与js却能实现类似cookie功能的手段
- 不需要数组和额外空间的单向链表逆序实现
- [Linux] 提取应用程序(exe)图标及icon转png,不需要额外的工具
- jdk.tools-1.8.jar 在jdk的中找到 不需要额外下载
- 不需要DLL的全局钩子完成鼠标截屏功能
- 分页功能的实现方法(不需要插件)
- 去掉不需要的输入法。
- 不需要绊脚的合作
- 不需要persistentence的字段
- 不需要你的同情
- 发送Ajax请求
- codeforces [Gym-100814E]
- Lua 为什么在游戏编程领域被广泛运用?
- 多校5 HDU-6095 Rikka with Competition
- 框架嵌套事务
- 为树莓派打造一个安全关机的功能,不需要命令行,不需要额外电路板!
- 6---LeetCode【tag: Array】【Rotate Array】|C语言|总结
- SpringMVC启动过程详解
- 20. Valid Parentheses
- Linux 挂载移动硬盘,使其内部文件有可执行权限
- Java并发编程好文
- log4j2使用
- 零基础入门深度学习(1)
- 实现一个Android锁屏App的难点总结