论坛风格切换切换到宽版
  • 1026阅读
  • 10回复

树莓派+声卡+手台搭建APRS详细攻略 [复制链接]

上一主题 下一主题
离线bd7ipa
 
只看楼主 倒序阅读 0楼 发表于: 01-14
起因:户外徒步活动时,需要定位、轨迹、方向等功能,虽然手机有相当完善的功能,但限于电池寿命、4G/5G信号覆盖不全,部分山区信号弱的情况不太好用。因此,想通过无线电APRS的形式,进行位置报告。同时,对于远在家里的亲人,也可以实时掌握自己的位置,万一真的出现意外情况,还能协助救援,对于喜欢户外活动的人士来说,意义重大,非手机可比。
目标:用树莓派+USB声卡+手台,搭建一个集 网关、中继、追踪器(定位)于一身的小基站。
可以实现:人持手台进山,基站放车内(或地势开阔海拔高且有4G/5G信号的地方)。
1.    手台的位置信息可以通过基站的网关上报到aprs地图服务器(基站需要能连wifi,有线网络也行,但户外有线不太现实),家人可以通过地图服务器获知你的位置。
2.    两台手台之间,如果因为信号覆盖不能相互通联,可以通过基站的中继功能相互报送位置信息,方便户外活动与队员联系。
3.    基站本身有定位功能,定时对外发送自身坐标,方便户外活动地图不好使或者迷路时,有一个明确的目标方位。


起初是在咸鱼上收的一位大佬的DIY成品,但它没有wifi,不带GPS定位功能。在自己加GPS的过程中,进行了深度折腾,从零开始,装系统、编译软件、换声卡、换手台、加装GPS模块,一步一步,把所有步骤几乎都走了一遍,遇到了不少坑,本着火腿精神,把整个过程整理出来,方便有兴趣的友台在DIY的过程中避免踩坑。

话不多说,马上开始。开始前,先总结一下需要的硬件、软件:
1.   硬件:
a)     树莓派(1B就可以,就是装系统编译软件会慢点,我也试过用4B,除了编译更快以外,其他并无区别。网上大佬说香橙派也可以,我手上没有香橙派,没试过,理论上能装linux就可以)。
b)     USB声卡,某宝上十几块钱就有,搜CM108声卡就行,大板和迷你版我都试过,都可以,没问题的,看你喜欢。
c)     手台,本来咸鱼上买回来的时候就有一个手台,我为了方便更换为宝峰UV5R,可以手置频,双段接收,这点在户外会更方便,与其他驴友通联的时候,可以更方便的更改频点。
d)     GPS模块,我是某宝是买的“维特智能”的GPS+BD北斗模块,外接天线版本
e)     3.3V继电器模块(记得一定是3.3V的继电器,树莓派的GPIO口只提供3.3V电压,5V的模块驱动不起来),用于控制PTT。咸鱼上购买回来时,它是用一个三极管+电阻接到PTT上,后来我换成UV5R时不知为何一发射声卡就重置,导致程序退出,后来换成继电器控制就没事了,就是每次发送继电器吸合噪音比较大,介意的可以找找固态继电器看能不能实现。
f)      DC-DC可调降压模块(两个),因为我用的是12V电源,树莓派需要5V供电,手台需要7.4V供电,所以用两个。
g)     USB无线网卡我用的是箱底找到的RTU8188SU芯片的网卡,大家可以某宝随便入,只要linux下不需要另外装驱动就可以了。
h)     音频转接板,某宝上搜APRS手台手机转接板(BH4TDV作坊)。对了TDV大佬家有TNC网关等APRS相关设备的成品,不希望折腾的可以直接上成品。
i)      对讲机K头线。
2.   软件:
a)     操作系统:DietPi,基于debian的迷你系统,非常适合低配置电脑使用。官网https://dietpi.com/
b)     DirewolfDire Wolf是一款开源的软件声卡”AX.25数据包调制解调器/TNCAPRS编码器/解码器。它可以单独用于观察APRS流量,作为跟踪器、digipeaterAPRStt网关或互联网网关(IGate)。官网:https://github.com/wb2osz/direwolf/

