使用 Raspberry Pi 制作一个 FM 调频广播电台

今天和同学聊天谈到 Raspberry Pi 树莓派的一个有趣玩法:把它变成一个小型的 FM 调频发射站!想起自己初中时也有过这个想法,但是实践过程中遇到了很多问题,摸索了很久才成功做出来。于是我便想写篇教程,把我的制作经验告诉大家,让大家更快速简单地实现这一想法。

你需要准备

1. 一只树莓派
2. 一根用来充当天线的 20cm 母头杜邦线

步骤

1. 下载由国外玩家 Oliver Mattos 与 Oskar Weigl 制作的 PiFM 开源代码模块(下载地址:百度云
2. 将其解压后得到的 pifm 文件夹拷贝至树莓派的 SD 卡上
3. 给树莓派的 GPIO 4 引脚插上准备好的杜邦线

4. 在终端中进入 pifm 目录后执行下列语句

sudo ./pifm sound.wav 103.3

5. 此时打开你的收音机设备,调到 103.3MHz 应该就能听到美妙的音乐了

参数说明

sound.wav

指的是示例音频文件的路径,可以把它替换成自己的音乐。但要注意只能使用 16 位单声道的 WAV 文件!

103.3

指的是发射频率。树莓派硬件上可支持的范围为 1MHz-250MHz,不过中国境内大部分收音机只能接收到 76MHz-108MHz 的频率,所以推荐在其中挑选一个空闲频率来使用。

如果你想播放立体声 WAV 格式并指定采样率可以使用下列语句

sudo ./pifm left_right.wav 103.3 22050 stereo

22050

指的是音频采样率是 22050Hz。

stereo

指的是以立体声模式播放该文件。如果你希望播放单声道文件,把它改为 mono 或删除这一参数即可。

如果你想播放 MP3 格式可以使用下列语句

ffmpeg -i input.mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - 103.3

这里使用了 ffmpeg 解码器,它的作用是把“input.mp3”文件以模式 s16le 与 22050Hz 的采样率进行实时解码并作为 PiFM 模块的输入。由于 s16le 的模式代表生成 16 位的单声道 WAV 格式,所以此处不需另外填写参数。

还可以通过 USB 接口的麦克风来实现喊话功能

arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm - 103.3

用途

它可以被做成一台便携式的 FM 发射器,随身携带来传递你的个性化声音。
它可以用来做对讲机,住宿学生党的神器。
它可以用来做校园广播。
……

常见问题

1. 收音机里听到的全是杂音

请从以下两个方面尝试:更换一个频率,检查天线接触是否良好。

2. 执行语句时提示“找不到命令”或收音机中噪音消失但没有声音

通常是因为你没有足够的权限来运行 pifm,或是音频文件路径有误。可以尝试使用下述语句给文件提权。

sudo chmod 777 ./pifm

3. 运行时收音机中发出响亮的“哔”声

可能是因为你乱来被和谐了……开个玩笑~多半是因为文件被占用无法读取,就像一个正在被使用的文件不能被删除一样。最简单的方法就是重启系统。

4. 听到的声音播放速度不正常

基本是由于你选择了错误的采样率及声道,仔细检查一下吧!

5. 收音距离不够长

可以尝试延长杜邦线,把它缠绕在水管或是晾衣杆上,效果会好很多。

6. 听说法律规定私人搭建大功率无线电发射站是要被查水表的,是不是真的快告诉我

放心啦,树莓派的发射功率很小的,幻想着能用它来干扰卫星或是航天飞机什么的基本上是不可能的,所以 ZF 自然不会来找你麻烦的。不过,请注意调频内容一定要积极向上哦!

7. 我还有问题

推荐你到模块开发者提供的 Wiki 上逛逛,说不定会有不少收获哦~

18 条评论

发表评论

*

  • 天线接触良好,车载台用103.3可以播声音,权限也设置了,就是不行 😥

  • 问一下,pi2 完全按照教程做了怎么收音机里听不到声音呢? 树莓派权限频率线都弄过了还有收音机周边频率都听过了,就是没声音。

    • 不好意思,手头上没有 PI2,无法帮你测试。可以试试设置一个原本有杂音的频率,看看执行完声音会不会有变化~

      • 怎么替换WAV文件为自己的 提示我没有权限更换

      • 搭建好的电台 重启树莓派后怎么再次进入? 😐

  • 社长干的事足够被***的了,像我这种人就不jdxufioapqlxjciizixkdkfbfxkzs

  • 在Kagamiz的帮助下,终于找到了输入sudo ./pifm sound.wav 103.3提示“找不到命令”的解决办法了:确认所有文件解压到/home/pi下之后,才能直接运行sudo ./pifm sound.wav 103.3,否则要进入pifm可执行文件所在目录再运行,如果仍提示则输入sudo chmod 777 ./pifm获得权限再运行。感谢Kagamiz。