我正在开展的项目带来了一个奇怪的技术挑战。
数字设备需要通过麦克风插孔将数据传输到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个样本长度,以确保所有内容都被接收,并且在两个连续样本之间不会出现一点。
是否有一些我可以解除的开源代码?我想,从数字化的早期开始,软件工程师就一直在解决这个问题。我真的不想在这里重新发明轮子。
答案 0 :(得分:3)
您的理论数据速率将受到同步开销,各种类型的失真加上信噪比的限制。否则可能接近16 * 44100 bps。
更现实的是,您可能想要搜索一些火腿无线电RTTY或PSK源代码,因为已知这些协议在带有噪声的音频宽度通道上工作。
答案 1 :(得分:2)
根据我对调制解调器的理解和经验,实现效率(如同可靠的数据速率,可接受的BER)和低算法复杂度/成本只不过是一个白日梦。
以下是您在传输数据时将以某种方式面对的一些事情:
我个人建议考虑实施极其简单和低速的东西。实现类似于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发送器代码非常简单,可以移植到微控制器上。
答案 2 :(得分:1)
AFAIK,类似的方法用于通过使用麦克风解码来自IR接收器的信号的应用。无论如何,如果微控制器站点上有DAC,您可以轻松形成可由此类软件解码的脉冲。您可以查看WinLIRC:http://winlirc.sourceforge.net/audioreciever.html。