APP下载

基于Android手机的声波通信系统

2017-04-08向润昭石楠王岩

电脑知识与技术 2017年5期

向润昭 石楠 王岩

摘要:Wi-Fi、蓝牙、IC卡等近距离通信手段需要额外的硬件支持,随着通信技术的发展,智能手机成为人们随身携带的必备通信工具。本文设计并实现一种基于Android手机的声波通信系统,该系统利用声波作为传输媒介,安全性好、可靠性高。实验结果表明该系统可靠性高,数据传输出错率低。

关键词:安卓开发;近距离通信;声波提取;快速傅里叶变换,;RS码

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)05-0043-03

Abstract:The means of close communication such as Wi-Fi, Bluetooth, IC card etc. need extra hardware support. With the development of communication technology, smart mobile phones have become indispensable communication tools which are carried with themselves in peoples everyday life. This paper designs and realizes an acoustic communication system based on Android mobile phone. Acoustic waves are used as transmission media, which has good security and high reliability. The experimental results indicate that our system holds high reliability and low error rate during the process of data transmission.

Key words:Android development; close communication; sonic extraction; Fast Fourier Transform; Reed-solomon codes

1 概述

隨着通信技术的快速发展和智能手机的普及,近距离无线通信已广泛应用于日常生活中。目前,近距离无线通信的主要技术有蓝牙(Bluetooth)[4]、无线局域网(Wireless Fidelity,Wi-Fi)[5]、IC卡等。蓝牙、Wi-Fi、IC卡都需要额外的硬件支持,且无线电波的开放性与共享性,存在着安全隐患。蓝牙、Wi-Fi通信时必须事先建立连接,传输存在时间延迟。

声波通信利用声音信号短距离传输数据,具有安全性好、可靠性高、成本低等优点。声波通信广泛应用于声纹防盗系统[1]、手机声波支付、智能小区认证[2]、石油的勘探[3]等领域,成为手机应用的研究热点之一。

本文基于Android手机平台,设计并实现了一种手机声波通信系统。该系统由发送端和接收端组成。发送端对数据进行编码,并查找对应频率,产生该频率的椭球波声波信号,并通过扬声器输出。接收端接收声波信号后,通过快速傅里叶变换(FFT)提取声波信号中的基频,根据基频查找编码表,译码后获取数据。该系统可以传输数字、英文和中文等数据。

2 系统组成及通信过程

2.1 系统组成

系统主要由发送端和接收端组成。

发送端对数据进行数据编码、CRC&RS编码、去重复,随后产生离散的椭球波声波信号,并通过声波信道传输。

接收端接收声波信号,通过FFT提取声波信号中的基频,根据基频查找编码表,使用RS&CRC校验以保证传输正确可靠。最后通过译码获取数据。

2.2 系统通信过程

系统的通信过程如图2所示。

数据编码:将汉字、英文字母、数字0-9编码成位流,每4位表示一个码字。

CRC&RS编码:为了防止数据在传输过程中出错,本系统同时采用CRC检错码和RS纠错码。首先生成CRC检错码,进而产生RS纠错码。

去重复:为了便于发送端对声波的同步,对连续重复的码字用不同的频率替代,保证发送端任意两个相邻的椭球波的频率不同。

产生声波:根据椭球波函数,产生离散的声波数据并发送。

声波接收:接收端根据采样频率对声波信号进行持续采样、量化,并存入缓冲区。

声波同步:定位数据声波信号的开始位置。

基频提取:对接收端采样的数据进行连续的FFT,从每个椭球波中提取基频,根据编码表,将基频转换成码字。

RS&CRC校验:校验流程和编码流程相反,即先对码字进行RS纠错,再进行CRC检错,保证数据声波的正确性。

数据译码:根据编码规则,通过译码获取数据。

3 系统设计

3.1 起始频率选择

起始频率的选择关系到声波通信系统的数据传输,因此,起始频率的选择需要考虑环境噪声和手机的采样率。根据手机对采样率的限制,本系统选用44.1 KHz作为采样率。由奈奎斯特的采样定理可知,2*fmax < 44.1 kHz,手机的最高传输频率为22 kHz。同时考虑到环境噪声会对声波信号产生干扰,文献[5]中给出生活环境中的噪声范围31.5Hz- 8kHz。因此,8~22 kHz可以作为声波信号的传输频段。由于本系统是双向通信系统,发送端-接收端与接收端-发送端的传输频段不能重叠,最终本文选取噪声范围内的14 kHz作为声波的起始频率。

3.2 数据编码

对要传输的数据(0-9数字、字母、汉字)进行编码,每个码字4位,数字用1个码字表示,字母用2个码字表示,汉字用4个码字表示。选取声波信号的频率范围为14000~16850 Hz,每隔150 Hz为一个频率点,共20个频率点,其中16个频率点用于表示数据,2个用于起始和结束标志,2个用于重复码字数据,编码表如表1所。

3.3 椭球波设计

根据椭圆球面波的抗干扰性和能量聚集性[6, 7],设计一个椭圆球面波函数,函数如式(1)所示。

在本系统中,规定每个椭圆球面波播放的时间T为59ms;采样频率H为44.1kHz;量化精度B取16bit;播放音量V取[(0,1]]。

3.4 数据帧设计

