買了個樹莓派3B+,裝好系統后灰落了好厚一層都不知道要干嘛。。。最近突發奇想:用樹莓派做一個音樂播放器,每天6:30-7:20自動播放英語聽力,強迫自己練習英語,也治治自己的懶床習慣,平時也可以用來聽聽歌。
准備工作:
1.樹莓派一個,並且己安裝好linux系統,並且己安裝好Python3環境;
2.音箱一個(AUX有線接口或藍牙音箱都行),連接到樹莓派上;
軟件環境搭建:
mtool是一個用python寫的音樂播放器,在gitee和github上開源,主要用命令行進行控制,這個很適合我們這個需求。
下載地址:https://gitee.com/shadowlesswalker/mtool.git
首先我們在電腦上用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端關閉樹莓派播放了,只能爬起來去拔電源嘿嘿嘿。。。。。