lou 发表于 2020-4-22 11:58:12

Geek专栏:树莓派 FM 发送机小电台背后的原理解析

本帖最后由 lou 于 2020-4-22 13:09 编辑

Geek专栏:树莓派 FM 发送机小电台背后的原理解析


今天Geek专栏为大家带来
乐聚机器人王松博士的
“树莓派 FM 发送机小电台背后的原理解析”


介绍

在知乎上有个问题 你在 GitHub 上看到过的最有意思的项目是什么? 我介绍了个很有意思的无线 FM 电台的项目,可以在不借用其他外部设备的情况下,通过代码实现将树莓派变为 FM 小电台。
但是作者只是在博客中介绍了大致的原理。于是我搜遍整个网络,发现大多数的相关文章只是教你如何去编译运行代码,对背后的原理却是只言片语,含糊不清。
作为好奇宝宝,我查阅了许多芯片手册和论坛文章,又翻了翻以前学过的《天线原理》对背后的原理做了一下归纳和总结。

概念名词解释

首先是一些基本的概念

FM:

调频(Frequency Modulation) 是一种以载波的瞬时频率变化来表示信息的调制方式,载波的频率跟随输入信号的幅度直接成等比例变化。FM Radio就是我们熟悉的调频机。

脉冲宽度调制(PulseWidth Modulation) 是使用数字源生成模拟信号的方法。主要由 2 个参数来定义:占空比和频率。如果以保持一定的速率开关数字信号并且保持一定的占空比,那么输出看起来就像恒定电压模拟信号。

GPIO:

通用型输入输出(General-purposeinput/output),引脚可以由程序控制作为通用输入(GPI)或者通用输出(GPO)。


GPIO:

通用型输入输出(General-purposeinput/output),引脚可以由程序控制作为通用输入(GPI)或者通用输出(GPO)。


CPU:

中央处理器(CentralProcessing Unit),相当于树莓派的大脑,功能主要是解释计算机指令以及处理计算机软件中的数据,负责与外围设备通信。树莓派使用的是博通 BCM28XX 系列的CPU。



DMA:
直接内存访问(DirectMemory Access)这些设备可以执行涉及主内存和其他设备的数据传送。由于设备执行这些操作的过程中无需借助于 CPU,因此该类型的数据传送称为直接内存访问。简单说就是不用跟 CPU 打招呼就可以直接访问内存。


HOW?

根据麦克斯韦的电磁场理论
1. 变化的磁场能够在周围空间产生电场,变化的电场能够在周围空间产生磁场。
2. 随时间均匀变化的磁场(电场)产生稳定电场(磁场)。随时间不均匀变化的磁场(电场)产生变化的电场(磁场)。
3. 变化的电场和变化的磁场总是相互关系着,形成一个不可分割的统一体,这就是电磁场。



随时间变化的电场产生磁场,而随时间变化的磁场又产生电场,两者互为因果。这种不断转化的场统称为电磁场。这种相互的转化形成电磁振荡。
所以如果在树莓派的 GPIO 上,通过软件控制以一定频率输出高低电平(0/1),再加上适当长度的天线(一根杜邦线即可)就可以将能量以电磁波的形式发射出去。

FM结构图



由图可知,组成一个 FM 发射机系统,树莓派需要
1. 信号采样和 FM 调制所需的时钟
2. 可以通过编程控制电平变化的GPIO
3. 一段可以将电磁波发射出去的天线

时钟

目前绝大多数的的微处理器都有扩频时钟(Spread-spectrum clock),目的是为了降低电磁干扰(EMI),在树莓派 BCM28XX 系列芯片上,扩频时钟的范围为 1MHz 到 250MHz,这正好用作 FM 的载波信号。
为了减少 CPU占用,作者对程序进行了改进,使用树莓派 DMA 产生基础时钟。



信号采样

由于 FM 广播发送的是音频信号,所以先使用 228 kHz 的采样频率对信号进行采样(满足奈奎斯特采样定理),带宽为 15 kHz。



调频


基带信号,载波频率 fc 正弦载波为将基带数据信号与载波结合起来得到了传输信号




其为f(τ)传输信号的瞬时频率,fΔ 为频偏,即载波频率的最大频率偏移。
FM 调频输出的是模拟信号,利用时钟产生 PWM 调整占空比和频率,就可以利用数字信号生成模拟信号。

树莓派天线长度

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





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



所以理论上如果给树莓派 GPIO(PIN4) 加上了一根 1.5m 的天线,那么就可以输出最大功率的 FM 信号。
不要这么做,会干扰正常频段!
传播距离估计

首先需要计算有效全向辐射功率(EIRP)
EIRP=P−Loss+G
其中P 为发射机的输出功率(dBm),Loss为发射机输出端与天线馈源之间的馈线损耗(dB),G 为天线的发送增益(dBi)。求出 EIRP 后可以进而获得自由空间路径损失(Free Space Path Loss,FSPL)。但是使用这个公式估算,意义不是太大。实际测量,如果使用一根 10cm 的杜邦线作为天线,一个楼梯拐角信号就已经非常弱了。


总结

1. 树莓派电磁波发射时没有带通滤波器,谐波会干扰其他频段!
2. 不要干扰正常频段,属于违法行为!

参考

代码请见参考链接

Eben Upton and Gareth Halfacree. Raspberry Pi user guide.John Wiley & Sons, 2014.
Oliver Mattos and Oskar Weigl. Turning the Raspberry PiInto an FM Transmitter.
http://www.icrobotics.co.uk/wiki/index.php/Turning
theRaspberry Pi Into an FM Transmitter, 2015.
Christophe Jacquet. FM-RDS transmitter using theRaspberry Pi’s PWM .
https://github.com/ChristopheJacquet/PiFmRds, 2014.
Richardson. Turning the Raspberry Pi Into an FM Transmitter.http://www.icrobotics.co.uk/wiki ... ntoanFM_Transmitter,2015
页: [1]
查看完整版本: Geek专栏:树莓派 FM 发送机小电台背后的原理解析