手机超声波通信技术介绍:
手机超声波通信,指利用超声波技术在手机间传递信息,比如大家熟知的支付宝的声波支付就是典型的超声波通信技术。其原理很简单,一句话就是把一段时长的频率作为一种信号,发送方把信号编码成很多段等长的频率,通过播音设备发射出去;接收方通过录音设备录制声音,然后将等长的频率识别出来,最后还原成对应的信号。这样就做到了声波传输,比如现在我们的编码是32进制的(0-31),对应的频率我们设定为1k-4.1k,每个信号对应的时长为100ms,如果我们发射信号3,2,10,30则对应的频率为1.3k,1.2k,2k,4k,每段频率的时长为为100ms,接受端识别器的主要作用就是识别这些100ms的频率,然后还原成信号。声波传输是利用声音实现文件的快速传输的一套技术解决方案:采用跨平台的技术,实现任何能够发送声波与接收声波的智能设备之间的数据传输。
手机超声波通信功能介绍:
- 声波传输支持一对一传输,也支持一对多的传输。
- 支持字母、数字、符号传输。
- 在安静情况下,有效传输距离可以达到5米左右,在一般应用场景下也能达到很可观的识别距离。
- 使用特殊的降噪算法,对噪声有很好的抑制作用,在汽车行驶过程中、公交车、食堂、大马路、办公场所等都可以达到良好的识别率。
- 在一般应用场景下数据传输正确率达到98%以上。程序中添加了自动纠错算法,可以在一定程度上自动纠正传输中发现的错误,同时也能在一定程度上保证收到数据的正确性。
- 支持的平台。目前该声波传输技术已经在iOS、OSX、Android、Windows、Linux、以及嵌入式平台(mips和arm指令集)上成功运行,并都有成功的商业案例。
7 .嵌入式特殊定制和优化。随着嵌入式智能设备的大量兴起(比如车载设备、智能摄像机、智能路由器等等),目前有大量的嵌入式应用需要集成声波传输功能,针对嵌入式平台我们专门对内存占用和运算效率作了优化,内存占用10K以内,cpu主频150M就可以顺利运行声波传输模块。 - 可定制性强,比如对不同的频率、不同的声音、音量等等进行定制。
- 超声波传输支持。我们可以为用户提供超声波传输版本,也即,在传输过程中听不到声音。
- 还可以为用户提供声音的叠加功能,比如类似支付宝的咻咻功能,也可以为用户添加其他特殊的声音,比如狗叫、猫喵等等。比如发送一段信息,发出的是狗叫,对方收到的是信息。
声波传输如何工作?
声波传输技术由两部分组成:音频协议与网络协议。音频协议将待传数据编码为一系列选定频率的音调;网络协议则将数据以键值形式存入服务器,其中键为与数据唯一对应的10个字符。
音频协议
音频协议的原理很简单,易于实现。建立一个含有32个字符([0-9,a-v])的表,并将每个字符映射到频率表。频率表是根据乐理,通过伴音的计算生成。
0 = 1760hz
1 = 1864hz
…
v = 10.5khz
一个完整的声波包包含20个音(即20个字符),每87.2毫秒发一个音 。前两位为信息头,采用“hj”,用以通知接收端开始接收。中间10位为有效的信息位,是有效的传输信息,即Key值经过映射后的频率信息。最后8位为RS(Reed-Solomon)校验位,通过RS校验算法,对中间10位进行计算,生成8位的校验信息。。如下图:
校验主要用来处理由于噪声干扰造成的信息接收错误。通过RS校验,可以纠正25%的错误信息。
发送端(编码器)
发送端设备只需能够发送1.7khz到10.5khz的正弦声波即可。为了将发送出的声波变得更好听,可以对声音进行一些美化处理,比如在我们的例子中,采用了椭圆形窗对声波进行了音量上的优化。
接收端(解码器)
接收端需要记录声音,并将其进行解码以及容错处理。其对算法的要求相对较高,降噪及容错处理对能否得到正确的解码信息是至关重要的。所以接收端需要一定的数字运算能力,对设备的硬件配置有一定的要求。对于算法的细节,我们会逐步的公开并开源。
超声波通信技术应用场景:
1.声波支付
支付宝作为支付相关的应用的代表,相信声波支付功能很多人都用过,但对其原理不一定都了解。
实现原理:声波支付听起来好像都是咻咻的声音,其实咻咻声并不是信息的载体,真正的信息是通过超声波传输的。比如A手机发起咻咻声(此时A也是不停的在循环发送信息),售货机B则在不停的监听。A手机在发送信息前,会先和后台服务器交互,把各种关键的交互信息上传到服务器,然后将要发送的信息加密(支付者的id信息),把加密后的信息转换成超声波,然后再叠加咻咻声,最后发送出去。B在正确收到A的信息后,解码成功后,就连接服务器,确认本次交易,确认成功后,支付生效。
关键点:
- 发送的是支付者的id信息,一般10个字符以内。
- 发送信息的手机在不停的发送支付者的id。
2.传输文件
chirp和茄子快传是最典型用于在手机间快速传递大量信息(不需要互联网)的应用,比如文件,视频等。茄子快传和chirp都可以传输大文件,但原理上有比较大的区别。
实现原理:A手机发送文件给B手机。B是接收者,B首先建立wifi热点,然后建立sockt通道,最后把wifi用户名和密码通过声波发送出去(用户名和密码在10字符左右)。A处于监听状态,在收到声波,解码出wifi用户名和密码后,连接wifi热点,连接成功后,通过socket把文件发送给B。茄子快传和chirp的根本不同在于chirp高度依赖于互联网;而茄子快传则不需要互联网,仅需要wifi。
关键点:
- 发送的信息为10个字符左右的用户名和密码。
- 接收者不停的在发送wifi用户名和密码。
- 真正的信息传输是通过wifi传输的,声波作为握手的工具。
3.传输少量信息
chirp是最典型的应用,比如两个应用之间直接传输少量的文本或者其他信息,原理和上面的差不多,我就不啰嗦了