文章目录

  • 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相关推荐

最新文章

  1. Codeforces Gym 100513G G. FacePalm Accounting 暴力
  2. 解决 NDK is missing a “platforms“ directory.
  3. svn版本控制git(github)
  4. 使用SHA256证书进行微软数字签名代码签名
  5. ElasticSearch 6.0.0 IK分词 Kibana 6.0.0
  6. win7虚拟磁盘服务器,Win7系统如何删除虚拟磁盘 win7系统删除虚拟磁盘的方法
  7. 《Linux/UNIX OpenLDAP实战指南》——1.4 OpenLDAP目录条目概述
  8. 酷q插件可以用c语言开发么,使用酷Q SDK开发QQ机器人
  9. c#解压缩文件(zip)
  10. 合取式/合取范式/主合取范式/重言式/矛盾式 基本概念
  11. [实习心得]从百草园到三味书屋
  12. 数控弯管机xyz转换ybc的算法_全自动数控弯管机程序功能解析
  13. 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
  14. Android 手札小记
  15. 计算机资源管理器出问题怎么办,W7系统资源管理器已停止工作怎么办
  16. 【深度学习】超详细的 PyTorch 学习笔记(上)
  17. Centos7安装cairo-dock
  18. 几种仪表放大器电路总结
  19. 正则表达式验证方法整理
  20. java报序列错误和违反唯一约束条件的错误

热门文章

  1. 给你一个智能音响,你怎么测?
  2. 2022年R1快开门式压力容器操作考题及答案
  3. 如何使用Createjs来编写HTML5游戏(一)EaselJS简介
  4. 【Origin】Excel连接时的日期格式问题
  5. Cocos2d-x 3.0 红孩儿私家必修 - 第一章 初识Cocos2d-x 3.0工程
  6. cocos2dx开发-红孩儿工具箱
  7. matlab电磁场散度与旋度,对电场散度和旋度的理解
  8. CUIF2020中国高校信息化发展论坛嘉宾预告
  9. Java从入门到入土之Spring-IoC篇
  10. IE11浏览器SVG不显示的一种可能性