Featured image of post 让树莓派成为一个FM发射电台

让树莓派成为一个FM发射电台

[scode type=“red”]本文仅供学习与交流,请遵守当地法律。[/scode]

相比于淘宝上的那些几毫瓦功率的fm发射器,树莓派的GPIO口功率还是蛮大的!

看如果加上一节70cm的杜邦线,范围可以达到100m!

运行频率为0~250Mhz。

主要原理

根据麦克斯韦的电磁场理论

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

随时间变化的电场产生磁场,而随时间变化的磁场又产生电场,两者互为因果。这种不断转化的场统称为电磁场。这种相互的转化形成电磁振荡。

所以如果在树莓派的 GPIO 上,通过软件控制以一定频率输出高低电平(0/1),再加上适当长度的天线(一根杜邦线即可)就可以将能量以电磁波的形式发射出去。


于是,Oliver Mattos和Oskar Weigl开发了一个能将 16bit wav 的音乐文件转化为二进制并以电磁波形式发射的项目。

可以注意到,这里只能使用WAV格式文件,并且WAV文件必须是16 bit 22.5kHz Mono格式的。

为此,ma6157通过mpg123这个软件进行解码,解码之后输出到终端上,这时就已经转换成wav格式了。然后树莓派的pifm程序设置成从终端读取音频,这样再通过一个管道将两个程序连起来,就能实现一边解码一边播放了。

这是一个不错的项目,不过因为时间长了,大部分代码已经失效。

提了issue之后原作者删除了关于根据歌名,自动前往搜狗提取直链的代码。

只保留了通过访问 http://0.0.0.0:8080 自行输入音乐链接

然而……web服务器似乎仍然有一些问题,比如在输入音乐链接后cpu飙到100%,无法播放音乐等一系列问题……

so……~笔者删除了关于web服务器方面的的所有代码~(还是没删,只是在start.sh里更改了引导),使它只能根据list.py的歌单播放本地音乐。

先使用setup.sh安装依赖再使用start.sh启动fm即可~

音乐文件在list.py中修改目录和mp3文件名称。

整体还是比较简单的,首先下载源代码。

1
wget https://github.com/kirainl/fmpi/archive/v1.0.zip

解压。

1
unzip v1.0.zip

进入文件夹。

1
cd fmpi-1.0

首先运行setup.sh安装依赖。

1
sudo bash setup.sh