树莓派 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。

调频

基带信号 x m ( t ) x_{m}(t) xm(t),载波频率 f c f_{c} fc,正弦载波为 x c ( t ) = A c cos ⁡ ( 2 π f c t ) x_{c}(t)=A_{c} \cos \left(2 \pi f_{c} t\right) xc(t)=Accos(2πfct) 将基带数据信号与载波结合起来得到了传输信号

y ( t ) = A c cos ⁡ ( 2 π ∫ 0 t f ( τ ) d τ ) = A c cos ⁡ ( 2 π ∫ 0 t [ f c + f Δ x m ( τ ) ] d τ ) = A c cos ⁡ ( 2 π f c t + 2 π f Δ ∫ 0 t x m ( τ ) 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} y(t)=Accos(2π0tf(τ)dτ)=Accos(2π0t[fc+fΔxm(τ)]dτ)=Accos(2πfct+2πfΔ0txm(τ)dτ)

其中 f ( τ ) f(\tau) f(τ) 为传输信号的瞬时频率, f Δ f_{\Delta} fΔ 为频偏表示相对载波频率 f c f_{c} fc 的最大频率偏移。

调频输出的是模拟信号,利用时钟产生 PWM 调整占空比和频率,就可以利用数字信号生成模拟信号。

树莓派天线长度

  • 波长 λ = c / f \lambda=c/f λ=c/f
  • 偶极子天线:制作偶极子天线时,会通过工作波长来确定天线的长度。最常见的偶极子天线是半波天线,它的总长度近似为工作波长的一半,即 L = λ / 2 L=\lambda / 2 L=λ/2

如果需要发射 100MHz 的 FM 信号,根据上面的公式来计算,就需要 1.5m 长的天线。

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

所以理论上如果给树莓派 GPIO(PIN4) 加上了一根 1.5M 的天线,那么就可以输出最大功率的 FM 信号。

不要这么做,会干扰正常频段!

传播距离估计

首先需要计算有效全向辐射功率(EIRP)

E I R P = P − L o s s + G EIRP = P - Loss +G EIRP=PLoss+G

其中 P P P 为发射机的输出功率( d B m dBm dBm), L o s s Loss Loss 为发射机输出端与天线馈源之间的馈线损耗( d B dB dB), G G G 为天线的发送增益( d B i dBi dBi)。求出 EIRP 后可以进而获得自由空间路径损失(Free Space Path Loss,FSPL)。

但是使用这个公式估算,意义不是太大。实际测量,如果使用一根 10cm 的杜邦线作为天线,一个楼梯拐角信号就已经非常弱了。

总结

  • 深深佩服第一个作者的 Geek 范和莫大的脑洞;
  • 不要干扰正常频段,属于违法行为!

参考

代码请见参考链接

欢迎关注我的个人公众号

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值