樹莓派打造mini廣播(FM)系統


樹莓派打造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這個播放頻率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM