LimeSDR mini实现GPS信号接收

LimeSDR mini实现GPS信号接收

作者微信公众号:小卫星

 

操作系统: Ubuntu18.04 LTS

 

0、起因

      LimeSDRmini既然包含了GPS频段(L1 1575.42MHz),那就应该能接收GPS信号并定位,但是纵观网络,讲SDR模拟GPS欺骗的多,接收的少。为什么呢?我认为有两点:

      (1)GPS信号到地功率弱,基本上在-158dBW左右,比噪声还低,一般射频前端做的差一点点,就什么信号也收不到。

LimeSDR mini实现GPS信号接收_第1张图片

      (2)与本地SDR晶振的稳定度和准确度有关,在信号下变频的混频过程中,事实上是将本地晶振频率倍至与1575.42MHz相当的一个频率作为混频本振,此时本地晶振的误差全部放大进入信号中,导致多普勒频率大幅增加,如果本地晶振很差,软件很难搜索和跟踪。

 

       目前,在网上有两个地方讨论了LimeSDR接收GPS,一个是Lime microsystem官方人员做的:

http://v.youku.com/v_show/id_XMTY2NDU3Nzg5Ng==.html?spm=a2h0k.11417342.soresults.dtitle

       这个里面讲了基本的原理,但是没有代码、方法也比较粗略,但是仍然很有指导意义,建议想做这方面的人看看。(Danny的英语很标准,大家不妨多听几遍,舒克贝塔008做了翻译,很准确,赞一个)。

       另一个是MYRIAD RF官方上的讨论

https://discourse.myriadrf.org/t/running-your-limesdr-on-gnss-sdr-on-ubuntu-17-10/2315

       该栏目的发起者martywittrock是个高手,且乐于助人,不仅将自己开发的过程记录下来,还热情指导其他研究人员。

 

      好了,不多说,开始我们的表演吧

 

1、准备硬件

(1)弄一块limesdr mini

      当然得先买一块limesdr mini,怎么买略去不表。

LimeSDR mini实现GPS信号接收_第2张图片

(2)弄一块馈电小板

      这个东西是给有源天线供电之用,二三十元一个,淘宝有卖。找根线给它供电。

LimeSDR mini实现GPS信号接收_第3张图片

(3)弄一块天线

      这个也是几十元一个,淘宝有卖。

LimeSDR mini实现GPS信号接收_第4张图片

(4)找根SMA线把它们连起来

LimeSDR mini实现GPS信号接收_第5张图片

2、安装Ubuntu18.04 LTS

(1)下载iso镜像

https://www.ubuntu.com/download/desktop

(2)安装镜像至u盘

      建议使用Rufus,相比其他Universal-USB-Installer之类速度快的多(毕竟我们的u盘快不到哪里去)。

http://www.softpedia.com/get/System/Boot-Manager-Disk/Rufus.shtml

(3)安装后确认版本

LimeSDR mini实现GPS信号接收_第6张图片

(4)确认python版本

LimeSDR mini实现GPS信号接收_第7张图片

      可以看到python安装了两个版本,一个是2.7,一个是3.6,这有利于我们使用,因为gnuradio是2.7的。

3、安装lime驱动

      Lime驱动其实有两个,一个是LimeSuite的官方驱动,一个是Soapysdr第三方驱动,都要安装。

(1)PPA,Personal Package Archive(个人软件包存档),是默认情况下并未被包含在Ubuntu中的软件的一个集合,通过其安装myriadrf的官方驱动。

sudo add-apt-repository -yppa:myriadrf/drivers

LimeSDR mini实现GPS信号接收_第8张图片

(2)更新

sudo apt-get update

LimeSDR mini实现GPS信号接收_第9张图片

(3)安装limesuite驱动

sudo apt-get install limesuiteliblimesuite-dev limesuite-udev limesuite-images

LimeSDR mini实现GPS信号接收_第10张图片

      我装wps,没装成功,这条语句的执行结果变成这样了:

LimeSDR mini实现GPS信号接收_第11张图片

(4)安装soapysdr驱动

sudo apt-get install soapysdrsoapysdr-module-lms7

LimeSDR mini实现GPS信号接收_第12张图片

(5)测试驱动是否正常

SoapySDRUtil --find

LimeUtil --find

      插入LimeSDR mini时

LimeSDR mini实现GPS信号接收_第13张图片

      这里有时候media是2.0,有时候是3.0,建议如果是2.0再插拔下试试。

LimeSDR mini实现GPS信号接收_第14张图片

4、安装并运行gnss-sdr

      gnss-sdrv0.0.9是一个开源GNSS软件定义接收机,从代码看目前能接收GPS L1 C/A信号和Galileo E1B、E1C信号,两类信号中心频点都在1575.42MHz,但是带宽不同。

(1)安装gnss-sdr

sudo apt-get install gnss-sdr

LimeSDR mini实现GPS信号接收_第15张图片

(2)编辑limesdr_GPS_L1.conf文件

      按照

      https://gnss-sdr.org/conf/

      指示将 hackrf_GPS_L1.conf 另存为limesdr_GPS_L1.conf,并修改其中的

      ;#Next line enables the internal HackRF One bias (3.3 VDC)

      SignalSource.osmosdr_args=hackrf,bias=1

LimeSDR mini实现GPS信号接收_第16张图片

      为

      ;#Next line enables the LimeSDR

      SignalSource.osmosdr_args=driver=lime,soapy=0

LimeSDR mini实现GPS信号接收_第17张图片

(3)插入limesdr mini,执行接收机软件

gnss-sdr --config_file=limesdr_GPS_L1.conf

LimeSDR mini实现GPS信号接收_第18张图片

      可见,并没有搜到信号,将天线伸出窗外

LimeSDR mini实现GPS信号接收_第19张图片

      有两颗星可以看见,所有的测量量都被写入文件保存。

5、总结

      (1)gnss-sdr源代码编写者水平很高,有软件工程的思维,利用了C++很多新东西,但是代码不能直接在Windows编译,阅读难度较高。

      源代码链接

https://github.com/gnss-sdr/gnss-sdr

      (2)本人是将天线粘在棍子上伸到窗外的,24层(总楼高33层),附近遮挡确实比较严重,但是仅有两颗星收到,有点遗憾,不太应该。分析可能与该天线有关,天线带宽较宽,采样率低,信号混叠可能比较严重,下一步提高采样率,改变滤波器参数再试。

      (3)下一步的工作是收Galileo信号,如果顺利,继续阅读代码,修改源码,添加北斗信号捕获跟踪。

以下为后来补充:     

      (4)carlesfernandez  实施上添加了专门针对LimeSDR的配置文件,在这里:

https://github.com/carlesfernandez/gnss-sdr/blob/next/conf/gnss-sdr_GPS_L1_LimeSDR.conf

 

目录为:gnss-sdr/conf/gnss-sdr_GPS_L1_LimeSDR.conf,大家可以直接使用,但是要在编译前使用

 

git checkout next

转到next分支,next分支有很多重大的变化,main函数就有体现,直接可以看出来。

你可能感兴趣的:(LimeSDR,GNSS)