接下来,我将一步一步带你从零开始搭建这个小基站。过程中需要一点简单的动手能力(焊接线路,并不难),以及一些linux基础,有基础可以更好的理解,没有基础一步一步来应该也能成功的。遇到问题多去网上搜索,国内貌似玩APRS的人不多,可能是由于政策原因,但国外还是很多人玩的,所以多到国外网站上查资料能更容易的找到问题答案。

先放两张整体图,这样能更直观的理解它



首先是硬件的搭建:
1.   直流12V DC进来后,先通过两个降压模块,分别给树莓派和手台供电(手台也可以直接某宝买个借电器,它里面就有12V7.4V的降压板)。
2.   树莓派两个USB接口,一个插无线网卡,另一个插USB声卡,我这里因为声卡后还要接3.5mm插头,位置有点挤,所以直接用线焊到声卡的USB口上。
3.   树莓派GPIO口:
a)     5V+GND è GPS模块的VCC+GND
b)     GPIO14GPIO15 è GPS模块的 RxDTxD
c)     GPIO183.3V GND è 继电器模块的 INDC+DC-
d)     GPIO23+GND è 外壳的其中一个LED上,LED正极和GPIO23之间串联一个680欧的电阻
e)     声卡的指示灯、网卡的指示灯,分别用延长线焊到外壳的其中一个LED
f)      K头线制作音频线,自己根据线序定义图,焊到音频转接板上



接下来是软件方面:
首先是安装操作系统:
1.   准备一张8G以上的SD卡(如果是树莓派4B/3B,用的是TF卡,而操作是完全一毛一样的,跟着做就好)。
2.   DietPi的官网下载系统镜像,(记得根据自己的树莓派板子来下载)。下载好后,解压出来备用。文件名应该是DietPi_RPi-ARMv6-Bookworm.img,如果是树莓派4,对应文件名应该是DietPi_RPi-ARMv8-Bookworm.img


3.   系统烧录:下载Rufus便携版(官网:https://rufus.ie/zh/),插入SD卡,打开Rufus
a)     选择SD卡,如果有多个U盘或SD卡插在电脑上,请确认不要选错了
b)     选择刚刚解压出来的系统镜像文件
c)     其他保持默认,点击开始,等待烧录完成。
d)     烧录完成后,别急着弹出SD卡,用windows记事本打开SD卡里面的dietpi.txt文件,找到
AUTO_SETUP_NET_WIFI_ENABLED=0这行,把0 改为1,保存关闭。这样首次开机它会自动打开wifi
e)     然后打开dietpi-wifi.txt文件找到
aWIFI_SSID[0]='' 这行,在等于号后面的单引号内,输入你的wifi名(注意它貌似大小写敏感的,不一定支持中文,建议用英文网络名)
aWIFI_KEY[0]=''  这行,在等于号后面的单引号内,输入你的wifi密码
f)      其他不用改,保存关闭文件。


4.   SD卡从电脑弹出,插入到树莓派中,上电开机。
5.   过一两分钟,连上你的路由看看机器名叫“DietPi”的机子是否获取了IP地址,记下它的IP地址
6.   SSH工具(比如PuTTY)连接到树莓派,登陆名:root,密码:dietpi
7.   这里需要稍等片刻,系统首次启动会运行一堆脚本,基本不用管它,让它自己跑就行。但是需要留意,首次启动它会连接上GitHub获取最新版本号,我家里用的联通的宽带,有时可以有时不行,多试几次,或者不同时段试试就可以了。实在不行就科学上网大法,具体的步骤不在此篇范围内,就不多赘述,请自行百度。
8.   期间还会询问你一些简单的问题,比如是否参加用户调研,是否修改默认密码等等,大家沉下心耐心看看界面提示,根据自己需要进行选择即可。
9.   然后会让你进行一些软硬件设置,这里我们全部设置都不要更改,保持默认,直接选择最后一项“安装系统”即可(如图)

10.  一切就绪后,应该看到如下的界面,这就证明DietPi系统已经安装完成


接下来就是软件安装了,下面的所有操作默认都以root身份运行
首先打开USB声卡及串口:
运行
  1. dietpi-config

出现下面界面,选择Audio Options -> Sound card

选择“hw:0,0 Device USB Audio”,按回车键安装



完成后一路“Back”,直到最上层,先别急着退出。接下来设置串口,以便GPS和树莓派能正常通讯。
在最上层选择“Advanced Options



选择“Serial/UART : Manage available devices

按照图片的方式选择,console选择offdevice选择on



完成后,一路“Back”到最上层,然后“Exit”退出

此时可以验证一下声卡,运行以下两条命令,看看是否正确识别到音频播放及录音设备
  1. aplay –l

  1. arecord -l

如果看到如下界面,则声卡正常



然后设置一下国内源,以便更快的安装软件:
  1. nano /etc/apt/sources.list


把文件内容改为如下的:

  1. #deb http://raspbian.raspberrypi.org/raspbian/ bookwormmain contrib non-free
  2. deb http://mirrors.ustc.edu.cn/raspbian/raspbian/bookworm main non-free contrib


然后运行一次更新命令:apt install update
完成后,开始安装软件,运行以下命令:
  1. apt install cmake make build-essential libasound2-devlibudev-dev git gpsd libgps-dev gpsd-clients



这个过程会比较慢,毕竟是1代树莓派,耐心等待即可。如果是树莓派4B会快很多。

等一切安装妥当,就可以配置gpsd服务了
  1. nano /etc/default/gpsd
内容修改为:
  1. START_DAEMON=”true”
  2. USBAUTO=”true”
  3. DEVICES=”/dev/ttyAMA0″
  4. GPSD_OPTIONS=”-n”



配置gpsd为自启动
  1. dpkg-reconfigure gpsd


运行:
  1. systemctl enable gpsd
  2. systemctl start gpsd



接下来可以验证GPS模块是否正常,输入以下命令
首先设置串口波特率为115200
  1. stty -F /dev/ttyAMA0 115200


然后运行GPS客户端看看GPS信息:
  1. cgps


如果看到有很多输出一直在滚动就证明串口和GPS模块已经可以正常通讯了,按“q”键退出软件。

接下来下载和编译direwolf,依次运行以下命令:
  1. cd ~
  2. git clone https://www.github.com/wb2osz/direwolf
  3. cd direwolf



这里因为要连github,有时不太好连,多试几次就可以了。

下载完后,就可以进行编译安装了,依次运行以下命令:
  1. mkdir build
  2. cd build
  3. cmake -DUNITTEST=1 ..   <--注意这里别漏掉两个“..”
  4. make -j4
  5. make test
  6. make install
  7. make install-conf




树莓派1B的编译过程有点慢,以上所有命令跑完大概需要1小时,耐心等待就好了,一个命令完成后再进行下一个命令。如果是树莓派4B那就很快了,大概二十分钟内就能完成。

完成后,就可以试试运行一下看看是否正常了,运行以下命令:
  1. direwolf –c direwolf.conf


看到类似下图的信息就证明软件及硬件都正常跑起来了。上面的一大堆提示不用管,意思就是强调不要以root身份运行,有时间的朋友可以折腾一下以普通用户身份运行程序。


先CTRL-C退出。


接下来就可以调整一下配置文件,以便让系统按照我们希望的方式运行。运行以下命令:
  1. mv direwolf.conf direwolf.conf.bk

先把原始配置文件改名,作为备份保存。

然后新键一个配置文件:
  1. nano direwolf.conf


接下来逐个解释它们的意思

  1. #使用GPSD服务
  2. GPSD
  3. #使用智能信标,下面的意思是运动时速大于60km/h时,每2分钟发送一次信标,低于5km/h时,15分钟发送一次。
  4. #后面的应该是跟转向角度有关,具体没仔细研究,有兴趣的可以看看官方手册,不需要的请注释掉它
  5. SMARTBEACONING 60 2:00 5 15:00 0:15 30 255
  6. #日志配置,请在/root目录下手动创建log文件夹,它会每天创建一个日志文件
  7. LOGDIR .
  8. LOGDIR log-files
  9. LOGDIR /root/log
  10. #下面设置的是一些时间参数,比如发送正式数据包的前后发送多长时间的空码等
  11. #因为树莓派的一些问题,貌似USB声卡会有一定的随机延迟,有时会把正式数据包的头给截掉
  12. #这时可以适当演唱TXDELAY的值。具体的需要大家亲测,这里的数值是系统默认值
  13. #x10 mSec per unit = 0 mSec.
  14. DWAIT 50
  15. #x10 mSec per unit = 100 mSec.
  16. SLOTTIME 10
  17. #probability for transmitting after each slottime.
  18. PERSIST 63
  19. #x10 mSec per unit = 300 mSec.
  20. TXDELAY 30
  21. #x10 mSec per unit = 100 mSec.
  22. TXTAIL 10
  23. #Half Duplex.
  24. FULLDUP OFF
  25. #声卡设置,如果你上面一直跟着我的步骤操作,0,0就对了,如果系统有多张声卡,请根据实际情况配置
  26. ADEVICE  plughw:0,0
  27. #单声道还是立体声,这里我们用单声道即可。立体声是2
  28. ACHANNELS 1
  29. CHANNEL 0
  30. #设置台站呼号
  31. MYCALL NONAME
  32. #调制解调器速率,对于大多数对讲机来说,设置1200就可以了,不需要修改
  33. MODEM 1200
  34. #PTT控制端口,如果按照我上面的硬件连接操作的,就是18,否则请根据实际情况修改
  35. PTT GPIO 18
  36. #数据载波指示端口(收到信标的时候会亮灯)。如果按照我上面的硬件连接操作的,就是23,否则请根据实际情况修改
  37. DCD GPIO 23
  38. #如果需要用APRS客户端来连接到本机,在这里设置端口
  39. AGWPORT 8000
  40. KISSPORT 8001
  41. #APRS无线信标
  42. #TBEACON 是GPS信标,当GPS成功定位后才会发送
  43. #delay是当软件启动后延迟多少分钟开始发送信标,这里是1分钟,也可以写成1:00
  44. #every是发送频率,这里是5分钟发送一次,也可以写成5:00
  45. #symbol是在地图上显示的图标
  46. #alt=1是发送海拔信息,如果不想发送设置为0即可
  47. #freq 是
  48. #comment是要发送的附加信息,用户手册上建议不要在此处写上频率信息,频率信息用freq参数设置
  49. TBEACON delay=1 every=5 symbol="CAR" alt=1 freq=144.640 comment="APRS DIGIPEAT From RaspberryPi 1200bps"
  50. #PBEACON是固定信标,比GPS信标多了lat、long、height等位置信息
  51. #用TBEACON还是PBEACON可以自行决定
  52. #PBEACON delay=0:30  every=1 symbol="CAR" lat=23^10.120344N long=113^17.119954E height=420 freq=144.640 power=05 gain=6 comment="APRS DIGIPEAT from RaspberryPi 1200bps"
  53. #中继设置,如果要打开中继功能,则需要这行参数,可以照抄
  54. #具体的参数含义我也没有仔细研究,有兴趣折腾的可以参考官方手册
  55. DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE
  56. #网关服务器设置
  57. IGSERVER asia.aprs2.net:14580
  58. #登录服务器的呼号及验证码,
  59. IGLOGIN BD7IPA 123456
  60. #向网关发送的信标信息,与APRS无线信标参数设置一样,可以自行调整。
  61. #留意这里多了一个 sendto=IG 的参数,这就表明这个信标是发送给互联网的,不会发送到手台
  62. TBEACON sendto=IG delay=1 every=5 symbol="CAR" alt=1 freq=144.640 comment="APRS iGate From RaspberryPi"
  63. #PBEACON sendto=IG delay=0:30  every=1 symbol="CAR" lat=23^10.120344N long=113^17.119954E height=420 freq=144.640 power=05 gain=6 comment="APRS iGate from RaspberryPi 1200bps"
  64. #发送到网关的路由,照抄即可,无需修改
  65. IGTXVIA 0 WIDE1-1,WIDE2-1
  66. #发送限制,为了避免过度占用频道做的限制
  67. #两个参数对应的是1分钟及5分钟内不能超过的发送次数
  68. #这里表明1分钟内不能发送超过6此,同时5分钟内不超过10次,各位可根据实际情况调整
  69. IGTXLIMIT 6 10




