用树莓派的systemd服务来管理智能RGB彩灯程序

人工智能

636人已加入

描述

Hello, 依然关注我的朋友们,大家好,今天不仅是发个贴,还有一部分原因是我的新书上架京东了,这本书就是围绕树莓派来展开的,其中包含了和树莓派相关的GPIO引脚功能部分使用的一些简单应用,可以作为你手边的一个资料查询用书,也可以作为敲砖引玉之用,希望能激发你更深的脑洞...

顺便做个记录,最近在树莓派上添加了一个带RGB的风扇,原理是风扇内部包含一个ws281x的RGB彩灯, 通过GPIO18 引脚接入了树莓派, 需要通过编程控制彩灯显示RGB彩灯效果,但是每次开机后需要自己去配置,启动, 并且还要丢入后台避免占用终端,有时候开机后忘记了再想起来执行就有点儿烦。

因此,决定使用Linux系统的systemd服务来管理这个RGB彩灯的程序。

什么是systemd.service ? 又名: 服务单元配置。

在树莓派的Linux系统中,一般会在/lib/systemd/system/目录中存在一些名称以“ .service”结尾的单元配置文件, 这里面编写着一些由 systemd 控制和监督的进程的信息,以及你自定义的一些启动程序信息。
它包含了以下几个特点:

通用配置项在通用的 [Unit] 和 [Install] 部分进行配置。

服务特定的配置选项在 [Service] 部分进行配置。

附加选项列在 systemd.exec (5)中,它定义了执行命令的执行环境

在 systemd.kill (5)中,它定义了服务进程的终止方式

 systemd.resource- control (5),它为服务的进程配置资源控制设置。

如果启用了 SysV init compat,systemd 会自动创建包装 SysV init 脚本的服务单元。

注意,自己配置只需要编写一个服务名称与脚本名称相同,加一个“ .service”后缀的文件并配置一下简单的启动配置就好。

首先,讲述一下设备连接方式:

可以在树莓派上通过命令:

pinout

可以获取到如下信息,

Linux

然后针对树莓派链接的冰塔散热器的风扇

硬件连接已经清楚了,下面我们就要进行灯环的驱动配置了。

确保你的树莓派连接到互联网,这个需要保证你树莓派的IP,网关,和DNS地址正确,有时候就是因为DNS服务器不正确导致上网失败。可以通过下面的命令检查一下: 

然后在键盘上按下Ctrl + C终止。

也可以配置/etc/resolv.conf 里面的nameserver来配置DNS服务器地址。 

当树莓派能够正常联网后,打开一个终端,执行:

Linux

执行成功后,创建一个build目录并进行编译:

Linux

编译完成后,会在当前目录中生成一个‘test’ 文件,绿色的可执行文件。将其拷贝到/usr/bin/下,方便用户调用,不用编辑环境变量就可以执行了。这样就执行了moodlight并丢入后台,你会看到风扇灯光闪烁。。

Linux

但是当你关机后,这个灯光就消失了,那怎么让它开机能自动启动,并且还能通过我命令行简单的一条命令进行开启和关闭控制呢?到这里,我们就要进入主题了:systemd服务配置写起来!

进入系统服务配置目录并编辑一个名字为: minitower_moodlight.service的文件。
Linux

填写如下内容:

Linux

Linux

然后保存退出后执行:
Linux

这时候,你会看到一个系统服务叫minitower_moodlight在后台运行着,并且可以通过简单的执行下面的命令来停止:

Linux



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分