本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

温馨提示:“开源SDR实验室”是北京的。

本文利用Open Digital Radio套件、LimeSDR开发板来实现DAB(Digital Audio Broadcasting)发射。实验流程包括:首先,编译安装Open Digital Radio套件;然后,编辑ODR配置文件;最后,进行发射和接收。

目录

一、DAB概述

二、实验硬件软件

三、编译安装

1、安装autoconf

2、下载ODR套件相关代码

3、安装ODR-DabMod

4、安装ODR-DabMux

5、安装ODR-AudioEnc

6、安装welle.io软件

四、ODR软件配置

1、ODR-DabMod的配置

2、ODR-DabMux的配置

五、DAB发射和接收

1、odr-dabmod

2、odr-dabmux

3、odr-audioenc

4、welle.io

六、有用的链接

七、联系方式


一、DAB概述

DAB全称Digital Audio Broadcasting,即数字信号广播,是继AM、FM传统模拟广播之后的第三代广播--数字信号广播,它提供了接近CD质量的声音,广播及商机无限的附加数据服务,具有抗噪声、抗干扰、抗电波传播衰落、适合高速移动接收等优点,保证固定、携带及移动时接收信号的质量。它的出现是广播技术的一场革命。数字音频广播不仅传递音频,也可传递相关信息(路况、气象、新闻等),甚至也可传递图像。除了抗杂信、抗干扰能力强之外,传递的信号衰减性也低,使数字广播电台的发送传递距离可更远、覆盖率更广。具体参见https://baike.baidu.com/item/DAB

DAB使用宽带广播技术,通常在III频段(174–240 MHz)和L频段(1.452–1.492 GHz)中为其分配了频谱。从OSI模型协议栈的角度来看,DAB上使用的技术位于以下几层:音频编解码器位于表示层。 在它下面的是数据链路层,负责统计时分复用和帧同步。 最后,物理层包含纠错编码,OFDM调制,以及无线传输和接收数据。DAB+是DAB的升级版本,负责DAB标准的组织WorldDAB在2006年采用HE-AAC v2音频编解码器(也称为eAAC+)编码并同时宣布了DAB +,这是DAB标准的重大升级。https://en.wikipedia.org/wiki/Digital_Audio_Broadcasting#Technology

二、实验硬件软件

硬件---LimeSDR-USB、拉杆天线

https://item.taobao.com/item.htm?spm=a230r.1.14.27.22b977ffORpxg7&id=555064600966&ns=1&abbucket=8#detail

https://item.taobao.com/item.htm?spm=2013.1.w4023-13255721712.10.7d63676fEZFnks&id=563602659653

软件---Ubuntu运行支持Limesdr、SoapySDR、Pothos的环境,Open Digital Radio套件。

如图所示,实验中我们主要用到的软件有四个,分别为ODR-PADENC、ODR-AUDIOENC、ODR-DABMUX、ODR-DABMOD。其中ODR-AUDIOENC会自动调用ODR-PADENC,它们的作用是将音频文件编码成ZeroMQ发送给ODR-DABMUX模块,ODR-DABMUX能够将多路音频信号合并,并发送给ODR-DABMOD模块,ODR-DABMOD模块负责调制,并通过软件无线电发送DAB信号。

三、编译安装

1、安装autoconf

sudo apt-get install autoconf

我这里由于之前已经安装过了,所以运行上述命令后,显示如下图。

2、下载ODR套件相关代码

首先,git下载ODR套件,ODR-DabMod、ODR-DabMux、ODR-AudioEnc、ODR-PadEnc。

我的习惯是将所有与SDR实验相关的代码都下载到我的SDR文件夹中,cd进入SDR文件夹,然后依次执行以下四个clone命令。

git clone https://github.com/Opendigitalradio/ODR-DabModgit clone https://github.com/Opendigitalradio/ODR-DabMuxgit clone https://github.com/Opendigitalradio/ODR-AudioEncgit clone https://github.com/Opendigitalradio/ODR-PadEnc

3、安装ODR-DabMod

cd ODR-DabMod
./bootstrap.sh
./configure --disable-output-uhd
make
sudo make install
sudo ldconfig

注意:如果在./configure这句命令不加—disable-output-uhd的话,可能会碰到如下的问题,

当我们用了./configure --disable-output-uhd之后,就会得到如下结果,

4、安装ODR-DabMux

首先安装依赖:

sudo apt-get install build-essential libzmq5-dev automake libboost-system-dev libcurl4-openssl-dev

然后再进行编译安装:

cd ODR-DabMux
./bootstrap.sh
./configure
make
sudo make install
sudo ldconfig