这个软件还有很多可以设置的参数,感兴趣的朋友可以去官网下载,比如IGFILTER等参数也很实用,可以限制中继只接收转发特定呼号的信息等。
https://github.com/wb2osz/direwolf/tree/master/doc

接下来,如果一切OK,运行:
  1. direwolf –c direwolf.conf


过一会应该就能从aprs.cn 等网站上看到自己的信标了。


最后,我们来设置一下开机自动运行
先安装screen软件
  1. apt install screen


安装完后,运行以下命令编辑定时执行文件
  1. crontab –e


新增两行:
  1. @reboot stty -F /dev/serial0 115200
  2. * * * * * /root/dw-start.sh >/dev/null 2>&1



第一行是每次启动时,把串口的波特率调整至115200
第二行是每分钟运行一个脚本,如果发现direwolf已经运行则退出,如果没有则30秒后启动direwolf

这样能确保如果程序意外退出后,还能自动启动起来

每次启动后,通过
  1. screen –D –r direwolf

命令可以看到程序运行的情况

这时千万不要按CTRL-C退出,这样会中断程序的
如果想正常退出screen,可以按CTRL-A,然后按d键,就可以了。


好了以上就是从零开始一步一步搭建APRS网关的所有步骤了,希望大家都能很轻松的搭建自己的网关
73  BD7IPA


[ 此帖被bd7ipa在2024-01-14 21:06重新编辑 ]
离线bd7ipa
只看该作者 1楼 发表于: 01-14
首次发帖,格式有点乱 大家将就这看一下吧
离线bg4ipo
发帖
197
只看该作者 2楼 发表于: 01-14
厉害 不明觉厉
离线bd7lly_jnc
发帖
71
只看该作者 3楼 发表于: 01-15
支持!
我的微信公众号:LLY业余无线电那些事
我的知乎专栏: https://www.zhihu.com/column/c_1392777577560424448
离线爱不交租
发帖
12294
只看该作者 4楼 发表于: 01-15
此贴必火
我读书少  不要骗我
离线BH3NEK
发帖
1497
只看该作者 5楼 发表于: 01-15
说明非常详细,值得一试
呼号:BH3NEK
直频:145.100MHz  
中继: 439.125MHz-8 亚音103.5  
          147.925MHz-3.8 无亚音
          APRS:144.640MHz
承德ham微信号:CDHAM01


QTH:河北承德开发区
离线BD7IS
发帖
9865
只看该作者 6楼 发表于: 01-17
厉害,,,,,,
不懂瞎顶
离线mr7
发帖
1298
只看该作者 7楼 发表于: 01-27
用ESP32+SA828制作简单多了
我的QQ:510844822(请注明来意),来自广州的mr7。
http://weibo.com/mr7mr7
离线bh2ufz
发帖
21
只看该作者 8楼 发表于: 01-28
能加您的微信聊聊
离线BG7AEW
发帖
2090
只看该作者 9楼 发表于: 01-29
有时间也折腾一个
BG7AEW----15599002051
德在人先,利居人后!
离线BG5DLQ
发帖
191
只看该作者 10楼 发表于: 03-21
教程详细,就差手把手了
B G 5 D L Q[/COLOR][/SIZE]