• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【 DigiKey DIY原创大赛】一种小型卫星基站设备

一、介绍

      该基站设备能够实现卫星数据的接收、存储与播发等功能。该基站设备接收到卫星数据后,将其传输至内部处理器进行存储,通过 WiFi 模块与外部网络建立连接,并将所存数据通过网络传送至树莓派服务器,由服务器实现数据的播发。

二、功能框图

三、功能说明

1. 卫星接收机

       使用和芯星通板卡 UB482 作为接收机,用于接收卫星信号。

       选择串口,波特率设置为 115200,并将板卡配置如下:

Mode base  #将设备模式设置为基站模式
Log com1 rtcm1075 ontime 1  #开启 RTCM1075 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1085 ontime 1  #开启 RTCM1085 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1095 ontime 1:开启 RTCM1095 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1125 ontime 1  #开启 RTCM1125 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1019 ontime 1  #开启 RTCM1019 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1020 ontime 1  #开启 RTCM1020 消息的日志记录,时间间隔为1秒。
Log com1 rtcm1042 ontime 1  #开启 RTCM1042 消息的日志记录,时间间隔为1秒。
Log gpgga ontime 1  #每秒输出一次 GPGGA 语句
saveconfig:保存当前配置到设备中

2. 处理器

       选择 I.MX6ULL 核心板作为设备的应用处理器,用于存储并发送接收到的卫星信号。

注:烧写系统时,需将拨码开关拨到" USB "模式,烧录工具选用的是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件 —— MfgTool,因所选 I.MX6ULL 核心板所带的存储芯片为 8GB 的EMMC,在系统烧录时使用到的烧写脚本为 mfgtool2-yocto-mx-evk-emmc.vbs

       系统烧录好之后,还需要在开发板上编译运行 rtklib 的 str2str 软件以便将存储的卫星信号发送给服务器,具体编译过程如下:

A. 首先在 Linux 环境下编译 rtklib

(1) 下载 rtklib 源码,并打开str2str文件夹中makefile所在路径:

(2) 编辑 makefile 文件:

vi makefile

       将默认安装路径:BINDIR = /usr/local/bin,  建议修改为自己的路径(也放在rtklib文件夹下,不要出现中文路径),例如:BINDIR = /usr/rtklib/007

       makefile 中如果不更改编译器定义,默认使用gcc编译器,该编译器是针对x86架构的,但开发板是 ARM 架构,由 gcc 编译器直接编译得到的软件无法在开发板上运行,因此要修改宏定义,使用交叉编译器 Linaro GCC。选择交叉编译链时,考虑到本设备所使用的核心板 I.MX6ULL 是 Cortex-A7 内核,按需选择选择 arm-linux-gnueabihf 这种 GCC 交叉编译工具链,修改如下:

(3) 输入 make 进行编译,make 后会生成很多的 .o  文件。

B. 最后在开发板上编译运行 str2str 软件

(1) 修改开发板 ip 地址,使得开发板与电脑在同一局域网下,这里不多赘述;将拷贝到 rtklib 文件夹拷贝到开发板中 /usr 路径下,从开发板中找到对应路径,进入 gcc 文件夹中,输入指令 make install 完成安装;安装完后,并不能直接运行,还需要在 makefile 中指定的路径下使用以下指令给予可读可写可执行权限:

chmod 777 str2str

(2) 还需设置输出路径(按需修改,这里仅作参考):

nano ~/.profile

       在打开的profile文件中添加:

# Add RTKLIB paths to PATH

export PATH=$PATH:/usr/rtklib/007:/usr/rtklib/bin

       保存文件并退出;

       使更改生效

source ~/.profile

(3) 再次检查 PATH 环境变量,看最后有没有新添加的路径,确认修改已经生效:

echo $PATH

(4) 最后使用如下指令查看str2str能否运行:

