使用树莓派搭建一个个人广播站

请遵循中华人民共和国无线电管理条例!

需要的设备:
树莓派4B
杜邦线
电脑

教程开始

First

克隆GitHub上的项目

首先打开终端,输入

1
sudo apt-get update

要记住,在所有项目开始之前,你都需要更新软件仓库

更新完成后,输入

1
sudo apt-get install git

安装git可以帮助你从GitHub上克隆文件

现在,在终端里输入

1
git clone https://github.com/F5OEO/rpitx

开始克隆rpitx项目

rpitx项目可以让树莓派发射从5 KHz到1500 MHz之间的广播信号,从而搭建一个私人广播站
开发者的介绍
rpitx is a general radio frequency transmitter for Raspberry Pi which doesn’t require any other hardware unless filter to avoid intererence. It can handle frequencies from 5 KHz up to 1500 MHz.

克隆文件到本地

由于GitHub服务器在国外,所以克隆时间会比较长,耐心等待即可,如果卡住可以试试”Ctrl+C”终止然后重新克隆

克隆完成后,输入

1
cd rpitx

将终端目录转至rpitx

然后输入

1
./install.sh

运行自动安装脚本
该安装过程依旧需要连接国外服务器,时间可能会比较长,请耐心等待

完成安装过程

在安装最后,会提示是否允许修改 /boot/config.txt,输入”y”并回车即可

现在已经安装完成了,最后输入

1
sudo reboot

进行重启

Second

向世界发声

激动人心的时刻到了,让我们来测试一下树莓派是否可以发射广播信号

打开终端,输入

1
cd rpitx

让终端在 /rpitx 目录下运行,这个目录包含树莓派发射广播信号的所有文件

然后继续输入

1
./easytest.sh

这是作者提供的一个测试脚本,输入后,你的终端应该会出现下图样式

测试界面

由于434 MHz不是一个标准的FM频率,即使我们可以通过其他方式来接收,但本教程主要针对FM广播的发射,所以我们可以更改这个数值,比如85,只要不要占用当地已有的广播频率即可

输入频率后回车,我们会进入一个新的页面,请用方向键将光标移动到第四项,FmRds

选择FmRds

选中后回车,你会看到如下界面

开始发射

现在,就拿出你的收音机,调到你刚刚设定的频率,然后靠近树莓派,仔细听,是不是有声音了,如果有,那么恭喜你,你已经成功配置好了你的树莓派,可以正常播音了!

你现在是不是发现,树莓派发出的信号特别的小,稍微离远一点就收不到信号了?现在,请拿出一根杜邦线,插在树莓派的GPIO 4引脚(图中7号引脚)

引脚参照表

实拍图

好了,听听看,是不是信号好了很多?在家里逛一圈,是不是基本上都能听到声音啦!

但是,现在树莓派一直在播送测试音频,那么我们应该怎样播放自己想要的声音呢,现在,请向树莓派内导入一段.wav格式的音频,将其放在 /home/pi/rpitx 目录下,然后在当前文件夹下运行终端,怎样在当前目录运行终端?请在终端内输入

1
cd rpitx

一定要记住了!之后的大部分命令都需要在当前目录下运行!后面我就不再重复说明了

现在请按照以下模板输入

1
sudo ./pifmrds -freq [frequency] -audio [filename.wav]

比如,我想在85 MHz播送名为q.wav的音频文件,那么我应该输入

1
sudo ./pifmrds -freq 85 -audio q.wav

当你在终端最后一行看到

1
Starting to transmit on XX MHz.(XX表明你使用的频率)

表明树莓派已经开始进行广播了,你可以使用收音机去接收了

一个小问题

如果你想播送的音频不是.wav格式该怎么办呢?我为你提供两种解决方法

方法一(不推荐)

使用格式转换工具(方便,但不是一个长久的方法,同时接下来的功能都将无法使用)
无论是在线还是软件都可以,在网络上搜索音频转换就会有一大堆工具,选择一个有缘的用就好,只要保证最后的格式是.wav即可

