为树莓派打造一个安全关机的功能,不需要命令行,不需要额外电路板!

来源:互联网 发布: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
原创粉丝点击