内容简介:在知乎上有个问题但是作者只是在
树莓派 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
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Twenty Lectures on Algorithmic Game Theory
Tim Roughgarden / Cambridge University Press / 2016-8-31 / USD 34.99
Computer science and economics have engaged in a lively interaction over the past fifteen years, resulting in the new field of algorithmic game theory. Many problems that are central to modern compute......一起来看看 《Twenty Lectures on Algorithmic Game Theory》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
RGB CMYK 转换工具
RGB CMYK 互转工具