樹莓派 FM 發送機小電臺背後的原理解析

樹莓派 FM 發送機小電臺背後的原理解析

介紹

在知乎上有個問題 你在 GitHub 上看到過的最有意思的項目是什麼? 我介紹了個很有意思的無線 FM 電臺的項目,可以在不借用其他外部設備的情況下,通過代碼實現將樹莓派變爲 FM 小電臺。

但是作者只是在博客中介紹了大致的原理。於是我搜遍整個網絡,發現大多數的相關文章只是教你如何去編譯運行代碼,對背後的原理卻是隻言片語,含糊不清。

作爲好奇寶寶,我查閱了許多芯片手冊和論壇文章,又翻了翻以前學過的《天線原理》對背後的原理做了一下歸納和總結。

概念名詞解釋

首先是一些基本的概念

  • FM: 調頻(Frequency Modulation) 是一種以載波的瞬時頻率變化來表示信息的調製方式,載波的頻率跟隨輸入信號的幅度直接成等比例變化。FM Radio 就是我們熟悉的調頻收音機。
  • PWM: 脈衝寬度調製(Pulse Width Modulation) 是使用數字源生成模擬信號的方法。主要由 2 個參數來定義:佔空比頻率。如果以保持一定的速率開關數字信號並且保持一定的佔空比,那麼輸出看起來就像恆定電壓模擬信號。
  • GPIO: 通用型輸入輸出(General-purpose input/output),引腳可以由程序控制作爲通用輸入(GPI)或者通用輸出(GPO)。
  • CPU: 中央處理器(Central Processing Unit),相當於樹莓派的大腦,功能主要是解釋計算機指令以及處理計算機軟件中的數據,負責與外圍設備通信。樹莓派使用的是高通 BCM28XX 系列的 CPU。
  • DMA: 直接內存訪問(Direct Memory Access)這些設備可以執行涉及主內存和其他設備的數據傳送。由於設備執行這些操作的過程中無需藉助於 CPU,因此該類型的數據傳送稱爲直接內存訪問。簡單說就是不用 跟 CPU 打招呼就可以直接訪問內存。

HOW?

根據麥克斯韋的電磁場理論

  1. 變化的磁場能夠在周圍空間產生電場,變化的電場能夠在周圍空間產生磁場。
  2. 隨時間均勻變化的磁場(電場)產生穩定電場(磁場)。隨時間不均勻變化的磁場(電場)產生變化的電場(磁場)。
  3. 變化的電場和變化的磁場總是相互關係着,形成一個不可分割的統一體,這就是電磁場。

隨時間變化的電場產生磁場,而隨時間變化的磁場又產生電場,兩者互爲因果。這種不斷轉化的場統稱爲電磁場。這種相互的轉化形成電磁振盪。

所以如果在樹莓派的 GPIO 上,通過軟件控制以一定頻率輸出高低電平(0/1),再加上適當長度的天線(一根杜邦線即可)就可以將能量以電磁波的形式發射出去。

FM 結構圖

由圖可知,組成一個 FM 發射機系統,樹莓派需要

  • 信號採樣和 FM 調製所需的時鐘
  • 可以通過編程控制電平變化的 GPIO
  • 一段可以將電磁波發射出去的天線

時鐘

目前絕大多數的的微處理器都有擴頻時鐘(Spread-spectrum clock),目的是爲了降低電磁干擾(EMI),在樹莓派 BCM28XX 系列芯片上,擴頻時鐘的範圍爲 1MHz 到 250MHz,這正好用作 FM 的載波信號。

爲了減少 CPU 佔用,作者對程序進行了改進,使用樹莓派 DMA 產生基礎時鐘。

信號採樣

由於 FM 廣播發送的是音頻信號,所以先使用 228 kHz 的採樣頻率對信號進行採樣(滿足奈奎斯特採樣定理),帶寬爲 15 kHz。

調頻

基帶信號 xm(t)x_{m}(t),載波頻率 fcf_{c},正弦載波爲xc(t)=Accos(2πfct)x_{c}(t)=A_{c} \cos \left(2 \pi f_{c} t\right) 將基帶數據信號與載波結合起來得到了傳輸信號

y(t)=Accos(2π0tf(τ)dτ)=Accos(2π0t[fc+fΔxm(τ)]dτ)=Accos(2πfct+2πfΔ0txm(τ)dτ) \begin{aligned} y(t) &=A_{c} \cos \left(2 \pi \int_{0}^{t} f(\tau) d \tau\right) \\ &=A_{c} \cos \left(2 \pi \int_{0}^{t}\left[f_{c}+f_{\Delta} x_{m}(\tau)\right] d \tau\right) \\ &=A_{c} \cos \left(2 \pi f_{c} t+2 \pi f_{\Delta} \int_{0}^{t} x_{m}(\tau) d \tau\right) \end{aligned}

其中 f(τ)f(\tau) 爲傳輸信號的瞬時頻率,fΔf_{\Delta} 爲頻偏表示相對載波頻率 fcf_{c} 的最大頻率偏移。

調頻輸出的是模擬信號,利用時鐘產生 PWM 調整佔空比和頻率,就可以利用數字信號生成模擬信號。

樹莓派天線長度

  • 波長λ=c/f\lambda=c/f
  • 偶極子天線:製作偶極子天線時,會通過工作波長來確定天線的長度。最常見的偶極子天線是半波天線,它的總長度近似爲工作波長的一半,即 L=λ/2L=\lambda / 2

如果需要發射 100MHz 的 FM 信號,根據上面的公式來計算,就需要 1.5m 長的天線。

>>> 3*10**8 / (2 * 100 * 10**6)
1.5

所以理論上如果給樹莓派 GPIO(PIN4) 加上了一根 1.5M 的天線,那麼就可以輸出最大功率的 FM 信號。

不要這麼做,會干擾正常頻段!

傳播距離估計

首先需要計算有效全向輻射功率(EIRP)

EIRP=PLoss+GEIRP = P - Loss +G

其中 PP 爲發射機的輸出功率(dBmdBm),LossLoss 爲發射機輸出端與天線饋源之間的饋線損耗(dBdB),GG 爲天線的發送增益(dBidBi)。求出 EIRP 後可以進而獲得自由空間路徑損失(Free Space Path Loss,FSPL)。

但是使用這個公式估算,意義不是太大。實際測量,如果使用一根 10cm 的杜邦線作爲天線,一個樓梯拐角信號就已經非常弱了。

總結

  • 深深佩服第一個作者的 Geek 範和莫大的腦洞;
  • 不要干擾正常頻段,屬於違法行爲!

參考

代碼請見參考鏈接

歡迎關注我的個人公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章