使用超声波传输数据

时间:2011-06-04 07:41:20

标签: iphone android audio signal-processing data-transfer

Yamaha InfoSoundShopKick application使用的技术允许使用超声传输数据。这是一个听不见的信号(> 18kHz),可以通过现代手机(iOS,Android)获取。

此类技术使用的方法是什么?他们使用什么样的调制?

5 个答案:

答案 0 :(得分:3)

我发现这种方法有几个问题。首先,18kHz是听不见。许多人听不到它,特别是随着年龄的增长,但我知道我当然可以(我经常进行听力测试,与工作有关)。此外,大多数手机的A/D converters上都有不同的低通滤波器,而且许多设备,特别是较旧的Android设备(我个人认为会发生这种情况),过滤低于16 kHz左右的所有设备。因此,您的应用程序无法保证可以在任何硬件上运行。 iPhone应该可以做到。

在调制方面,它可能是真的,但我肯定会排除AM。声音在音量方面几乎没有稳健性。如果我要实现类似的东西,我会选择FSK。我认为PSK会因声反射而失败等。困难在于您正在非常窄的带宽内进行非稳健的能量传输。我当然不怀疑它可以实现,但我没有看到这样的东西证明可靠。只是恕我直言,就是这样。

更新:现在我想一想,如果您没有传输任何数据,只需要一些短信号,那么普通的开关就可以使用单音。

答案 1 :(得分:3)

对于Yamaha InfoSound和ShopKick不能说,但我们在项目中使用的是频率调制的变化:载波频率由数字二进制信号调制,其中0和1对应17 kHz和18分别为kHz。至于解调器,我们尝试了外差。您可以在此处找到更多详细信息:http://rnd.azoft.com/mobile-app-transering-data-using-ultrasound/

答案 2 :(得分:2)

超声没有什么特别之处,原理与通过调制解调器的数据传输相同,因此任何digital modulation都是-in原则可行的。你只有一个特定的频段(18khz以上)和一些实际的必要条件(我认为媒介是非常不可靠的),建议使用低比特率的简单稳健方案。

答案 3 :(得分:0)

您可能对我为基于声音的调制解调器libquiet创建的库感到满意。它为您提供了一些可供使用的配置文件,包括慢速"超声波耳语"光谱含量高于19kHz的轮廓。该库是用C语言编写的,但需要一些工作才能与iOS接口。

答案 4 :(得分:0)

我不知道他们是怎么做的,但我就是这样做的:

如果它是一个字符串,那么请确保它不长(错误概率越高越长)。让我们假设我们正在处理ASCII代码的重要部分,即最多为字符数127,那么你需要的只是每个字符7位。将这个字符转换成比特并使用QFSK调制这些比特(有几种调制可供选择,基于频移的那些已经证明是我从传统的那些尝试过的最强大...我已经...为这个用例创建了我自己的调制方案)。选择载波频率为18.5,19,19.5和20 kHz(如果您希望在设计中在数学上严格,请选择频率值,以确保符号转换时的正交性和相位连续性,如果可以的话,a,a避免突然符号转换的好方法是将符号乘以相同大小的窗口,例如高斯或Bartlet。根据我的经验,你可以将这个值移动到17.5到20.5 kHz的范围内(如果你降低它将开始打扰人们使用你的应用程序,如果你走得更高,平均类型麦克风频率响应会削弱你的传输并引起不必要的错误)

在接收器端实现相关或匹配滤波器接收器(FFT接收器也可以工作,特别是零填充接收器,但它可能稍微慢一点,我不建议使用Goertzel,因为多普勒引起的频移效果或扬声器 - 麦克风非线性可能会影响您的接收效果)。收到比特流后,使用它们制作字符,您将恢复信息

如果您面临太多广播错误,请尝试为每个符号选择更高数量的样本,或者在将每个频率值提供给解调器之前对其进行带通滤波,使用纠错码(如BCH或Reed Solomon)有时是唯一的确保无差错沟通的方法。

每个人总是忘记谈论的一个话题是同步(在接收方知道传输开始的时候),你必须在这里有创意,并且在你可以得到一个实际的东西之前用很多手机做很多测试检测阈值适用于所有,请注意这也可能是距离依赖

如果您不熟悉这些科目,我会推荐几本好书:

Fuqin Xiong的数字调制技术

BERNARD SKLAR的数字通信基础和应用

John G. Proakis的数字通信