【问题标题】:Transferring data using ultrasound使用超声波传输数据
【发布时间】:2011-09-08 07:03:06
【问题描述】:

Yamaha InfoSoundShopKick application 使用允许使用超声波传输数据的技术。那是在播放现代手机(iOS、Android)可以接收到的听不见的信号(>18kHz)。

在这些技术中使用的方法是什么?他们使用什么样的调制方式?

【问题讨论】:

  • 有关调制方案的问题可能属于electronics.stackexchange 论坛。在您确定了调制方案之后,关于 iPhone 或 Android 调制或解调某些协议所需的音频 DSP 代码的问题在这里可能更合适。
  • 至少有 1 种病毒使用超声波作为自我传播的手段。好吓人arstechnica.com/security/2013/10/…
  • @alexey - 你找到通过超声波传输数据的解决方案了吗?
  • @alexey shopkick 怎么用这个??用例是什么?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    更新:现在我想一想,如果您不传输任何数据,只是一些短信号,那么简单的开关将与单音一起工作。

    【讨论】:

    • 您能否参考 FSK 过去使用超声波传输数据的任何(重新)来源?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您可能对我为基于声音的调制解调器创建的库 libquiet 感到幸运。它为您提供了一些可供使用的配置文件,包括频谱内容高于 19kHz 的慢速“超声波耳语”配置文件。该库是用 C 编写的,但需要一些工作才能与 iOS 交互。

      【讨论】:

        【解决方案5】:

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

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

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

        如果您遇到过多的广播错误,请尝试在将每个频率值提供给解调器之前为每个符号选择更高数量的样本或对每个频率值进行带通滤波,有时只能使用诸如 BCH 或 Reed Solomon 之类的纠错码确保无差错通信的方法。

        每个人总是忘记谈论的一个话题是同步(要在接收端知道传输何时开始),您必须在这里发挥创造力并使用大量手机进行大量测试,然后才能得出实际的适用于所有人的检测阈值,请注意这也可能与距离有关

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

        熊富勤的数字调制技术

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

        John G. Proakis 的数字通信

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-20
          相关资源
          最近更新 更多