文章来源:乐聚机器人王松博士《树莓派 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 发射机系统,树莓派需要 1. 信号采样和 FM 调制所需的时钟 2. 可以通过编程控制电平变化的GPIO 3. 一段可以将电磁波发射出去的天线 时钟 目前绝大多数的的微处理器都有扩频时钟(Spread-spectrum clock),目的是为了降低电磁干扰(EMI),在树莓派 BCM28XX 系列芯片上,扩频时钟的范围为 1MHz 到 250MHz,这正好用作 FM 的载波信号。 为了减少 CPU 占用,作者对程序进行了改进,使用树莓派 DMA 产生基础时钟。
信号采样 由于 FM 广播发送的是音频信号,所以先使用 228 kHz 的采样频率对信号进行采样(满足奈奎斯特采样定理),带宽为 15 kHz。
调频 基带信号
其为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. 不要干扰正常频段,属于违法行为! 参考 代码请见参考链接: [1]Eben Upton and Gareth Halfacree. Raspberry Pi user guide. John Wiley & Sons, 2014. [2]Oliver Mattos and Oskar Weigl. Turning the Raspberry Pi Into an FM Transmitter. http://www.icrobotics.co.uk/wiki/index.php/Turning the Raspberry Pi Into an FM Transmitter, 2015. [3]Christophe Jacquet. FM-RDS transmitter using the Raspberry Pi’s PWM . https://github.com/ChristopheJacquet/PiFmRds, 2014. [4]Richardson. Turning the Raspberry Pi Into an FM Transmitter. http://www.icrobotics.co.uk/wiki/index.php/TurningtheRaspberryPiIntoanFM_Transmitter, 2015.,载波频率 fc 正弦载波为
将基带数据信号与载波结合起来得到了传输信号
欢迎光临 乐聚社区 (https://bbs.lejurobot.com/)
Powered by Discuz! X3.4