樹莓派開啟FM廣播台,廣播指定的音樂或實時語音 本教程僅供科研與學習交流之用,廣播功率很小。請務必遵守國家相關電信管理法規。 基本原理:從奧斯特、法拉第,到麥克斯韋,從電容、電感到電磁波天線。 本文配套B站視頻:子豪兄的樹莓派零基礎教程
樹莓派開啟FM廣播台,廣播指定的音樂或實時語音
【子豪兄的樹莓派零基礎教程】第5講:用樹莓派搭建FM廣播電台,播放音樂和實時語音
作者:張子豪(同濟大學在讀研究生)
博客文檔、源代碼、更新、勘誤,請看本教程Github代碼倉庫
知乎、簡書專欄:人工智慧小技巧
953712961
音效卡是幹啥的? 音效卡是將話筒接受到的外界聲音信號(連續的模擬信號)轉換為離散數字信號(數模轉換)並傳輸給計算機(樹莓派)進行處理的數字電路。USB音效卡就是通過USB口提供聲音功能(耳機、麥克風)的裝置。
音效卡是幹啥的?
在樹莓派的命令行界面依次運行以下八條命令
mkdir fm
cd fm
sudo git clone https://github.com/markondej/fm_transmitter
sudo apt-get install mpg123
sudo apt-get install gcc g++ make
cd fm_transmitter
sudo make
sudo apt-get install sox
注意,後文的所有命令都需要在fm/fm_transmitter目錄下執行。可以通過cd fm/fm_transmitter命令切換到這個目錄下。
fm/fm_transmitter
cd fm/fm_transmitter
sox acoustic_guitar_duet.wav -r 22050 -c 1 -b 16 -t wav - | sudo ./fm_transmitter -f 100.6 -
也可以把這條命令中的100.6改成其它數字,即可在新頻道上廣播。不要和已有電台頻率衝突。 也可以將你自己的wav格式的聲音文件放到/fm/fm_transmitter文件夾中,替換命令中的star_wars.wav文件。 WAV是最接近無損的音樂格式,所以文件也比較大。 在樹莓派GPIO的BCM4號引腳上接一條跳線,可以提升廣播效果。 本教程僅供科研與學習交流之用,廣播覆蓋範圍不超過十米。如想搭建大功率電台請遵守國家法律法規按正規流程申請備案。(請看文末聲明)
也可以把這條命令中的100.6改成其它數字,即可在新頻道上廣播。不要和已有電台頻率衝突。
sudo git reset --hard 71e7e23a0e
sox star_wars.wav -r 22050 -c 1 -b 16 -t wav - | sudo ./fm_transmitter -f 100.6 -
按ctrl+c結束廣播。
ctrl
c
git reset命令是使所在目錄回退到之前的指定版本,如果你想切換回最新版本,可以運行sudo git reset --hard 6111460命令。
git reset
sudo git reset --hard 6111460
在樹莓派的USB口插上USB音效卡,在USB音效卡的麥克風孔里插入麥克風,運行以下命令,在即可在調頻100.6MHz頻道廣播實時語音,你也可以把這條命令中的100.6改成其它數字,那樣就會在新頻道上廣播:
arecord -D plughw:1,0 -c1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 -
用移動電源給樹莓派供電,設置開機免密碼自動登錄和自動運行廣播腳本,將整個系統裝在書包里,即可實現走到哪裡,廣播開到哪裡(旅遊景點、重要會場講話、竊聽器、位置信標)。與無線供電或太陽能相結合,可以實現半永久性的竊聽廣播站。
應用領域:警用軍用情報、邊防與國家安全、智能安保安防、環境災害、地質災害預警
例如,大佬做講座的報告廳人滿為患,就可以做一個fm廣播站,讓堵在門外的人也能聽到實時語音。
例如,如果有竊賊或非法入侵者觸發了信號(如紅外探頭、微動開關等),就立刻開啟fm廣播電台。
例如,樹莓派每次開機的時候都在指定頻段廣播自己的ip地址。
本教程僅供科研與學習交流之用,廣播覆蓋範圍不超過十米。如想搭建大功率電台請遵守國家法律法規按正規流程申請備案。 中華人民共和國無線電管理條例 摘錄: 第五條 國家鼓勵、支持對無線電頻譜資源的科學技術研究和先進技術的推廣應用,提高無線電頻譜資源的利用效率。 第十四條 使用無線電頻率應當取得許可,但下列頻率除外: (一)業餘無線電台、公眾對講機、制式無線電台使用的頻率;
本教程僅供科研與學習交流之用,廣播覆蓋範圍不超過十米。如想搭建大功率電台請遵守國家法律法規按正規流程申請備案。
參考資料:知乎:樹莓派 FM 發射機小電台原理解析
信號採樣
PWM脈衝寬度調製(Pulse Width Modulation) 是使用離散的數字信號生成連續的模擬信號的方法。主要由 2 個參數來定義:占空比和頻率。如果以保持一定的速率開關數字信號並且保持一定的占空比,那麼輸出看起來就像恆定電壓模擬信號。
DMA: 直接內存訪問(Direct Memory Access)。不用跟CPU打招呼就可以直接訪問內存。
絕大多數的的微處理器都有擴頻時鐘(Spread-spectrum clock),目的是為了降低電磁干擾(EMI),在樹莓派 BCM28XX 系列晶元上,擴頻時鐘的範圍為 1MHz 到 250MHz,這正好用作 FM 的載波信號。
為了減少CPU佔用,作者對程序進行了改進,使用樹莓派 DMA 產生基礎時鐘。
基帶信號
,載波頻率
,正弦載波為
將基帶數據信號與載波結合起來得到了傳輸信號
其中
為傳輸信號的瞬時頻率,
為頻偏表示相對載波頻率
的最大頻率偏移。
調頻輸出的是模擬信號,利用時鐘產生 PWM 調整占空比和頻率,就可以利用數字信號生成模擬信號。
如果需要發射100MHz的FM信號,根據上面的公式來計算,就需要1.5m長的天線。
>>> 3*10**8 / (2 * 100 * 10**6) 1.5
所以理論上如果給樹莓派 GPIO(PIN4) 加上了一根 1.5m 的天線,那麼就可以輸出最大功率的 FM 信號。
首先需要計算有效全向輻射功率(EIRP)
其中 P 為發射機的輸出功率(dBm),Loss 為發射機輸出端與天線饋源之間的饋線損耗(dB),G 為天線的發送增益(dBi)。求出 EIRP 後可以進而獲得自由空間路徑損失(Free Space Path Loss,FSPL)。
但是使用這個公式估算,意義不是太大。實際測量,如果使用一根 10cm 的杜邦線作為天線,一個樓梯拐角信號就已經非常弱了。
讓樹莓派說出自己的ip地址 Bilibili視頻:【熟肉】教你用樹莓派製作可以進行語音直播的FM調頻無線電台 知乎:樹莓派 FM 發射機小電台原理解析國外參考文獻:
讓樹莓派說出自己的ip地址