这个项目是我与OpenSourceSDR的技术大哥一起完成的,所以,首先感谢他对我的帮助,其次,未经我俩许可,不得转载
欺骗部分
这部分的代码来自于gps-sdr-sim,后期我将自己制作一个只针对于LimeSDR-USB的分支供大家学习参考。话不多说,我们开始吧!
#这是安装LimeSuite组件,Soapy API和LimeSDR的所有驱动的程序,没有安装过的朋友先安装
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images
sudo apt-get install soapysdr soapysdr-module-lms7
安装好后,开始下一步的操作
git clone https://github.com/osqzss/gps-sdr-sim
cd gps-sdr-sim
#接下来对你下载好的文件进行gcc编译
gcc gpssim.c -lm -O3 -o gps-sdr-sim
到这前期准备工作就好了,下面我们来看编译好的文件中的各类指令
Usage: gps-sdr-sim [options] #
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file (dynamic mode)
-g <nmea_gga> NMEA GGA stream (dynamic mode)
-c <location> ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48
-l <location> Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
-t <date,time> Scenario start time YYYY/MM/DD,hh:mm:ss
-T <date,time> Overwrite TOC and TOE to scenario start time
-d <duration> Duration [sec] (dynamic mode max: 300 static mode max: 86400)
-o <output> I/Q sampling data file (default: gpssim.bin ; use - for stdout)
-s <frequency> Sampling frequency [Hz] (default: 2600000)
-b <iq_bits> I/Q data format [1/8/16] (default: 16)
-i Disable ionospheric delay for spacecraft scenario
-v Show details about simulated channels
#这是中文的对照
用法:gps-sdr-sim [选项]
选项:
-e <gps_nav>用于GPS星历表的RINEX导航文件(必填)
-u <user_motion>用户动作文件(动态模式)
-g <nmea_gga> NMEA GGA流(动态模式)
-c <位置> ECEF X,Y,Z,以米为单位(静态模式),例如3967283.15,1022538.18,4872414.48
-l <位置> Lat,Lon,Hgt(静态模式),例如30.286502,120.032669,100
-t <日期,时间>场景开始时间YYYY / MM / DD,hh:mm:ss
-T <日期,时间>将TOC和TOE覆盖到方案开始时间
-d <欺骗时间>持续时间[秒](动态模式最大值:300静态模式最大值:86400)
-o <输出> I / Q采样数据文件(默认值:gpssim.bin;使用 - 用于stdout)
-s <频率>采样频率[Hz](默认值:2600000)
-b <iq_bits> I / Q数据格式[1/8/16](默认值:16)
-i禁用航天器场景的电离层延迟
-v显示有关模拟频道的详细信息
使用以上指令时,可以生成动态与静态的文件,例如
gps-sdr-sim -e brdc3540.14n -u circle.csv #静态模式
gps-sdr-sim -e brdc3540.14n -g triumphv3.txt #静态模式
gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 #动态模式
这一步有个坑,我就是被这个坑惨了,在指令前一定要加./,例如
./ gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 #生成北纬30,东经120,高度100m的星历
等待这个完成后,你会发现文件中多了一个gpssim.bin的文件,将它重命名为circle.1b.1M.bin
下一步,也是至关重要的一步,我前面尝试时会报错,报错的类型是无法找到文件或目录经过探索,发现这个指令中的limeplayer可执行程序未生成,所以执行以下步骤
cd player
gcc -O2 -Wall -o limeplayer limeplayer.c -lLimeSuite
执行完后会发现文件夹中多了一个limeplayer的可执行程序
接着执行最后一条指令,开始欺骗,记得加./,记得加./,记得加./
./limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin
此时,终端上应该显示LimeSDR的信息,并出现一系列数据流,开始发送信息。
我和OpenSourceSDR的技术大哥都没欺骗成功,应该是天线增益的问题,后期我会购买专用的GPS天线进行测试的。