5、安装ODR-AudioEnc

首先安装依赖:

sudo apt-get install libvlc-dev vlc-data vlc libvlc-dev
sudo apt-get install libjack-jackd2-dev jackd2
sudo apt-get install libasound2-dev libasound2

执行上述第两条命令过程中,会有提示界面弹出来,选择yes即可。

然后再进行编译安装:

cd ODR-AudioEnc
./bootstrap
./configure --enable-alsa --enable-jack --enable-vlc
make
sudo make install
sudo ldconfig

6、安装welle.io软件

welle.io软件配合RTL SDR可实现DAB信号接收,根据你的电脑系统下载相应的安装版本,wello.io可以与你的DAB发射在同一个电脑上(如Ubuntu),也可以在另外一个windows电脑上运行。

注意:如果你是Ubuntu 16.04系统上运行welle.io,可能会碰到如下问题:

搜了一下,找到了这个,https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/266

找到问题所在,缺少3.4.22。

四、ODR软件配置

1、ODR-DabMod的配置

创建文件dabmod.ini【我已创建配置好了该文件,请在百度云盘下载,文件中的#后边的是我自己添加的注释文字,仅供参考】,并写入以下内容后将dabmod.ini文件存放在DabMod的文件夹中,具体位置自己定就行,今后运行ODR-DABMod命令时,确保你终端所在路径下有这个dabmod.ini文件即可。

[remotecontrol]#远程控制配置
telnet=1
telnetport=2121
zmqctrl=1
zmqctrlendpoint=tcp://127.0.0.1:9400[log]#日志配置
syslog=0
filelog=0
filename=odr-dabmod.log[input]#输入配置
transport=zeromq#输入的编码类型
source=tcp://localhost:9100#输入监听的ip地址及端口
max_frames_queued=100#输入缓冲区最大值[modulator]#调制配置
gainmode=var#增益模式,可选fix、max、var
digital_gain=0.8#数字增益
rate=2048000#输出信号采样率[cfr]
enable=0
clip=50.0
error_clip=0.1[firfilter]#是否启用fir滤波
enabled=1[poly]# 使用无记忆多边形预失真
enabled=0
polycoeffile=polyCoefs[output]#输出选择,由于Limesdr通过soapy驱动,这里我们使用soapysdr
output=soapysdr[soapyoutput]#针对limesdr硬件进行的配置,这些配置方式与Limesuite的ini文件配置用法相同
device=
master_clock_rate=32768000
txgain=40
channel=9C#我们将发射频率设为9C信道(206.352MHz),若自定义中心频率,改为frequency=xxx[delaymanagement]# 用于运行单频网络
synchronous=0
mutenotimestamps=0
offset=0.002[tii]#发射机识别信息,这里我们直接禁用
enable=0
comb=1
pattern=11
old_variant=0

2、ODR-DabMux的配置

创建文件dabmux.mux【我已创建配置好了该文件,请在百度云盘下载,文件中的#后边的是我自己添加的注释文字,仅供参考】,并写入以下内容后将dabmux.mux文件存放在DabMux的文件夹中,具体位置自己定就行,今后运行ODR-DABMux命令时,确保你终端所在路径下有这个dabmux.mux文件即可。

