树莓派+USB声卡+手台搭建APRS基站
接收到2000多公里外的APRS基站信标,并没有通过卫星,特殊天线,而是借助互联网,通过iGate网关,转发了BH3VVT基站的数据包。
用SDR搭建igate最大的一个问题:不能发射信号,只能接收。这次折腾更进一步,用手台为了能发射信号,在树莓派上运行Direwolf,实现服务器到射频信号的转发和iGate功能。
参考了BI7JTA 的帖子
链接:https://www.hellocq.net/forum/read.php?tid=351155
一、名词解释
APRS
:自动位置回报系统(Automatic Packet Report System,简称APRS),可以理解为用声音信号传输数字信息Server
:服务器,主要指APRS-IS的服务器端RF
:射频发射iGate
:无线分包网络的AX.25分组与互联网上的TCP/IP分组的转换与转发,可以理解为把手台传输的数字信息转发到互联网上。数字中继
;由于节点发射范围有限,远距离的数据传输需要用无线数字中继台(Digipeater),和模拟中继转发声音不同,数据中继在转发时候是对接收的数据信息进行处理后又转化为音频信号发送出去。TNC:
Terminal Node Controller终端节点控制器,不要被名字唬住,实际就是个模拟声音信号 <->数字信号的调制解调器。
二、DireWolf介绍
DireWolf 名字叫“Decoded Information from Radio Emissions for Windows Or Linux Fans”,是一个APRS的神器,包含了我们搭建APRS站台的所有需要功能。本文介绍在树莓派上运行DireWolf搭建一个中继台+iGate,实现APRS的iGate,数字中继,服务器到射频的转发。
DireWolf的说明书有近200页的英文PDF。这是一个宝库,与APRS主要相关的知识技巧都可以在里面找到,耐心阅读会有很大收获。
DireWolf主要功能:软件调制解调+ iGate + 数字中继+ 虚拟TNC
三、设备及接线
手台
普通手台,推荐神机:宝峰UV5R。如果要取得更远的效果请外接天线。
树莓派
2B以上版本,早期的树莓派不能运行DireWolf,4G以上TF存储卡
USB声卡
推荐使用CM180芯片或者CM191,便宜的杂牌声卡会死机。树莓派有HDMI口和一个音频口,为何不用?因为这个音频口只有输出,没有输入,不能录音。
手咪连接线,转接板
线和转接板有成品可以买到,但PTT控制需要自己焊接线。
参考手台线制作:https://www.hellocq.net/forum/read.php?tid=358597
手台到声卡的音频、麦克风接线不能直接交叉连接,必须有降压电路,否则设备会损坏。
光耦控制的继电器
树莓派GPIO直接驱动继电器会出现供电不足等不稳定情况。direwolf作者推荐的转接板电路还有NE555电路,控制PPT每次按下不超过10秒,避免程序或者其他环节出问题,一直发射占用信道。这里简化一下,用一个带有光藕的继电器模块。(不完美的一点,工作时候会有继电器吸附、断开的嘀嗒噪音)
这里省略了控制发射时间的电路,请将手台TOT(最长发射时间)设置为最小值,一般15秒,另外请在有人值守,或者有可靠远程关闭电台的情况下再运行,避免出现问题后长时间发射,干扰信道的情况发生。
PTT控制
DireWolf作者在手册中也反复强调,不要使用VOX声音控制发射,因为VOX开启有延迟,结束后会有好几秒才会停止发射,这样白白占用信道很长时间,在测试的时候可以先不接PTT线,用VOX控制进行测试。
PTT 用继电器控制PTT引线和地线接通,等同于按下PTT按钮。
接线图
- 树莓派继电器接线
- 完成后的接线
四、软件
本文按照Direwolf 1.5版本进行调试配置,很多树莓派Linux发行版的软件仓库提供的是1.4版,可能有些地方会略有差别。这里推荐编译安装Direwolf 1.5
- 烧录树莓派系统。
- 更新软件仓库
sudo apt-get update sudo apt-get dist-upgrade sudo rpi-update sudo reboot
- 移除pulseaudio
sudo apt-get remove --purge pulseaudio sudo apt-get autoremove rm -rf /home/pi/.pulse sudo reboot
- 编译安装DireWolf
- 安装sound library.
sudo apt-get install libasound2-dev sudo apt-get install libudev-dev
cd ~ git clone https://www.github.com/wb2osz/direwolf --depth=1 cd direwolf
make -j sudo make install make install-rpi
cd ~ direwolf
如果成功会显示下面的信息:
Dire Wolf version ... Audio device for both receive and transmit: default Could not open audio device default for input No such file or directory Pointless to continue without audio device.
意思是没有找到音频设备,因为我们还没有配置文件。下面就改说配置文件了。
五、配置
Direwolf基本配置
Direwolf会自动搜索当前目录下的direwolf.conf默认配置文件。本文最后提供连接下载加有中文注释的配置文件模板。修改好以后把文件放到指定目录下。
声卡配置
查看树莓派usb设备,确认usb声卡是否驱动,命令:lsusb
pi@raspberrypi:~ $ lsusb Bus 001 Device 005: ID 0d8c:0012 C-Media Electronics, Inc.
查看播放设备,命令:aplay -l
pi@raspberrypi:~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 7/7 card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
card 1就是我们的usb声卡
查看录音设备,命令:arecord -l
pi@raspberrypi:~ $ arecord -l **** List of CAPTURE Hardware Devices **** card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
如果能正确显示设备那么我们direwolf的声卡配置
# 树莓派USB声卡 ADEVICE plughw:1,0
这里1 代表card 1 ,声卡的序号
呼号信息配置
MYCALL BH8VJH-10
信标配置
PBEACON delay=10 every=30 overlay=S symbol="digi" lat=42^36.40N long=071^117.00E power=1 height=20 gain=4 comment="439.110MHz"
PBEACON : 表示位置报告信标
delay : 启动后延时多久开始发送
every : 每个多少分钟发送一次
symbol : 显示的图标
lat : 纬度,注意最后一个字母N,北纬
long : 经度,注意最后一个字母E,东经
power: 描述发射功率
height: 天线高度
gain: 天线增益
comment: 附加信息
到这一步可以进行一下接收信号的解码测试。参看“五、调试--编码解码测试”部分。
数字中继配置
去掉对应行的注释#
DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE
用手台发送信标后,会马上收到自己刚才的信息,说明中继配置成功。
注意:发送配置中路径PATH中至少包括WIDE1-1,表示转发一次,否则不会被中继转发。
iGate配置
# 指定APRS-IS服务器 IGSERVER s.aprs.cn # 登录信息,NOCALL换成你的呼号 这里xxx是aprs验证码 IGLOGIN NOCALL xxxx
Server to RF 配置
#服务器端过滤呼号 IGFILTER b/BH8SEL*/BG8SPA* # 转发过滤 FILTER IG 0 b/BH8SEL* # 发送限制,1分钟内6条,5分钟内10条 IGTXLIMIT 6 10
完整的过滤规则说明:http://www.aprs-is.net/javaprsfilter.aspx
IGFILTER 是服务器端过滤,也就是订阅希望从服务器收到的信息。
FILTER 转发过滤规则,IG代表从iGate接收,0代表从Channel 0 发射 ,后面是转发过滤规则
请严格设置过滤规则,避免大量无用的信息通过射频转发。如果超过设置的频次,direwolf会停止转发。
完整的配置模板已放置在github:
https://github.com/formatkm/direwolf_conf_cn/blob/master/direwolf.conf
六、调试
编码解码测试
这一步测试建议不使用手台,用一个普通3.5mm的手机耳麦。
用手机软件对信息进行编码,从手机扬声器中播放声音信号,耳麦的麦克风靠近手机,如果声卡配置成功direwolf即能解码出信息。
IOS下有PulseModem A
Android下的aprsDroid
编码测试,如果信标部分配置正确,每隔几分钟就能从耳机里吗听到吱吱声。
如果以上测试都没有问题,那么可以接上对讲机,打开手台的VOX,进行测试了。
PTT控制测试
PTT测试用一个LED灯接GPIO 25引脚,如果发射的时候亮,不发射的时候熄灭说明工作正常。
发送接收APRS消息
转发互联网数据最大的用处就是转发APRS消息,下面是互发测试的截图
- 从aprsDroid通过APRS-IS发送消息
- 手台发送消息给手机
七、参考链接
- DireWolf: https://github.com/wb2osz/direwolf
- APRS RX/TX I-GATE AND DIGIPEATER FOR LESS THAN $100
https://n1aae.com/raspberry-pi-aprs-direwolf-linux-igate-digipeater/
评论前必须登录!
立即登录 注册