一种基于FFT检测的声波检测方法

文档序号:30509343发布日期:2022-06-25 01:25阅读:320来源:国知局
一种基于FFT检测的声波检测方法
一种基于fft检测的声波检测方法
技术领域
1.本发明涉及无线通信的短距离通信技术领域,具体而言涉及一种基于fft检测的声波检测方法,可用于声波控制、声波数据传输和声波支付。


背景技术:

2.伴随着智能手机的发展,未来的通信模式将呈现一种移动通信为主、多种通信方式并存的模式。其中,无线通信技术在短距离通信方面的多样化发展极大地方便了人们的生活,常见的短距离无线通信技术有蓝牙、wi-fi、近场通信(near field communication,nfc)等。蓝牙、wi-fi、nfc等常用技术需要硬件支持,硬件成本高。同时这些技术都是高频通信技术,需要通信频段的支持。当前广泛使用的电子支付技术需要运营商网络的支持,在没有通信网络的情况下,无法使用。


技术实现要素:

3.本发明针对现有技术中的不足,提供一种基于fft检测的声波检测方法,能够利用现有智能手机等设备的扬声器和麦克风实现通信,设备成本低,安全无辐射,不需要通信网络的支持,在没有网络的情况下,也能实现数据传输;尤其适用于传输信息量少、通信距离短的应用场景。
4.为实现上述目的,本发明采用以下技术方案:
5.本发明实施例提出了一种基于fft检测的声波检测方法,所述声波检测方法包括以下步骤:
6.s1,读取信号帧,在信号帧的首尾处分别增设开始标识和结束标识,生成待传输的声波数据;
7.s2,对待传输的声波数据进行编码,将声波数据由十进制格式转化成多进制数据表示,得到编码信号:
[0008][0009]
式中,l为声波数据data经过n进制编码后的数据长度,s1(n)为信号序列中的第n位数据,n《l,s1(n)∈{0,1,2,

,n-1};
[0010]
s3,在编码信号中增加取值n作为跳变码元,得到修正后的声音信号序列:
[0011][0012]
其中,n=1,2,

,l-1;
[0013]
s4,对声音信号序列进行fsk调制,采用多频点fsk调制信号将编码信号通过扬声器传输至空气信道;采用麦克风对经空气信号传输的声音信号进行采样接收,并将采样到的声音信号转换成相应的电信号;
[0014]
s5,采用lms滤波模块对转换后的电信号进行滤波,滤除其中包含的环境噪声;
[0015]
s6,基于fft变换进行峰值检测,将模值最大的数据对应的频率作为检测的信号频
率,实现fsk解调,得到相应的声音信号序列;
[0016]
s7,对解调结果进行译码,还原声波数据data。
[0017]
进一步地,步骤s1中,根据扬声器和麦克风的频率特性,设计选取信号帧开始标识和结束标识的频点。
[0018]
进一步地,步骤s2中,对将要传输的字母符号,提取其ascii编码的序号作为相应的信息位。
[0019]
进一步地,步骤s2中,对将要传输的中文字符,提取其gb2312编码的序号作为相应的信息位。
[0020]
进一步地,步骤s4中,采用n+3个fsk调制频点将编码信号通过扬声器传输至空气信道,分别对应1位开始标识、1位结束标识、n位信息位数据和1位跳变码元。
[0021]
进一步地,步骤s5中,采用lms滤波模块对转换后的电信号进行滤波,滤除其中包含的环境噪声的过程包括以下步骤:
[0022]
s51,在远端安装麦克风拾音器,麦克风拾音器与麦克风的距离大于声音信号的最大允许接收距离,使麦克风拾音器只能接收环境噪声x(n);
[0023]
s52,将麦克风拾音器输出的环境噪声x(n)送入lms自适应滤波器,设lms自适应滤波器的权系数为wi,噪声预测信号y(n),则第k个噪声预测信号为:
[0024][0025]
其中,lms自适应滤波器有m个分支,w=[w1,w2,

,wm]为lms自适应滤波器每个分支的权系数向量,x(k)=[x
k-1
,x
k-2
,

,x
k-m
]是长度为m的噪声环境序列;w
t
是w的转置矩阵;wi是lms自适应滤波器的第i个分支的权系数向量;x(k-i)是第k个接收时刻,lms自适应滤波器第i个分支上环境噪声信号;
[0026]
s53,根据下述公式得到输出信号e(n):
[0027]
e(n)=d(n)-y(n)
ꢀꢀꢀꢀ
(4)
[0028]
式中,d(n)为麦克风的实际输入信号,y(n)为预测噪音信号;
[0029]
用w(k+1)、w(k)分别表示第k+1和第k个时刻lms自适应滤波器权系数向量,则lms自适应滤波器的梯度下降法迭代公式为:
[0030]
w(k+1)=w(k)+2μe(k)x(k)
ꢀꢀꢀ
(5)
[0031]
式中,μ为迭代步长因子,取值由matlab仿真得到。
[0032]
进一步地,步骤s7,根据公式(3)由s(n)还原信号序列s1(n),再由公式(1)得到发送数据
[0033][0034]
其中,n=1,2,

,l-1。
[0035]
本发明的有益效果是:
[0036]
第一,本发明提出的基于fft检测的声波检测方法,数据编码信号采用多进制、多频点fsk调制方案,对硬件设备的兼容性强,提高了系统的可靠性;采用lms噪声抵消技术有效降低环境噪声,提高系统检测的精确度;可利用现有智能手机等设备的自有硬件实现通信,成本低。
[0037]
第二,本发明提出的基于fft检测的声波检测方法,声波通信频段约为100hz—
10khz,所处频带资源不受现有通信频段的限制;与现有电子支付方式相比,本专利不需要通信网络的支持,在没有网络的情况下,能实现数据传输。
[0038]
第三,本发明提出的基于fft检测的声波检测方法,由于声波是由物体振动产生的,是安全的、无辐射。
附图说明
[0039]
图1为本发明实施例的编码数据信号的帧结构示意图。
[0040]
图2为本发明实施例的lms降噪系统框图。
[0041]
图3为本发明实施例的基于fft检测的声波检测方法流程图。
具体实施方式
[0042]
现在结合附图对本发明作进一步详细的说明。
[0043]
需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
[0044]
实施例一
[0045]
图3为本发明实施例的基于fft检测的声波检测方法流程图。参见图3,该声波检测方法包括以下步骤:
[0046]
s1,读取信号帧,在信号帧的首尾处分别增设开始标识和结束标识,生成待传输的声波数据。
[0047]
s2,对待传输的声波数据进行编码,将声波数据由十进制格式转化成多进制数据表示,得到编码信号:
[0048][0049]
式中,l为声波数据data经过n进制编码后的数据长度,s1(n)为信号序列中的第n位数据,n《l,s1(n)∈{0,1,2,

,n-1}。
[0050]
s3,在编码信号中增加取值n作为跳变码元,得到修正后的声音信号序列:
[0051][0052]
其中,n=1,2,

