需求
树莓派再省电,到了60mA估计也到头了。相比uA级别的单片机来说,树莓派就是电老虎。因此,在不需要树莓派工作的时候,就给树莓派彻底断电。
当需要树莓派工作的时候,给她上电,让她自动启动一个python程序,处理完成后再关机,被断电。
因此,需要设置一个可以上电开机后自动启动的python程序。
查询资料
查询关键词:树莓派 开机启动程序;开机自动启动程序
似乎有多种方法可以实现开机自启动程序。有的是自动启动bash脚本,有的是启动python程序。
下面是主要参考的文章:
几种设置树莓派开机自启的方法_嵌入式技术在路上-CSDN博客_树莓派开机自启动blog.csdn.net
树莓派开机程序自启动的2种方案!_欢迎来到小木虫1314的博客-CSDN博客_树莓派开机启动blog.csdn.net
测试条件
硬件 raspberry pi zero W V1.1
软件:采用官网raspberry pi imagerV1.3烧写的Raspberry PI OS(32 bit)
测试时间:2020/07/15
实现方法
看到上面的文章有这样一句话:用rc.local或桌面应用的方法操作比较简单,但是效果并不好,而通过服务配置的方式,效果良好。
还是决定采用服务配置的方式自动启动。详细步骤如下:
1,编写自己要开机启动的python程序,例如你的python程序名字为:yourpythonprogram.py。
2,然后执行 sudo chmod +x yourpythonprogram.py命令赋予操作权限。
3,编辑无后缀的bash文件yourautostart,并且将该文件放在/etc/init.d 目录下。例子如下:
#!/bin/bash
### BEGIN INIT INFO
# Provides: yourautostart
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Auto Start Test
# Descrption: This service is used to test auto start service
### END INIT INFO
case "$1" in
start):
echo "Stat"
nohup /usr/bin/python3 /home/pi/yourpythonprogram.py &
;;
stop):
echo "Stop"
#killall singlepic2baiduyun.py
echo "Usage: service start_tool start|stop"
exit 1
;;
esac
exit 0
4,给予刚次你建立的bash文件执行权限:sudo chmod +x yourautostart 。
4,执行sudo update-rc.d yourautostart defaults 将该服务添加到自启动项。
注意:
1,你编写python程序时候,可能需要安装的包或者程序。切记采用安装的时候用sudo获取全局权限,免得后续启动程序因为权限或者依赖关系导致运行不起来。
2,开机要启动的python程序,开头最好添加一个延时语句,如sleep(20),等待其他启动程序运行完成,防止你的程序依赖其他启动程序的功能,导致你的程序启动失败。
3,bash文件中,启动服务的那个语句最后面有个&,不要忘记添加。
4,运气不好就要再去查查具体的问题了。有的时候需要试2次,如果同样的结果再去换其他方法。