str2str -in serial://ttymxc1:115200:8:N:1:off -out tcpcli://1.92.105.187:10001

       str2str:这是一个实用程序,用于将流数据从一个输入源传输到一个输出目标,常用于GNSS数据传输和处理

       -in 参数指定输入源

       serial:// 指定输入源是一个串行端。

       ttymxc1 是串行端口设备名,表示要从这个端口读取数据

       115200 是波特率,表示每秒传输115200比特的数据

       8 是数据位数,表示每个字符使用8位数据

       N 是奇偶校验类型,N 代表无奇偶校验(None)

       1 是停止位数,表示每个字符后有1个停止位

       off 是流控制设置,off 代表没有流控制(即无硬件或软件流控制)

       -out 参数指定输出目标

       tcpsvr:// 指定输出目标是一个TCP服务器

       1.92.105.187 是TCP服务器的IP地址,表示数据将被发送到这个IP

      10001 是TCP服务器的端口号,表示数据将通过这个端口发送到服务器(服务器设置为10001端口输入数据,10002端口输出数据)

      这相当于打开了 rtklib 软件如下 GUI 界面:

3. WiFi 模块

       选择 USB 接口的 WIFI 网卡—— RTL8188 USB WIFI 模块,用于建立开发板与外部网络的连接,并利用网络连接将处理器存储的数据传送至树莓派服务器。

注:向 Linux 内核添加 WiFi 驱动时,出于稳定性考虑,不使用 Linux 自带的 RTL8192CU/8188CUS 驱动,将其屏蔽掉后选择使用新的 rtl8192CU 驱动添加到 Linux 内核中,同时配置 Linux 内核,使其支持 USB 设备、WiFi 设备以及 IEEE 802.11,全部配置完成后,编译 WiFi 驱动,最后使用指令查看确保网卡存在(本设备中网卡对应显示为“ wlan0 ”)。

       打开软件MobaXterm,插入 USB WiFi 模块后,驱动打印信息如下:

       输入指令链接 WiFi:

ifconfig wlan0 up // 若默认没打开 wlan0 则需要执行此项。

wpa_cli -i wlan0 scan_result //扫描附近无线网络信息并打印

source ./alientek_usb_wifi_setup.sh -m station -i WIFINAME -p PASSWORD -d wlan0

       -m station :设置成 station 模式

       -i WIFINAME:无线网络名称

       -p PASSWORD :无线网络密码

       -d wlan0 :USB WIFI 节点

       看到下图已经获取到 ip 信息就代表连接无线网络成功(可以 ping 一下进行上网测试),如果没有获取到 ip 信息,请检查密码是否正确或者重试指令。

       连上WiFi后,将天线连接到和芯星通接收机上,输入数据发送指令,看数据是否发送成功。

      在后续测试中为了简化操作(不然每次上电之后都要输入一大串指令),我将上述指令打包成了一个启动文件,即创建了一个 setup_wifi.sh 脚本:

nano /home/root/shell/wifi/setup_wifi.sh

在新建的脚本中输入一下内容:

#!/bin/bash
# setup_wifi.sh - Script to setup WiFi connection

# Move to the script directory
cd /home/root/shell/wifi

# Bring up the WLAN interface
ifconfig wlan0 up

# Retrieve scan results
wpa_cli -i wlan0 scan_result

# Source the WiFi setup script
source ./alientek_usb_wifi_setup.sh -m station -i WIFINAME -p PASSWORD -d wlan0

后续操作简化为:

(1)插入 USB WiFi,设备上电;

(2)确保网络打开,输入指令更改wifi名称以及对应密码:

sudo nano /home/root/shell/wifi/setup_wifi.sh

(3)激活启动文件,连接网络:

sudo /home/root/shell/wifi/setup_wifi.sh

(4)输入数据发送指令:

str2str -in serial://ttymxc1:115200:8:N:1:off -out tcpcli://1.92.105.187:10001

4. 服务器

      使用树莓派作为服务器,用于将来自处理器的数据播发到移动站。

四、演示视频

 

【电源网设计大赛】一种小型卫星基站设备——成果展示

五、花絮

       设置开插入 WiFi 模块之后,上电,串口选择如下:

       输入指令进行网络连接(确保网络可用,可以 ping 下测试上网)

       输入指令进行数据发送

       数据发送验证完毕。

       利用 rtklib 软件接收数据,发现一直有数据进入,且当给基站设备输入数据停止发送指令后,rtklib 不再有数据传入,至此说明服务器能够将来自基站的数据成功播发到移动站,验证完毕。

将测试完后的设备进行封装,最终设备如图所示

六、物料清单

(1)树莓派 5

(2)和芯星通板卡 UB482

(3)核心板 I.MX6ULL

(4)RTL8188 USB WIFI 模块

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法