樹莓派打造mini廣播(FM)系統
注意相關法律限制功率大小和頻段.,以下只能用於測試目的
github項目:
https://github.com/miegl/PiFmAdv
安裝:
apt-get update
``apt-get install git libsox-fmt-mp3 sox libsndfile1-dev `
為了使 PLLC調制更穩定 推薦修改gpu頻率來匹配安全頻率.(使用pllc調制對的時候可能會使電壓降低到安全電壓以下可能會崩潰.) /boot/config.txt
加入 gpu_freq=250
git clone https://github.com/Miegl/PiFmAdv.git
cd PiFmAdv/src
make clean
make
測試 sudo ./pi_fm_adv
使用手機或收音機調整頻率到87.6MHZ (默認頻率) 默認使用gpio4 來發射信號的.但也可以修改為 4, 20, 32, 34 如修改為gpio32 使用參數 --gpio 32
即可.
因為相關法律限制我們不可以在相應的gpio發射信號口接饋線或信號傳輸設備!
播放在線的音頻.
sox -t mp3 http://www.linuxvoice.com/episodes/lv_s02e01.mp3 -t wav - | sudo ./pi_fm_adv --audio -
也可以播放本地的音頻文件如mp3格式.
sox -t mp3 test.mp3 -t wav - | sudo ./pi_fm_adv --audio -
github上很早就有大神做了網絡點歌台.
https://github.com/ma6174/fmpi
該項目簡介:
簡介
前段時間有人發貼說用樹莓派可以發射FM收音機信號, 於是便整來玩玩,發現效果還不錯,於是想擴充一下功能。
網上實現的FM發射功能是有局限性的:
- 只能播放wav格式文件,並且wav文件必須是
16 bit 22.5kHz Mono
格式的。 - 只支持播放本地音頻文件,或者使用
-
從終端讀取音頻
我設想的或已經實現的功能是這樣的:
- 支持mp3格式
- 支持流媒體,或者說支持直接播放網絡上的音樂
- 可以添加音樂,方便管理
- 可以批量添加歌曲
- 可以播放局域網內電腦上的音樂
- 自動根據歌名在線搜索歌曲並播放
- 有一個web頁面,允許任何人添加自己喜歡的歌曲
- web頁面顯示當前正在播放的歌曲和將要播放的歌曲列表
- 當播放列表里面沒有歌曲的時候自動隨機播放一首歌曲,保證連續播放
- 可以跳過正在播放的歌曲播放下一曲
安裝我做的系統之后你就可以用樹莓派做服務器, 發送廣播,播放流行歌曲或者英語聽力(或者法律允許播放的東西) 告訴親朋好友一個網址,然后他們就能在上面點歌。 四六級沒過的朋友可以添加四六級聽力,模擬真實考試環境。 或者放到敬老院里面,給老年人播放戲曲。 除此之外,只要程序運行着,你就能用收音機聽到音樂, 不用天天費神去網上找歌了。 這樣也為你的手機節省好多存儲歌曲的空間,因為有了樹莓派和我的點歌系統, 你用手機上的收音機就能聽到想聽的歌曲。 我的系統不會給樹莓派增加任何垃圾,所有網絡歌曲不緩存, 不用擔心歌曲過多而將存儲卡填滿。
關鍵技術與原理
因為樹莓派只支持wav格式音樂,所以要將mp3格式轉換成wav格式。
但是一般軟件轉換效率比較低,樹莓派CPU比較差,轉換時間更長。
后來我找到一個比較好的解決方案,用mpg123這個軟件進行解碼, 解碼之后輸出到終端上,這時就已經轉換成wav格式了。 然后樹莓派的pifm程序設置成從終端讀取音頻, 這樣再通過一個管道將兩個程序連起來,就能實現一邊解碼一邊播放
另外,mpg123的功能比較強,支持直接播放網絡音樂, 也就是說,只要給mpg123傳遞一個歌曲url,就能實現邊下載邊播放
上面的文字用一條命令總結就是:
mpg123 -m -C -q -s 歌曲地址或url | sudo pifm - 頻率 歌曲采樣率
例如
mpg123 -m -C -q -s /home/pi/aaa.mp3 | sudo pifm - 98.5 44100
mpg123 -m -C -q -s http://abc.com/123.mp3 | sudo pifm - 98.5 44100
上面的命令看起來很簡單,費了半天勁才鼓搗好,因為命令的參數很多, 組合起來讓他們協調工作就需要不斷嘗試!
解決了這個技術難題,下面的任務就簡單了,對於pythoner來說, 下面提到的東西都不叫事!^_^
簡單列一下:
- 歌曲是從搜狗mp3抓的,只要輸入歌曲的名字,自動搜索,返回歌曲url
- web管理界面用web.py實現,實時顯示正在播放的歌曲和歌曲列表
- 數據庫用sqlite3,用來保存用戶輸入的歌曲信息,方便日后數據分析
- 如果列表為空則從本地播放列表(文本文件)隨機選一個播放
安裝部署方法
為了簡化安裝部署,我專門寫了一個安裝腳本,就是setup.sh, 直接執行就能安裝。(注意,本系統樹莓派專用,請不要在電腦上執行此腳本)
wget https://github.com/ma6174/fmpi/archive/master.zip
unzip master.zip
cd fmpi-master
sudo bash setup.sh
這樣就自動安裝依賴的軟件
使用方法
運行的話可以直接執行程序里面的start.sh
:
sudo bash start.sh
然后在樹莓派的GPIO4這個引腳上插上一根杜邦線當天線
用ifconfig
命令察看你的ip地址,然后在瀏覽器上打開:http://樹莓派IP:8000/
, 可以看到正在播放的歌曲,然后你可以添加你想要收聽的歌曲。
打開收音機,調到FM 98.5
頻道,你就能聽到正在播放的歌曲了!
如果感覺這首歌不好聽,可以直接按樹莓派的鍵盤的q
鍵,自動播放下一曲
想終止程序的話按Ctrl + c
可以修改config.py修改默認的98.5這個播放頻率。