方法二(推荐)

使用SoX工具(需要额外安装且命令语法较为复杂,但是无需单独转换文件,可以直接在树莓派上播送,应用范围广)
在树莓派终端中输入

1
sudo apt-get install sox libsox-fmt-all

安装SoX

现在,在 /rpitx 目录下运行终端,输入以下模板

1
sox -t [format] [filename.format] -t wav -  | sudo ./pifmrds -freq XX -audio -

比如,我想在85 MHz频率上播放1.mp3文件,那么我应该输入

1
sox -t mp3 1.mp3 -t wav -  | sudo ./pifmrds -freq 85 -audio -

非常建议你复制上面这串命令然后修改[ ]内的内容而不是手打,因为这非常容易输错!

正常情况下,你的音频可以正常播送,如果失败可能是原格式不支持,SoX目前支持的格式有:AU, WAV, AIFF, MP3 , Ogg Vorbis, FLAC

自动播放多个音频

我们已经实现通过树莓派发射音频信号了,但是你会发现它一直在循环播放同一个音频,这未免有些感到枯燥,所以现在我们可以通过编写一个简单的脚本实现多音频连续播放

首先我们到 /rpitx 目录下新建一个文件夹,在 /rpitx 目录下运行终端,输入

1
mkdir [foldername]

比如我要创建一个名为“playlist”的文件夹,那么我应该输入

1
mkdir playlist

创建完成后,我们需要将 /rpitx 目录下的“pifmrds”文件复制到刚刚创建的文件夹内,在终端内输入

1
cp pifmrds [foldername]/

比如我要将其复制到名为“playlist”的文件夹内,那么我应该输入

1
cp pifmrds playlist/

注意,文件夹名称最后的“/”一定不能忘记了

现在,在终端内输入

1
cd [foldername]

在新的文件夹内运行终端

一波操作

接下来,我们需要编写一个脚本了,在终端内输入

1
nano batch_fm.sh

输入后你会进入一个黑色界面,这是一个文本编辑器,上一篇博客我们也使用过它

现在,你需要在这里输入下面这串代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
trap ctrl_c SIGINT #获取ctrl+c的键盘输入信号

function ctrl_c() { #设定ctrl+c的功能为退出程序
exit
}

while :
do
for f in *.mp3 #获取所有以.mp3为格式的音频文件
do sox -t mp3 "$f" -t wav - | sudo ./pifmrds -freq 85 -audio - #在85MHz频率播送
done
done #完成循环

如果你使用的是.wav文件,则将代码中所有.mp3改为.wav即可
值得注意的是,在该文件夹内的所有音频文件格式都需要与代码中的格式相同,对于上面给出的例子来说,树莓派将会播放所有.mp3格式的音频文件,对于格式不同的音频文件,树莓派将不会播放

编写脚本

输入完成后,请依此按下“Ctrl+O” > “回车” > “Ctrl+X”,保存并退出

最后,我们需要为“batch_fm.sh”文件分配权限,在终端内输入

1
chmod 755 batch_fm.sh

755权限
第一位7,代表文件所有者拥有的权限为可读(4)+可写(2)+可执行(1)
第二位5,代表文件所有者同组用户的权限为可读(4)+不可写(0)+可执行(1)
第三位5,代表公共用户的权限为可读(4)+不可写(0)+可执行(1)

现在,导入一些相同格式的音频文件到 /home/pi/rpitx/[playlist] 目录下(你需要将[playlist]更改为你所创建的文件夹名称),然后在当前目录下运行终端,输入

1
sudo ./batch_fm.sh

当你看到终端最后一行显示“Starting to transmit on XX MHz”时,你就可以使用收音机去收听了!

开始播送

告一段落

本期教程到这里就结束了,但是这只是最最基础的一些功能,下期教程,我将教大家如何实时播送电脑的声音以及自己的声音,让你成为一名真正的DJ!敬请期待吧!

目前学业繁忙,更新不会太快,非常抱歉,呜呜~


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!