内容简介:在知乎上有个问题但是作者只是在
树莓派 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?
根据 麦克斯韦的电磁场理论
- 变化的磁场能够在周围空间产生电场,变化的电场能够在周围空间产生磁场。
- 随时间均匀变化的磁场(电场)产生稳定电场(磁场)。随时间不均匀变化的磁场(电场)产生变化的电场(磁场)。
- 变化的电场和变化的磁场总是相互关系着,形成一个不可分割的统一体,这就是电磁场。
随时间变化的电场产生磁场,而随时间变化的磁场又产生电场,两者互为因果。这种不断转化的场统称为电磁场。这种相互的转化形成电磁振荡。
所以如果在树莓派的 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)\) ,载波频率 \(f_{c}\) ,正弦载波为 \(x_{c}(t)=A_{c} \cos \left(2 \pi f_{c} t\right)\) 将基带数据信号与载波结合起来得到了传输信号
\[ \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(\tau)\) 为传输信号的瞬时频率, \(f_{\Delta}\) 为频偏表示相对载波频率 \(f_{c}\) 的最大频率偏移。
调频输出的是模拟信号,利用时钟产生 PWM 调整占空比和频率,就可以利用数字信号生成模拟信号。
树莓派天线长度
- 波长 : \(\lambda=c/f\)
- 偶极子天线 :制作偶极子天线时,会通过工作波长来确定天线的长度。最常见的偶极子天线是半波天线,它的总长度近似为工作波长的一半,即 \(L=\lambda / 2\)
如果需要发射 100MHz 的 FM 信号,根据上面的公式来计算,就需要 1.5m 长的天线。
>>> 3*10**8 / (2 * 100 * 10**6) 1.5
所以理论上如果给树莓派 GPIO(PIN4) 加上了一根 1.5M 的天线,那么就可以输出最大功率的 FM 信号。
不要这么做,会干扰正常频段!
传播距离估计
首先需要计算有效全向辐射功率(EIRP)
\[EIRP = P - Loss +G\]
其中 \(P\) 为发射机的输出功率( \(dBm\) ), \(Loss\) 为发射机输出端与天线馈源之间的馈线损耗( \(dB\) ), \(G\) 为天线的发送增益( \(dBi\) )。求出 EIRP 后可以进而获得自由空间路径损失(Free Space Path Loss,FSPL)。
但是使用这个公式估算,意义不是太大。实际测量,如果使用一根 10cm 的杜邦线作为天线,一个楼梯拐角信号就已经非常弱了。
总结
- 深深佩服第一个作者的 Geek 范和莫大的脑洞;
- 不要干扰正常频段,属于违法行为!
参考
代码请见参考链接
- [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/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter, 2015.
欢迎关注我的个人公众号
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- [树莓派]树莓派的入门教程
- 「玩转树莓派」树莓派 3B+ 安装 OpenCv
- 「玩转树莓派」树莓派 3B+ 查询本机IP
- 「玩转树莓派」树莓派 3B+ 配置静态IP
- 「玩转树莓派」树莓派 3B+ 配置无线WiFi
- 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Scalable Internet Architectures
Theo Schlossnagle / Sams Publishing / 2006-7-31 / USD 49.99
As a developer, you are aware of the increasing concern amongst developers and site architects that websites be able to handle the vast number of visitors that flood the Internet on a daily basis. Sc......一起来看看 《Scalable Internet Architectures》 这本书的介绍吧!