欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用树莓派打造一个音乐播放器

程序员文章站 2022-09-27 08:32:11
买了个树莓派3B+,装好系统后灰落了好厚一层都不知道要干嘛。。。最近突发奇想:用树莓派做一个音乐播放器,每天6:30-7:20自动播放英语听力,强迫自己练习英语,也治治自己的懒床习惯,平时也可以用来听听歌。 准备工作: 1.树莓派一个,并且己安装好linux系统,并且己安装好Python3环境; 2 ......

买了个树莓派3b+,装好系统后灰落了好厚一层都不知道要干嘛。。。最近突发奇想:用树莓派做一个音乐播放器,每天6:30-7:20自动播放英语听力,强迫自己练习英语,也治治自己的懒床习惯,平时也可以用来听听歌。

准备工作:

1.树莓派一个,并且己安装好linux系统,并且己安装好python3环境;

2.音箱一个(aux有线接口或蓝牙音箱都行),连接到树莓派上;

软件环境搭建:

是一个用python写的音乐播放器,在gitee和github上开源,主要用命令行进行控制,这个很适合我们这个需求。

下载地址:

首先我们在电脑上用ssh工具(我用的putty)登陆到树莓派,不会的可以另行百度树莓派ssh教程。输入以下命令:

cd /usr

git clone https://gitee.com/shadowlesswalker/mtool.git   mtool   #下载mtool源代码

cd mtool

ln -s -f  /usr/mtool/mtoolctl   /usr/bin/mtool   #创建软链接(快捷方式)

然后安装mtool依赖包:pygame,configparser(有的话就不用安装了)

sudo apt install python3-pygame

pip3 install configparser

至此,mtool就算安装完成了。mtool是一个c/s(服务器/客户端)模式的程序,服务器开启后会监听udp端口(默认为127.0.0.1:6666),然后接受来自客户端的命令去控制播放。

我再来设置一下服务器端的开机自启动:

vim ~/.bashrc

在最后面添加命令:

nohup mtool --server start > /usr/mtool/log &        #其中nohup与&用于后台运行程序

配置音乐文件夹路径

先来配置一下音乐文件夹的位置,打开/usr/mtool/mtool.conf,在里面自行修改:

[player]         #这个节设置播放器参数

list = music      #设置默认的播放列表,列表名必须在后面的playlists节中出现

volume = 0.2    #默认音量

port = 6666      #默认udp端口,用于服务器接受命令

index = 2        #当前播放位置

next = next     #默认播放模式:next|loop|random 对应顺序播放|单曲循环|随机播放

[playlists]       #播放列表预设节,可设置多个,格式为:列表名=文件夹路径

music = music        #播放列表名为music,路径为./music

en-listen = /var/share/en-listen    #我的英语听力资源文件的路径

开始使用mtool命令

source  ~/.bashrc

nohup mtool --server start > /usr/mtool/log &

#先手动启动服务端,虽然前面配置了开机自启动,但也只能下次开机才能生效

mtool -c info   #查看服务器状态,可用来测试服务器是否己启动,成攻类似如下显示:

使用树莓派打造一个音乐播放器
 


mtool -c play  #播放

mtool -c vol=0.5   #设置音量

mtool -c lists  #查看可用的播放列表

mtool -c list     #列出当前播放列表中的音乐文件

mtool -c next=random|next|loop   #设置播放顺序

mtool -c playf=zui      #切换为单曲循环(next=loop),并且播放文件名中包含zui的文件

基本的用法就这样了,我们可以通过在电脑上控制树莓派播放音乐了,但是电脑老开着也不好,况且躺在床上怎么办呢?我们可以在手机上安装ssh工具,比如juicessh(推荐),阿里云app。

设置树莓派定时播放

我们使用linux内置的计划任务命令crontab来设置定时播放功能。

说到定时任务,那我们首先得确认自己树莓派的时间是准确的。嘿嘿嘿。。。可惜,树莓派的时间一般都是不准确的。。。因为一般电脑在断电后时钟会由cmos电池供电继续跑,但是树莓派断电后时间就会丢失。即然时间都不准确,又怎么能正常执行定时任务呢。。。

所以我们首先解决时间问题-ntp(网络时间同步)

dpkg-reconfigure tzdata    #时区设置,配置文件在/etc/timezone,设置为中国上海时区

date    #查看时间,确保我们的时区为中国时区

开启ntp服务

apt install ntp

ntpdate ntp.ntsc.ac.cn       #同步中国国家授时中心新(ntp服务器ntp.ntsc.ac.cn)

或者在/etc/ntp.conf中添加ntp服务器地址

重启ntp服务:

systemctl enable ntp    #ntp开机自启动

systemctl start ntp      #启动ntp服务

date    #查看系统时间,应该正确了

再来设置定时任务:

先写一个切换播放列表、改变音量、开时播放的脚本,用来被定时任务调用:

vim  /usr/mtool/start-en-listen

脚本内容很简单:

_dir="/usr/mtool"

mtool -c playlist=en-listen    #切换到英语听力播放列表

mtool -c vol=1.0            #音量放到最大(嘿嘿嘿)   

mtool -c next=random    #设置随机播放

mtool -c play     #开始播放

接下来添加定时任务

crontab -e     #将打开编辑器,在最后添加定时任务:

30 6 * * * /usr/mtool/start-en-listen >> /usr/mtool/log.client       #每天早上6:30开始播放

20 7 * * * mtool -c stop                          #每天早上7:20停止播放

 

终于。。。大功造成!!!!每天早上无法安心地睡懒觉啦啦啦!!!

当然,我们还可以添加几行代码,每天早上6:30自动关闭ssh服务,7:20再打开,这样想睡懒觉时就无法从手机ssh端关闭树莓派播放了,只能爬起来去拔电源嘿嘿嘿。。。。。