需求

树莓派再省电,到了60mA估计也到头了。相比uA级别的单片机来说,树莓派就是电老虎。因此,在不需要树莓派工作的时候,就给树莓派彻底断电。

当需要树莓派工作的时候,给她上电,让她自动启动一个python程序,处理完成后再关机,被断电。

因此,需要设置一个可以上电开机后自动启动的python程序。

查询资料

查询关键词:树莓派 开机启动程序;开机自动启动程序

似乎有多种方法可以实现开机自启动程序。有的是自动启动bash脚本,有的是启动python程序。

下面是主要参考的文章:


几种设置树莓派开机自启的方法_嵌入式技术在路上-CSDN博客_树莓派开机自启动blog.csdn.net


树莓派Python自启动做更改程序就会关停 树莓派python程序开机自启动_python


树莓派开机程序自启动的2种方案!_欢迎来到小木虫1314的博客-CSDN博客_树莓派开机启动blog.csdn.net

树莓派Python自启动做更改程序就会关停 树莓派python程序开机自启动_树莓4派开机动画_02


测试条件

硬件 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次,如果同样的结果再去换其他方法。