数据帧是传输声波信号的数据单位。数据帧的格式如图4所示。

定义:将起始标志或间隔标志开始,RS码结尾的一系列码字称为码字单元。

(1) 起始标志:4位,对应频率F1,表示一帧的开始。

(2) 信息:4-52位,对應频率F2-F17,表示传输数据。

(3) RS码[8]:8位,RS码用于对码字单元进行纠错,如果发现码字单元有错,则通过末尾的8位RS码对数据进行纠错。本系统使用RS(15,13)。

(4) 间隔标志:既表示前一个码字单元的结束,也表示下一个码字单元的开始,

(5) CRC码[9]:16位,对一帧中所有码字单元中的信息检错。本系统将采用CRC-CCITT标准。

(6) 结束标志:4位,表示一帧的结束。

4 系统实现

开发环境:android-ndk-r9d-windows-x86_64、adt-bundle-windows-x86_64、Java-1.8.0_11、一台Intel? Core? i5-4590 CPU @ 3.3GHz的PC机、OpenSLES库文件。

运行环境:两部Android手机。

系统界面层采用Java语言实现,对于运行效率较高的底层采用C语言实现。Android开发中,Java语言通过JNI(Java Native Interface)与C语言通信。

4.1 产生声波

产生声波信号的流程如图5所示。

每次取出一个码字,通过编码表查询码字对应频率,通过调用sonic_generation函数计算每个离散点的声波数据信号,并对离散数据采用PCM编码[10],将编码后的数据通过声波信道传输,重复该过程,直到所有码字处理完。

产生声波所需参数及取值:单个椭球波播放时长T(59 ms)、声波音量V(0~1.0)、量化精度B(16 bit)、采样频率H(44.1 kHz)。

4.2 接收声波

接收端设置采样频率T(44.1 kHz),并进行采样。初始时,接收端对声波信号进行连续的FFT,得到14000~16850 Hz范围内噪声能量的平均值E,以该能量的2倍作为判断声波信号的阈值。将后续进行的FFT的平均能量与E进行比较,一旦后继连续3个FFT中14000 Hz频率点(起始标志)的能量大于阈值时,则认为声波信号到达。通过FFT提取声波信号中的基频,并根据编码表查找(表1)对应基频的码字,随后对码字进行恢复重复码字。RS&CRC校验先调用RS纠错函数对恢复后的码字纠错,然后使用CRC检错函数对一帧中的所有信息检错,若校验错误正确则报错,否则获取数据。接收声波流程如图6所示。

5 系统测试

使用eclipse-adt开发工具将发送端与接收端程序分别安装在两部android智能手机上。

(1) 点击安装在发送端手机上的声波发送端程序,输入要传输的数据,点击发送按钮。

(2) 点击安装在接收端手机上的声波接收端程序,点击开启按钮即可接收声波信号。

实验在合肥工业大学科技楼办公室进行,式(2)中声波音量V取0.5、量化精度B取16;式(1)中的单个椭球波时长T取59 ms、采样频率H取44.1 kHz、离散点k为0~260、椭球波频率F的取值如表1。

实验选取2组测试数据:18756013048(手机号码)、合肥工业大学,每组测试100次,实验距离:10cm。图7为部分测试图。

(a) (b)

(c) (d)

图 7 测试结果

测试结果显示,声波发送端在第30次发送手机号码时,声波接端识别次数为30;声波发送端在第88次发送中文时,声波接端识别次数为88。最终实验表明,该系统在办公室环境下的识别率为100%。

6 结束语

本文设计并实现的基于Android手机的声波通信系统,该系统能够发送、接收中文、英文字母和数字(0-9)。系统测试结果表明,该系统各模块都工作正常,能够完成对数据的正确传输,且声波的识别率能够达到100%。

参考文献:

[1] 茅剑, 林奇. 基于声纹识别的嵌入式防盗系统[J]. 计算机与现代化, 2009(11):163-165.

[2] 李青, 邓月明, 王赟, 等. 基于声纹识别的智能小区认证系统设计[J]. 网络安全技术与应用, 2011(4):36-38.

[3] 吴兴能, 肖承文, 张承森, 等. 常规数字声波质量可靠性识别与应用[J]. 国外测井技术, 2013(3):49-53.

[4] 宋明中, 侯思祖, 高振峰. 蓝牙通信安全技术[J]. 电力科学与工程, 2003(3):79-82.

[5] 张玉山, 刘纯利. 无线通信系统的关键安全研究[J]. 赤峰学院学报:自然科学版, 2012(16):66-67.

[6] 钟佩琳, 王红星, 赵志勇. 带通椭圆球面波函数能量聚集性分析[J]. 海军航空工程学院学报, 2009(6):681-684.

[7] Slepian B D, Pollak H O. Prolate spherical wave functions, Fourier analysis and uncertainty-I: Bell Syst. Tech. J, 2010[C].

[8] Reed I S, Solomon G. Polynomial Codes Over Certain Finite Fields[J]. Journal of the Society for Industrial & Applied Mathematics, 1960,8(2):300-304.

[9] 王根义. CRC校验码算法的研究与实现[J]. 电子设计工程, 2012(09):38-40.

[10] 郭慧. 基于PCM编码的模拟信号数字化实现[J]. 微型机与应用, 2017(2):70-71.