【问题标题】:How to transmit binary through a single waveform如何通过单个波形传输二进制
【发布时间】:2012-01-06 19:27:26
【问题描述】:

我正在从事的项目提出了一个奇怪的技术挑战。

数字设备需要通过麦克风插孔向 iPhone 传输数据。

我需要从微控制器和 iPhone 端编写一个接口。

对于这个特定问题是否有任何既定的协议?我没有双时钟和数据线的奢侈(ala PS/2 协议https://en.wikipedia.org/wiki/PS/2_connector)。

我知道 F2F (https://en.wikipedia.org/wiki/Biphase_mark_code) 但这是要解码的皇家 PITA。

还有一个优化带宽的问题(在效率和算法复杂性之间取得某种合理的平衡)。 iPhone 以 44.1 kHz 采样;理论上每个样本可以传输至少一位,具体取决于它是高还是低(即零的哪一侧——理论上每个样本当然是 16 位,但试图真正将带宽优化到理论上的最大值将是......这个词是……疯了吗?),实际上我可能需要为每个位使用 3 个样本长度,以确保接收到所有内容并且位不会落在 2 个连续样本之间。

是否有一些我可以提取的开源代码来执行此操作?我想软件工程师从数字时代开始就一直在解决这个问题。我真的不想在这里重新发明轮子。

【问题讨论】:

    标签: signal-processing modem


    【解决方案1】:

    您的理论数据速率将受到同步开销、各种类型的失真以及信噪比的限制。否则可能会接近 16*44100 bps。

    更实际地,您可能想要搜索一些业余无线电 RTTY 或 PSK 源代码,因为已知这些协议在某种程度上可以在有噪声的音频宽度通道上工作。

    【讨论】:

      【解决方案2】:

      根据我对调制解调器的理解和经验,实现效率(例如,良好的数据速率和可接受的BER)和低算法复杂性/成本只不过是一个白日梦。

      以下是您在传输数据时会以一种或另一种方式面对的一些事情:

      • 频道(例如房间)噪音。它会使信号失真并导致解码错误。使用幅度调制编码的信息在这里受到的影响最大。
      • 多个信号路径。接收器(麦克风)将接收房间内物体的反射信号。信号会进一步衰减。
      • 更改通信通道/信号路径。如果设备不是静止的和/或房间内有其他东西在移动,则信号将随着时间的推移而改变其属性,并且将进一步难以解码(有时是不可能的)。
      • 发射器和接收器中使用的振荡器将以略微不同的速率工作。更重要的是,它们的频率会随着时间的推移而波动。这需要在高数据速率/长数据包下进行额外同步。
      • 硬件和软件中的失真,尤其是非线性失真,尤其是在 iPhone 方面,严重阻碍了其音频通道上的任何高速数据通信。 iPhone 的设计初衷不是用作调制解调器,也不必满足调制解调器的所有典型要求。您可能会遇到麦克风非常非线性且其频率范围很窄,音频样本有时会丢失或凭空出现,发送或接收样本块之间的音频存在明显间隙等。

      我个人建议考虑实现一些极其简单和低速的东西。实施类似于 ITU-T 建议 V.21 和 V.23 中描述的 2-FSK 调制解调器。使用一个频率传输 0,使用另一个频率传输 1。

      首先让它在软件中以不超过 1200 位/秒的速率工作,然后再集成到设备中。让它在添加了白噪声的软件中完全工作,并且当编码器和解码器的采样率有些不同时(提示:您需要一个采样率转换器,但一些音频编辑器能够重新采样波形文件,您可以这样做手动)。

      除非 iPhone 非常糟糕,否则您应该能够在其上实现调制解调器,但这不是一件容易的事,而且我认为您无法在网上找到任何可以按原样几乎立即使用的代码做好工作。

      顺便说一句,在dsp.stackexchange.com 提出这个问题可能是个好主意。

      编辑:见my answer to a different question and code in it。虽然速度不是特别快,但一个简单的类似 V.23 的 1200 位/秒调制解调器可能在这里工作。通过一些调整,它可以支持更高的数据速率。 FSK 发射器代码非常简单,可以移植到微控制器。

      【讨论】:

        【解决方案3】:

        AFAIK,类似的方法用于使用麦克风解码来自 IR 接收器的信号的应用程序。无论如何,如果微控制器站点上有 DAC,您可以轻松形成可由此类软件解码的脉冲。您可以查看 WinLIRC:http://winlirc.sourceforge.net/audioreciever.html

        【讨论】:

          猜你喜欢
          • 2013-01-19
          • 1970-01-01
          • 2017-01-22
          • 2013-01-02
          • 1970-01-01
          • 1970-01-01
          • 2018-03-27
          • 2011-08-27
          • 2010-09-25
          相关资源
          最近更新 更多