,l-1。
[0053]
s4,对声音信号序列进行fsk调制,采用多频点fsk调制信号将编码信号通过扬声器传输至空气信道;采用麦克风对经空气信号传输的声音信号进行采样接收,并将采样到的声音信号转换成相应的电信号。
[0054]
s5,采用lms滤波模块对转换后的电信号进行滤波,滤除其中包含的环境噪声。
[0055]
s6,基于fft变换进行峰值检测,将模值最大的数据对应的频率作为检测的信号频率,实现fsk解调,得到相应的声音信号序列。
[0056]
s7,对解调结果进行译码,还原声波数据data。
[0057]
一、对待传输的声波数据进行编码
[0058]
编码信号的帧结构设计如图1所示,由开始标识、信息位、结束标识构成。信息位和开始、结束标识选取不同频点的调频信号,以便于接收端检测区分。
[0059]
因为环境噪音中可能存在与发送信号频率相同的声波,导致检测端出现误判。信号帧增设开始、结束标识,用于降低检测端因环境噪音造成误判的概率。
[0060]
由于声音的发送和接收是通过扬声器和麦克风完成,不同厂家的产品工作频段各不相同,不同性能的产品价格又相差很大,而现有的声波通信技术常采用多频组合的方案,频点多,频带宽,因此设备的兼容性差。本实施例采用多进制编码,可兼顾成本和设备兼容性。根据扬声器和麦克风的频率特性,灵活选用不同的进制编码,以改变频点数目,从而改变声波信号的带宽,匹配扬声器和麦克风的性能。
[0061]
将要传输的十进制数据转化成多进制数据表示。假设数据data经过n进制编码后数据长度为l,信号序列中任意s1(i),i《l有s1(i)∈{0,1,2,

,n-1},则
[0062][0063]
考虑到软件发送端生成信号序列、产生对于频率声波的时间和硬件检测端采样、fft检测、lms滤波的时间会随着数据data的值改变而变化,因此,在实际传输过程中每个数据的传输时长是不同的。
[0064]
当信号序列s1(n)中出现连续、相同信号时,fft检测时会造成误判,因此本专利采用一种跳变码元编码,即编码信号增加一个取值n,用于打破连续相同的码元序列,保证检测端接收到的每位码元都是不同的。
[0065]
增设一个取值后,可得到信号序列
[0066][0067]
其中,n=1,2,

,l-1。
[0068]
示例性地,对将要传输的字母符号,提取其ascii编码的序号,采用权利要求1中的编码方法传输其对应的序号,实现字母符号的传输。对将要传输的中文字符,提取其gb2312编码的序号,采用权利要求1中的编码方法传输其对应的序号,实现中文字符的传输。
[0069]
二、信号传输
[0070]
发送端声波信号由扬声器发射,接收端采用麦克风作为拾音器,将声波信号转变成电信号。
[0071]
编码后的数据采用多频点fsk调制信号发送。根据图1的信息帧,传输的数据包括信息位和开始、结束标识,信息位数据为n进制数据,加上一位跳变位共需n+1个频点,再加上开始、结束标识两个频点,本编码系统共需设计n+3个fsk调制频点。
[0072]
三、滤除环境噪声
[0073]
在本实施例采用lms噪声抵消技术,降低环境噪声,实现方案如图2所示。接收机接收信号d(n)为声波信号s(n)与环境噪声x(n)的混合信号,环境噪声x(n)严重影响系统接收精确度。为降低环境噪声的影响,安装一个麦克风拾音器,该拾音器安装在远端,只能接收到环境噪声,但无法接收发送设备发送的声音信号。将该信号送入lms滤波器。降噪系统输出信号e(n)为降低噪声后的检测信号,用于fft解调。
[0074]
在此基础上,对经过降噪处理的信号e(n)做fft运算,将接收信号从时间域转换到频率域,在信号频点处出现峰值。通过峰值检测,获得发送信号的频点。相比较传统的fsk解调方案,fft信号检测可以实现快速数据检测。
[0075]
四,解码还原信号
[0076]
解码时,解调的数据是编码数据,根据式(3)由s(n)还原信号序列s1(n),再由式(1)得到发送数据
[0077][0078]
其中,n=1,2,