general {dabmode 1nbframes 0    tist true
}
remotecontrol { telnetport 0 }
ensemble {id 0x4fffecc 0xec    local-time-offset auto#自动计算本地时间international-table 1label "DAB+ Radio Test"#电台标签shortlabel "DAB+Test"#短标签
}
services {srv-p1 { label "EA Radio" }#子频道1标签srv-p2 { label "Choice FM" }#子频道2标签srv-p3 { label "Clouds FM" }#子频道3标签
}
subchannels { #对子频道进行具体的配置
sub-p1 { #子频道1配置;  MPEGtype dabplus#子频道类型,这里是dab+,若使用dab,则改为audiobitrate 96#比特率id 1#子频道idprotection 3inputfile "tcp://*:9001"#输入源,这里是接受任何9001端口的数据作为输入源zmq-buffer 40#允许最大的缓存大小zmq-prebuffering 20#缓存中初始填充数据的大小}sub-p2 { #子频道2配置,与1类似;  MPEGtype dabplusbitrate 96id 2protection 3inputfile "tcp://*:9002"zmq-buffer 40zmq-prebuffering 20}sub-p3 { #子频道3配置,与1类似;  MPEGtype dabplusbitrate 96id 3protection 3inputfile "tcp://*:9003"zmq-buffer 40zmq-prebuffering 20}
}
components { #声明绑定comp-p1 { #绑定1label Prog1 #绑定的名称,可自定义service srv-p1 #对应上面的services中的srv-p1subchannel sub-p1 #对应上面的subchannels中的sub-p1}comp-p2 { #绑定2,与绑定1类似label Prog2service srv-p2subchannel sub-p2}comp-p3 { #绑定3,与绑定1类似label Prog3service srv-p3subchannel sub-p3}
}
outputs {  #输出方式zeromq { #zeromq方式,由于在dabmod.ini中我们配置了9100端口作为数据交互端口(source=tcp://localhost:9100),ODR-DabMux通过往9100端口上发数据达到与ODR-DabMod连接的目的; Listen on all interfaces, on port 9100endpoint "tcp://*:9100" #设置往9100端口发送数据allowmetadata true #是否支持元数据}throttle "simul://"
}

五、DAB发射和接收

1、odr-dabmod

sudo odr-dabmod -C dabmod.ini

确保你终端当前路径下有dabmod.ini文件。

2、odr-dabmux

odr-dabmux dabmux.mux

在dabmod.ini和dabmux.mux配置文件中,我们定义了使用9100端口通信,并且在dabmux.mux中定义了开启3个端口,这三个端口分别为9001、9002、9003,用于接收来自odr-audioenc的信息;接下来,我们需要使用odr-audioenc,将音频编码后发送到这三个端口。

3、odr-audioenc

使用odr-audioenc对音频文件test32.wav进行编码,并发送到9001端口:

odr-audioenc -i ./test32.wav -r 32000 -c 1 -o "tcp://localhost:9001" -l -b 96

其中:

i参数为播放的音频文件

r参数为文件的采样率,只支持32k和48k

c参数为声道数

o参数为输出,这里我们定义使用tcp协议输出到9001端口

l为显示声音峰值,可去掉

b为比特率

4、welle.io

接下来可以使用dab接受设备进行收听了,我使用的是rtl-sdr,打开软件,点击右上角三个点,再点击Expert Settings,打开专家模式,

此后,我们需要在软件界面的左下角切换信道,我们选择9C信道。

我们可以点击右下角,添加Service Details和Spectrum两项方便观察。

Frame sync、FIC CRC、Frame errors全部变绿,说明当前状况良好可以听到声音,否则需要调整天线或检查其它错误。关于这一点,确实有时候接收效果不是特别的好,这一点还有待于改进。而且如何调整天线的方向和位置还不是特别有规律,欢迎大家可以一起反馈、探讨!一个奇怪的现象就是,RTL SDR把天线杆拧下来反而有时候接收效果会变好。

我们在dabmux.mux中设置过第一个子信道的名称为EA Radio,其对应的端口为9001,所以我们此时双击左边的EA Radio,将听到播放的音频。

此时我们可以再开启另外两路子信道上的音频播放:

odr-audioenc -i ./test32.wav -r 32000 -c 1 -o "tcp://localhost:9002" -l -b 96

odr-audioenc -i ./test32.wav -r 32000 -c 1 -o "tcp://localhost:9003" -l -b 96

这样,我们可以双击左边的另外两个标签,也可以听到声音。

通过改变-i参数后面的音频文件,我们可以自定义播放的音频。

目前找到一组比较好的参数是双声道音频文件32k采样率的情况下用单声道播放,播放会有一定的失真目前还在研究最佳的参数设置,暂时找到使用双声道的32k采样率的音频文件单声道播放失真比较小。

odr-audioenc -i ./test32.wav -r 32000 -c 1 -o "tcp://localhost:9001" -l -b 96

六、有用的链接

https://limemicro.com/community/digital-audio-broadcasting-dab-with-the-limesdr-and-odr-mmbtools/

https://baike.baidu.com/item/DAB

https://medium.com/@sundayglee/digital-radio-broadcasting-using-limesdr-and-odr-tools-part-4-98a1c38c4c5b

七、联系方式

LimeSDR DAB发射 RTL SDR DAB接收相关推荐

  1. LimeSDR 自定义软件无线电 (SDR)平台 USB3.0

    LimeSDR 自定义软件无线电 (SDR)平台 USB3.0 LimeSDR是一个开源的,支持应用程序的软件定义无线电(SDR)平台,可用于支持几乎任何类型的无线通信标准;它可以发送和接收UMTS, ...

  2. 基于RTL—SDR及Simulink的FM收音机仿真

    在有了一些rtl-sdr基础,并学习了一些通信系统建模与仿真原理后,便利用rtl-sdr模块在Simulink上进行FM收音机仿真. 目录 一.知识储备 SDR-Receiver模块原理 电台AM-D ...

  3. springmvcdate类型接收不到_无线电小课堂:如何在市区环境有效接收短波信号,选什么天线?...

    如何在市区环境有效接收短波信号 收听短波电台是一个令人兴奋的爱好,但对于城市居民来说,接收体验往往是令人失望的:我们几乎听不到任何有用信号,甚至是信号比较强广播电台的信号也听不到几个.信号都被埋没在许 ...

  4. 超声波水下通讯测试接收发射信号的完整性

    大禹电子每款新产品的研发到诞生,都会经过不同部门,一层层把关,一次次检测,一步步完善,一个个筛选,最终交到客户的手上. 今天跟随技术人员来到风景优美的光明港公园进行超声波水下通讯测试.技术人员分别在河 ...

  5. 基于无线发射接收的物体远离报警器的设计

    word完整版可点击如下下载>>>>>>>> 基于无线发射接收的物体远离报警器的设计.rar-嵌入式文档类资源-CSDN下载1.资源内容:毕业设计lun ...

  6. 【433 发射接收源码】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 433小结记录 记录 一.433小功率无线射频代码模块 二.使用步骤 1.433发射( 主循环阻塞发射 中断发射) 2.433接收数据 ...

  7. 基于51单片机的红外遥控信号的发射和接收

    本讲内容: 介绍红外遥控的知识,通过例程展示红外遥控程序的编写方法. 红外线简介: 在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光.目前几乎所有的视频和音频设备都可以通过红外 ...

  8. (一)field ii发射接收信号处理,超声波声场计算

    1.1发射接收信号流程 超声波声场计算理论参考[1],实际仿真理论原文为[3],其他论文参考feild ii users_guide-3.1. 对于线性声场系统,发射孔径发射一个冲激信号时,空间某点会 ...

  9. 图解红外遥控的发射和接收原理

    在智能机器论坛上看一篇关于红外遥控的原理文章,感觉不错,特转一下以备查阅 为了更直观地让大家理解红外遥控的原理,这篇文章用图片来帮你理解红外遥控的发射管原理和接收原理. 红外遥控的概述: 红外线的光谱 ...

  10. 手机信号的发射与接收

    手机的出现方便了人们的沟通,提高了时间的利用效率,手机是怎样实现信号的通信呢? 在手机出现之前,通信是有线方式,即电话或电报来实现彼此的沟通,而无线技术的发展使得人们可以通过手机实现任何时间和任何地点 ...

最新文章

  1. NoSql数据库使用半年后在设计上面的一些心得
  2. 【转】IT名企面试:腾讯笔试题(2)
  3. [SoapUI] How to create a random UUID in each Request's Headers
  4. Codeup——问题 H: 部分A+B (15)
  5. maven mirror 优先级
  6. jsp 中select 下拉选择框 el 三元运算符 如何选中与不选中
  7. 中空格的asc码表_Excel怎么快速提取混合单元格中的中文、英文、数字?
  8. 热缓存 IHotCache --ESBasic 可复用的.NET类库(19)
  9. JBOSS的下载安装、环境变量配置以及部署
  10. 计算机网络(四)—— 网络层(1、2):网络层概述、网络层提供的两种服务
  11. 【解决】maven install出现fatal error compiling
  12. 基于PHP的定时交作业系统
  13. FormData数据格式
  14. 《神经科学:探索脑》学习笔记(第2章 神经元和神经胶质细胞)
  15. 现在开房都不需要在前台办理入住了?刺激
  16. 如何成为一个iOS开发者
  17. 希腊字母书写以及发音,常用场景
  18. python学习笔记之pdf文档提取
  19. 一打卡作弊软件被指破坏钉钉系统:CEO 被判 5 年 6 个月
  20. 中等专业学校校园广播系统解决方案-职业中专校园IP网络广播应用

热门文章

  1. MongonDB基本概念和文档操作
  2. ACCESS集团VTN 引领跨境电商新机遇 助力海外品牌找到增长突破口
  3. pdfbox、icepdf工具实现pdf转图片
  4. 笔记本不显示计算机图标,笔记本电脑开机后不显示桌面图标或任务栏怎么解决...
  5. PowerApps 社区计划:供个人使用的免费开发环境
  6. 机器学习技法-01-2-Large-Margin Separating Hyperplane
  7. 8.7.1. Declaration of Enumerated Types
  8. 40163 php,【PHP】微信支付JsApi 40163错误,_PHP_ 少侠科技
  9. 性能测试实战(五):参数化+关联
  10. 基于YOLOv7的车辆装载负荷&车牌检测系统(源码&教程)