Hackrf_One_Lesson1
文章目录
- lesson1
- osmocom source
- Osmocom Sink
- WX FFT Sink
- 实验流程
- 播放信号
- 解调信号转为音频
- 待解决的问题
lesson1
osmocom source
csmocom source是一个抽象的模块,能够与各种软件无线电设备通信,并且他生成的数据将会被后面的模块进行处理,这个模块实际的工作方式是通知HcakRF工作于接受模式。采样获得的数据流从HackRF中流出通过USB接口流入后面的模块。
RF Gain改为0,即把天线旁边的前端放大器关闭,除非需要接受微小信号,FM广播信号一般都比较强,除非是在边远地区
Osmocom Sink
在GNURadio里,Sink表示信号输出,Source表示信号输入。
- Device Arguments可以填上hackrf=0
- sample rate设置为samp_rate*4
- Ch0 Freq Corr (ppm)
- HackRF的频率较正值,在没有经过仪表校正时,可以直接先填0,有条件的同学可以使用频谱仪或信号源进行标定。
- Ch0 Frequency 要发射的频率,此处我填了93e6,表示93MHz
- Ch0 RF Gain(dB)
- 表示HackRF放大器是否开启
- 尽管此处Gain可任意输入,但事实上只有两档,0和14dB,并不是连续可调的,在此我们填14
- Ch0 IF Gain(dB)
- 表示HackRF的中频增益
- 从电路上来看,应试指的是进入MAX2837收发器后给的增益
- 在此我们填40
- Ch0 BB Gain(dB)
- 表示HackRF的基带增益
- 可能指是的进入ADC/DAC芯片后给的增益
- 在此我们填20
- Ch0 BandWidth,填250e3
WX FFT Sink
使之能够看见信号中的频率分量。
实验流程
将Average调整为On,这样就能在FFT图中简单地观察每一个FM广播台
从天线上收到的实时FM信号,天线收到后经过HackRF,经过USB、Osomocom Source进入FFT Sink。可以看到某几个Mhz的频率,每个波峰都表示一个FM电台。可以看到频率范围是-5Mhz到5Mhz,暂时可以把0Mhz理解为中心频率也就是97.9Mhz。
关闭时点击软件工具栏中的关闭而不是窗口停止,这样保证Hackrf回到初始的待机状态
在FFT Sink中调整基带信号,将它从0改为97.9Mhz。使用变量方便其他模块调用
播放信号
将要观察的信号(实验中我采用的是100Mhz附近的信号)调整到基带信号位置(频谱的搬移)
使用Multiply模块:进行点对点乘法,把一个数字信号乘以另一个信号。数字信号其实就是一串数字,从一个模块流入另一个模块。
Signal Source模块:是一个CPU生成的信号,改变其频率(他的频率是想要平移的量,|center_freq—channel_freq|)
channel_freq是关注的频率,创建一个变量。在signal source里设置Frequency为center_freq—channel_freq。(在模块内部支持任何python的数学表达式)
解调信号转为音频
使用Low Pass Filter低通滤波器,因为想要的是0hz附近的信号。
将Cutoff Freq设置为75e3,Transition Width设置为25e3.
设置Decimation(降低采样率):降低多少倍数取决于目标信号的带宽。显然目前的带宽太大,同时采样了多个广播,避免将CPU资源浪费在过高的采样上。填入原来高采样率和目标低采样率的比值,这个比值正是Decimation。即samp_rate/channel_width。
设置新的变量,channel_width,FM电台带宽是200khz。
此时产生报错的原因:降低采样率只能填入整数,之前为浮点数,使用python语法int(),即可解决。
实现了:将10M每秒的采样点输入低通滤波,将采样率降低50倍,输出200k每秒的采样点
增加一个Rational Resampler模块,乘上12/5的比值。原因是12/5不是整数,而LP Fliter只能是整数,必须要用非整数来更改采样率。
核心器件FM解调器,它把FM无线电信号(复数基带信号)转换为实数音频信号。
WBFM Receive模块代表宽带调频,这也是FM广播的调制方式。
改变参数,Quadrature Rate输入的采样率,Audio Decimation是这个模块要进一步降低的采样率倍数,这里输入10
总的看起来,大部分模块的采样率为10Mhz,经过低通滤波后采样率变成了10M/50=200Khz,200k*12/5=480k,再除以10为48k,最终要输出48k每秒的数据给声卡
在后面增加上Audio模块和常数乘法器用于放大减小音量,增加一个WX GUI Slider模块,使之能够动态的改变音量的大小
值得注意的是hackRF采样率默认10Mhz,最大采样率为20Mhz
待解决的问题
“u” = USRP
“a” = audio (声卡)
“O” = overrun (PC 无法同步地接受来自 USRP 或 声卡的数据 - PC not keeping up with received data from usrp or audio card)
“U” = underrun(PC 无法快速的提供数据 - PC not providing data quickly enough)
aUaU == audio underrun (PC 无法快速地给 声卡提供数据 - not enough samples ready to send to sound card sink)
uUuU == USRP underrun (PC 无法快速地给-USRP提供数据 - not enough sample ready to send to USRP sink)
uOuO == USRP overrun (USRP 采样掉链源于它没有及时准备到位 - USRP samples dropped because they weren’t read in time)
在使用过程中一直出现aUaU符号,暂时未解决该问题,希望看到这里的朋友们能给一点思路。
Hackrf_One_Lesson1相关推荐
最新文章
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
- 解决 NDK is missing a “platforms“ directory.
- svn版本控制git(github)
- 使用SHA256证书进行微软数字签名代码签名
- ElasticSearch 6.0.0 IK分词 Kibana 6.0.0
- win7虚拟磁盘服务器,Win7系统如何删除虚拟磁盘 win7系统删除虚拟磁盘的方法
- 《Linux/UNIX OpenLDAP实战指南》——1.4 OpenLDAP目录条目概述
- 酷q插件可以用c语言开发么,使用酷Q SDK开发QQ机器人
- c#解压缩文件(zip)
- 合取式/合取范式/主合取范式/重言式/矛盾式 基本概念
- [实习心得]从百草园到三味书屋
- 数控弯管机xyz转换ybc的算法_全自动数控弯管机程序功能解析
- 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
- Android 手札小记
- 计算机资源管理器出问题怎么办,W7系统资源管理器已停止工作怎么办
- 【深度学习】超详细的 PyTorch 学习笔记(上)
- Centos7安装cairo-dock
- 几种仪表放大器电路总结
- 正则表达式验证方法整理
- java报序列错误和违反唯一约束条件的错误