,l-1。
[0079]
恢复s1(n)后,将其带入式(1)即可获取数据data的值。
[0080]
本实施例以智能手机作为发送设备,以嵌入式硬件开发的专用接收设备为实现案例。应当理解,本实施例的技术方案还可应用于智能手机与智能手机的声波传输,专用设备与智能手机的声波传输,专用设备间的声波传输。应用场景包括声波控制(如声波开锁、声波签到),声波数据传输等,特别是未来采用声波技术的数字货币的支付。
[0081]
实施例二
[0082]
考虑到智能手机的广泛运用,本实施例发送端在android系统的智能手机上采用全软件实现。因硬件开发更容易拆分、测试,故检测端在嵌入式单片机上实现,本案例选取stm32f767开发板。
[0083]
参见图3,在本实施例采用四进制编码。发送端通过软件编程实现,包括数据读取、四进制编码、跳变编码、5fsk调制,自主产生声波序列并通过扬声器发送等操作,检测端基于硬件开发实现,包括数据采样、lms滤波器降噪、基于fft的信号检测、结果显示等操作。
[0084]
本案例实施具体包括步骤:
[0085]
s1:信号帧结构设计。根据扬声器和麦克风的频率特性,设计选取信号帧开始标识的频点fs=2000hz,结束标识的频点fe=1000hz。
[0086]
s2:信息位的编码采用四进制编码,通过将数据转为四进制实现。假设数据data经过四进制编码后数据长度为l,信号序列中任意s1(i),i《l有s1(i)∈{0,1,2,3},则:
[0087][0088]
编码信号的第五个取值作为跳变码元,用于打破连续相同的码元序列,保证检测端接收到的每位码元都是不同的。
[0089]
增设第五个取值后,可得到信号序列
[0090][0091]
其中,n=1,2,

,l-1。
[0092]
s3:声波信号的fsk调制。对s(i)∈{0,1,2,3,4}的每个取值,选取不同频点的信号作为其发射信号,实现fsk调制。智能手机可发出的声波频率范围为20hz—20khz,考虑到智能手机扬声器发出声波的频率范围在100hz—10khz时不会过分衰减,能保证声波正常传输,故选取载频f0=500hz,f1=1500hz,f2=2500hz,f3=3500hz,f4=4500hz作为s(i)∈{0,1,2,3,4}的调制信号。信号波形如式(6):
[0093]
[0094]
其中a为信号幅值,本案例中选取a=127。
[0095]
s4:声音信号的发送与接收。智能手机扬声器发送声波信号,可运用java语言进行android应用程序开发实现。调用audiotrack类的write方法,直接写入数据,产生播放不同频点的单频声波信号。
[0096]
接收端的麦克风采用的是max4466声音传感器模块,将声音信号转变成电信号,然后由stm32f767的dma双通道adc采样实现信号的接收。
[0097]
s5:lms噪声抵消模块。采用10分支的横向滤波器作为自适应滤波器。硬件电路设计时,stm32f767芯片的pa5管脚为主输入端,输入信号序列d(n)为声波信号s(n)与环境噪声x(n)的混合信号,pa0管脚为参考输入端,输入信号为环境噪声序列x(n)。调用stm32开发库的adcdualconvertedvalue函数分别读取输入信号d(n)和环境噪声序列x(n),输入噪声抵消模块。由c语音编程实现lms迭代算法。
[0098]
s6:基于fft的信号检测实现。在stm32的开发中,fft通过调用st提供的dsp库中的变换功能实现。该功能包括复数fft(cfft)/复数fft逆运算(cifft)、实数fft(rfft)/实数fft逆运算(rifft)、和dct(离散余弦变换),及配套的初始化函数。
[0099]
本实施例采用dsp库中的基4浮点fft算法来实现fft变换,并计算每个点的模值,主要用到以下三个函数:arm_cfft_radix4_init_f32,arm_cfft_radix4_f32,arm_cmplx_mag_f32。通过这三个函数,系统实现了fft计算,并实现取模存储。
[0100]
进行峰值检测,将模值最大的数据对应的频率作为检测的信号频率,实现fsk解调。
[0101]
s7:信号译码。解码时,根据式(7)还原信号序列s1(n)
[0102][0103]
其中,n=1,2,

,l-1。将s1(n)带入式(4)即可获取发送数据data的值。
[0104]
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1