使用RTL-SDR和Matlab Simulink玩转软件无线电(十七)

2023-12-12 06:58

本文主要是介绍使用RTL-SDR和Matlab Simulink玩转软件无线电(十七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.9.4 寻找你手机的频率

观察你身边的移动信号频谱很有趣,但是观察你自己手机的发射和接收频率更有趣。为了做到这一点。你需要找到你手机当前的工作频率。手机的频率会变好,你可能注意到你的手机会自动变更信号标准,根据区域不同会选择使用不同种类的信号。你的手机可以在信号种类不变的情况下更改信号频率,这取决于你那里的用户数量和连接需求。


为了找到你手机的频率,你必须打开工程模式,这样你才能看到详细信息。这些设置在大多数手机上都有,还会提供当前信号强度(dBm),以及最重要的上下行链路频率。这些频率用ARFCN来表示,而不是实际的MHz,这个数字可以很方便地转换到频率,你可以上网找找[77]。对于喜欢挑战的读者,可以自己通过3.1的公式来计算GSM频段。你可能需要查一下其它几个f常数的值,因为不同国家不一样。


[119]提供了一个进入工程模式的教程。如果你的手机包含在内,你就能够根据教程来打开工程模式,找到所有的信息进行后面的练习,如果你的手机没有这个模式,那么你还是看看其它手机发出的信号。


练习3.8 观察移动信号频谱:挑战

这个练习包括一系列的挑战,你会观察手机在不同标准下的发射和接收的信号。你需要一个可以进入工程模式的手机来做这个练习。如果你的手机不支持,你也借不到这种手机,你还是可以看看我们的实验录像。


(a)打开Matlab。设置工作文件夹。然后打开模型。


(b)运行程序。保证你选择的天线接到RTL-SDR上,RTL-SDR连接到你的电脑,并且Matlab可以与其通信。点击开始运行按钮启动程序。


(c)进入工程模式,参照[119]GSMUMTS甚至LTE-A都可能出现,取决于你手机的功能。浏览这些菜单,你会了解到你现在使用的标准,你连接上以后还能看到信号功率。如果是GSM网络,你还能看到ARFCN,这个数字可以转化为频率。


大多数手机无法在工程模式中开启关闭连接,也就是说你可能要经常退出或重新进入这个模式。如果你认为你观察到的频谱与你做的操作不符,你可能要重新进入此模式观察连接信息,因为你的手机可能自动更改频率了。


另一点,现在的新技术(3G,4G)都主要提供的是数据连接。这样上下行链路的流量可能很不一样,因为频道是非对称的。比如你在看在线视频,大多数都是下行链路的流量,上行链路的流量很少,因为你的手机是在下载数据。如果你在把照片上传到社交网络上,那就会反一反。


(d)当你的手机使用不同标准时,你可能要做不同的操作以便观察。2G模式下,你可以发短信或者打电话,这样你的天线能收到上行链路的活动。当你在观察3G或者4G信号时,你可以做一些在线搜索或者观看在线视频,这样你会得到下行链路的数据包。许多手机可以选择制式,比如可以把3G或者4G关闭。你可以看看你手机是否能强制进行2G连接。一般来说,手机默认会选择最高速的连接。有时候你不能选择你当前的制式,你要耐心一点。


(e)拨打GSM电话。下面的视频展示的是手机上的工程模式,以及ARFCN号码如何计算为频率,最后是使用RTL-SDR/Simulink观察这个电话的频谱。


语音通信的帧可能以200kHz宽度的脉冲显现。


(f)GSM挑战。你看了视频吗,现在该你自己试试了。把你的手机强制连接到GSM网络,可以试试选择2G模式或者关掉数据连接,然后找到上行链路的中心频率。把RTL-SDR调谐到这个频率,然后打个电话。你可以看到一个很强的GSM信号吗?这个截图展示的是我们看到的上行链路的频谱。你看到类似的东西了吗,你也可以发一条短信,看看有什么不一样。


(g)使用UMTS网络来观看在线视频。下面的录像展示的我们先进入工程模式,查到UMTS上下行链路的频率。然后调谐到RTL-SDR的上行频率,并观看Youtube视频。


手机发出的信号用于向网络发出连接请求和获取视频数据的请求。视频不停地下载到手机的缓存里,请求和应答也不停地从手机发出,用来保持连接。


(h)UMTS挑战。你看过视频了吗?现在该你自己试试了。确认WiFi关闭,然后强制手机连接到3G模式。到工程模式里找到UMTS的上下行频率。把RTL-SDR调谐到你的上行频率,然后访问互联网。下面的截图应该跟你看到的差不多。


(i)你看到你手机发出的5MHz宽的脉冲吗?你在这个模式下打电话或者发短信会看到什么?你要知道UMTS频道是在几个用户间共享的。因此,你应该找一个人口稀疏的地方尝试,这样效果更明显。如果你是这个频道唯一的用户,那么你会看到更明显的效果,你的手机的活动可以立即反应在频谱上。如果你不确定频谱图反应的是否是你自己手机的信号,你可以试试把手机调整到飞行模式。飞行模式保证了手机停止一切连接,并且频谱图上你自己的信号会消失。


(j)UMTS频道非对称。接下来你可以看看UMTS上下行链路的区别。把手机设置3G模式,然后用前面介绍的方法找到上下行频率。


(k)你先打开一个比较长的在线视频,然后调谐RTL-SDR到手机的上行频率。尽管你在观看视频时主要是在下载数据,但是你也在上传大量控制数据,这些数据经过上行链路传回基站。这是因为数据传输协议的要求,你的手机看上去上下行链路的活动差不多。此时,如果你把增益调低,比如5dB左右,你应该能看到频谱仪上的脉冲。FFT图会有跳上跳下,瀑布图也会显示出这种很短时间的脉冲,以橘黄色的线显示。


然后把频率调谐到下行频率。这时你的增益要高一点(一般在30dB),然后你可以跟前面看到的比较一下。你应该能看到此时的活动看上去是不变的,保持在高位。增益要比前面搞的原因是你的手机离你的RTL-SDR很近,而基站可能几百米远,这样意味着你的RTL-SDR天线收到的原始信号强度是不同的。


(l)当你完成观察频谱后,你可以继续往下看或者直接跳到下一节。


(m)最终的移动通信挑战。最后的挑战是查询UK Ofcom的移动基站数据库,找到你附近的移动基站。如果你不在英国,你应该找找你自己国家的。


(n)对在英国的读者,Sitefinder是一个很好的网络资源,你可以看到附近的基站的具体位置,并且显示它们支持的标准以及运营商。使用Sitefinder,来找到到底是哪里的基站在与你的手机通信。我们会给你一些提示。


查询你手机当前连接到的运营商

找到你当前的标准,是2G还是3G或者4G

找到你的上下行频率

在你附近的几个基站里找到与前面这些详细信息相符的基站


这篇关于使用RTL-SDR和Matlab Simulink玩转软件无线电(十七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483664

相关文章

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

C# 预处理指令(# 指令)的具体使用

《C#预处理指令(#指令)的具体使用》本文主要介绍了C#预处理指令(#指令)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1、预处理指令的本质2、条件编译指令2.1 #define 和 #undef2.2 #if, #el

C#中Trace.Assert的使用小结

《C#中Trace.Assert的使用小结》Trace.Assert是.NET中的运行时断言检查工具,用于验证代码中的关键条件,下面就来详细的介绍一下Trace.Assert的使用,具有一定的参考价值... 目录1、 什么是 Trace.Assert?1.1 最简单的比喻1.2 基本语法2、⚡ 工作原理3

C# IPAddress 和 IPEndPoint 类的使用小结

《C#IPAddress和IPEndPoint类的使用小结》本文主要介绍了C#IPAddress和IPEndPoint类的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录一、核心作用网络编程基础类二、IPAddress 类详解三种初始化方式1. byte 数组初始化2. l

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达