HackRF One—收音机例子

news/2024/10/30 13:32:43/

根据上一篇教程,我们已经在Ubuntu上安装好了GunRadio环境,但默认GunRadio环境是没有OsmoSDR模块的,为此我们要为GunRadio安装OsmoSDR模块,安装也很简单,只需要在命令行执行以下指令,再次打开GunRadio就会看到OsmoSDR模块了。

sudo apt-get install gnuradio

进入GunRadio界面,第一步我们要做的是修改Options中ID和Title。Title可以不进行修改,但在新版本的GunRadio中,如果不修改ID,是会报错的,无法保存。

下面借鉴教程:HackRF_中文教程_哔哩哔哩_bilibili来完成一个收音机的测试。

1. 与视频教程不同,我们从OsmoSDR中选取osmocom Source,以实现和无线电设备的通信,该模块将通知HackRF处于接收模式,采样的数据通过USB口接收并传入后续模块。

2. 我们也不再使用视频中的WX模块,而改用QT模块,所以,为了展示信号展示,我们选取QT GUI Frequency Sink模块。

3. 在Variable中修改采样率samp_rate,将采样率提高,修改到10e6。

4. 修改osmocom Source中的ch0:Frequency(HZ)参数,修改到一个电台频率,如果不知道就先随便改到100e6HZ左右(设置一个Variable,center_freq);修改RF Gain为0,因为不需要发射信号,所以射频放大就不需要了;IF Gain和BB Gain可以使用默认的20,也可根据实际情况适当提高,一般提高IF Gain收听效果会明显增强。

        BB gain:基带增益baseband frequency gain

        IF gain:中频增益Intermediate frequency gain

        RF gain:射频增益Radio frequency gain

5. 修改GUI Frequency Sink中的Average,与视频中的模块不同,该模块不仅可以设置on/off,还可以选择low,medium,high,我们可以选取medium试试。还有一点,将GUI Frequency Sink的Frequency改为center_freq。

6. 到此,就可以运行看一看了,我们应该可以看到大致的信号,但并不能听到声音。其运行效果如图。

7. 为了实现调节频率位置,找到最优的收听位置,使用Signal Source和Multiply模块,通过Multiply将osmocom Source(HackRF收到的信号)与Signal Source(CPU产生的信号)相乘。

8. 设置一个Variable,channel_freq 在实验中设置为95.4e6,把Signal Source中的Frequency设置为center_freq-channel_freq。再copy一个QT GUI Frequency Sink,运行会出现两个界面查看是否实现了调频,

可以看到95.4已经在屏幕中间了

 9.下面把信号转为声音信号,首先使用一下filter,使用lowpass filter。首先创建Variable:channel_width,数值为200e3,设置lowpassfilter的属性Decimation(降低采样率):int(samp_rate/channel_width);Cutoff Freq:75e3,Transition Freq:25e3。产生操作是,采样率为10MB的信号传入到低通滤波器中,它会把采样率降低50倍,输出10MB/50=200k每秒的采样点。

10.滤波后,使用Rational Resampler再更改采样率,这样做是因为lowpass filter只能整数倍修改。现在需非整数修改,12/5,参数Interpolation:12,Decimation:5。这里200k*12/5=480k

11.之后使用核心模块FM解调器WBFM Receive,把复数信号转换为实数音频信号,设置采样率Quadrature Rate:480e3,进一步降低采样倍数 Audio Decimation:10。所以out的是480k/10=48k。

12.声卡接收到的是48k的信号,选取Audio Sink,设置参数Sample Rate为48k。此时就可以运行听音乐了!但是,我在运行时gunradio报了一个python语法的错误,我尝试解决,但最后随便了修改了以下sample_rate,就好了...错误原因不明,所以如果大家也出现了错误不妨reset以下设备试试。

13.调节声音,在WBFM模块和Audio Sink两个模块中间添加Multiply Const来乘一个数值,将Multiply Const中的数据类型改为flow,否则会报错。乘数constant就是乘以的倍数,我们希望可以随时调整,视频中使用的是WX GUI Slider,这里我们换做QT GUI Range,我们设置QT GUI Range的属性 ID:audio_gain,Default Value:1,Start:0,Stop:10,Step:0.2,其含义比较好理解。并将Multiply Const中的constant参数设定为audio_gain,这样就可以实现在界面中通过滑块调节声音了。

14.至此,照着视频中的步骤已经做完了,在视频中,老师留了一个课后作业,就是把频道也做成可调节的。在此,我将channel_freq从Variable改成了GUI Range,并设置了起始和步长,即可很容易实现调频了。


http://www.ppmy.cn/news/445464.html

相关文章

熊猫烧香代码

program Japussy; uses Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry}; const HeaderSize 82432; //病毒体的大小 IconOffset $12EB8; //PE文件主图标的偏移量 //在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同 //查找280000002…

很嗨网络收音机

1、最好用的网络收音机,资源丰富,收集了N多电台 2、界面美观大方,看不够的界面 3、播放速度快,比在线收听快N多倍 4、体积小巧,占用系统资源低的惊人,仅526KB 下载地址:http://www.henhigh.c…

FM收音机入门,以及Python实现FM调制解调

FM收音机入门以及调制解调的实现 FM收音机基础知识FM的调制和解调原理PYthon 实现 FM调制与解调FM调制FM解调 FM收音机基础知识 调制分为三种:调幅(AM),调频(FM)和调相。 收音机的全部频率是指包含短波、中波、长波、航空和调频…

熊猫烧香

随着“熊猫烧香”病毒的始作俑者的落网,关于“熊猫烧香”病毒的危害和杀毒风波告一段落,然而随着“熊猫烧香”病毒源代码在网上的流行,一种隐含的巨大的危害仿佛才刚刚开始。一、 引言 去年秋天回趟老家,适逢家中秋收后“祭宅神”…

科技爱好者周刊(第 173 期):网络收音机的设计

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。 周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗…

“熊猫烧香”让“熊猫卫士”走开

熊猫烧香病毒这段时间让很多人叫苦不迭,它的作者虽然被抓,但也肯定会被写入中国病毒软件的历史。我比较小心,不仅装了正版Kaspersky防毒软件,还启用了防火墙,不熟悉的网站一般不去,也不用QQ,所以…

Android实现FM收音机

实现源码下载链接 http://download.csdn.net/detail/hi_zhengjian/8794731 ***方法一:直接在app里面通过JNI访问HAL层*** FmRadio应用代码结构如下: 一、FMRadio.java通过FmRadioService提供的服务通过JNI访问到HAL层: FmRadioService实现I…

linux java8 安装包(版本8u131-b11)

Linux jdk/8u131-b11 包 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicenseaccept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz 标记一下…