用 Raspberry Pi 做一個小型 FM 調頻廣播電臺
今天和同學聊天談到 Raspberry Pi 樹莓派的一個有趣玩法:把它變成一個小型的 FM 調頻發射站!想起自己初中時也有過這個想法,但是實踐過程中遇到了很多問題,摸索了很久才成功做出來。於是我便想寫篇教程,把我的製作經驗告訴大家,讓大家更快速簡單地實現這一想法。
你需要準備
1. 一隻樹莓派
2. 一根用來充當天線的 20cm 母頭杜邦線
步驟
1. 下載由國外玩家 Oliver Mattos 與 Oskar Weigl 製作的 PiFM 開源代碼模塊(下載地址:百度雲)
2. 將其解壓後得到的 pifm 文件夾拷貝至樹莓派的 SD 卡上
3. 給樹莓派的 GPIO 4 引腳插上準備好的杜邦線
4. 在終端中進入 pifm 目錄後執行下列語句
sudo ./pifm sound.wav 103.3
5. 此時打開你的收音機設備,調到 103.3MHz 應該就能聽到美妙的音樂了
參數說明
sound.wav
指的是示例音頻文件的路徑,可以把它替換成自己的音樂。但要注意只能使用 16 位單聲道的 WAV 文件!
103.3
指的是發射頻率。樹莓派硬件上可支持的範圍爲 1MHz-250MHz,不過中國境內大部分收音機只能接收到 76MHz-108MHz 的頻率,所以推薦在其中挑選一個空閒頻率來使用。
如果你想播放立體聲 WAV 格式並指定採樣率可以使用下列語句
sudo ./pifm left_right.wav 103.3 22050 stereo
22050
指的是音頻採樣率是 22050Hz。
stereo
指的是以立體聲模式播放該文件。如果你希望播放單聲道文件,把它改爲 mono 或刪除這一參數即可。
如果你想播放 MP3 格式可以使用下列語句
ffmpeg -i input.mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - 103.3
這裏使用了 ffmpeg 解碼器,它的作用是把“input.mp3”文件以模式 s16le 與 22050Hz 的採樣率進行實時解碼並作爲 PiFM 模塊的輸入。由於 s16le 的模式代表生成 16 位的單聲道 WAV 格式,所以此處不需另外填寫參數。
還可以通過 USB 接口的麥克風來實現喊話功能
arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm - 103.3
用途
它可以被做成一臺便攜式的 FM 發射器,隨身攜帶來傳遞你的個性化聲音。
它可以用來做對講機,住宿學生黨的神器。
它可以用來做校園廣播。
……
常見問題
1. 收音機裏聽到的全是雜音
請從以下兩個方面嘗試:更換一個頻率,檢查天線接觸是否良好。
2. 執行語句時提示“找不到命令”或收音機中噪音消失但沒有聲音
通常是因爲你沒有足夠的權限來運行 pifm,或是音頻文件路徑有誤。可以嘗試使用下述語句給文件提權。
sudo chmod 777 ./pifm
3. 運行時收音機中發出響亮的“嗶”聲
可能是因爲你亂來被和諧了……開個玩笑~多半是因爲文件被佔用無法讀取,就像一個正在被使用的文件不能被刪除一樣。最簡單的方法就是重啓系統。
4. 聽到的聲音播放速度不正常
基本是由於你選擇了錯誤的採樣率及聲道,仔細檢查一下吧!
5. 收音距離不夠長
可以嘗試延長杜邦線,把它纏繞在水管或是晾衣杆上,效果會好很多。
6. 聽說法律規定私人搭建大功率無線電發射站是要被查水錶的,是不是真的快告訴我
放心啦,樹莓派的發射功率很小的,幻想着能用它來干擾衛星或是航天飛機什麼的基本上是不可能的,所以 ZF 自然不會來找你麻煩的。不過,請注意調頻內容一定要積極向上哦!
7. 我還有問題
推薦你到模塊開發者提供的 Wiki 上逛逛,說不定會有不少收穫哦~
轉自“鏡態極研”