一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信

一文读懂Android/iOS手机如何通过音频接口与外设通信


更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦:

这里写图片描述
图1 红外遥控器
这里写图片描述
图3 手机刷卡器

1 音频口通信特点

1.1 通用性强

在智能手机普及的今天,手机的对外通信接口多种多样,而其中以3.5mm的音频接口通用性最强,基本所有的手机、平板电脑都会有这个接口,所以在一些要求通用性的设备上,音频接口成为首选。

1.2 速率低

由于手机音频部分的采样频率一般为44.1KHZ(部分国产山寨为8KHZ
),这极大的限制了音频通讯的速率。
我们都知道如果是44.1KHZ的采样频率,那么最高的信号频率只能为20KHZ左右,而信号周期也不可能只有2个采样点,通常要到10个以上,这样层层下来通讯速率可想而知。

1.3 小信号

音频通信的信号都是毫伏级的,各个手机厂商略有不同,但通常最大不超过200mv。
通常我们通信使用的信号强度也就100mv左右,这导致信号比较容易受干扰,且在开发阶段对工具有着种种限制。


2 手机音频口通信原理

2.1 音频接口

这里写图片描述
图5典型的 音频通信系统模型
可以看出由设备→手机是用MIC,手机→设备用左、右声道中的任意一个。实际产品中,最终手机解析信号是需要的是频率和幅值。另外说明实际应用中两个声道一般只用一个,剩下的一个通常被用来帮助设备进行上电识别或者供电。

2.2.2音频通信使用的信号:

1、方波:方波通常使用的是曼彻斯特编码方式,它的好处是可以用单片机直接输出方波,经过衰减后即可使用,方便简单。缺点是兼容性不好,因为手机音频部分有这样一个特性,它只识别变化的电平信号,当麦克输入的信号长时间保持在某一非零电平时,手机会将其视为零,而强行拉回零电位。这就是采用方波通讯方式的兼容性不好的最大原因了,并且方波也容易受干扰。
2、正弦波:正弦波不会出现上面所说的方波的问题,故正弦波的兼容性和稳定性更好一些。通常采用方案有FSK、DTMF、信号发生器、或方波转正弦波等。


3 手机音频口全双工通信方案

要实现手机音频口的全双工通信,必须满足2个条件:

  • 1.信号必须在音频频率之内
  • 2.需要是低功耗的
    第一个条件限制了信号带宽,第二个条件限制了成本和功率。在这2种限制条件下,目前主要有2种方式实现这种同时的双向通信:FSK调制和基于曼彻斯特编码的直接数字通信。

3.1设备→手机

1、曼彻斯特编码(Manchester Encoding):是一个同步时钟编码技术;在诸多通信方式中,曼彻斯特编码是最灵活简便的一种方法,编码信号可由单片机直接产生,经衰减电路衰减后便可直接使用。注意事项:曼彻斯特编码信号的生成有两种方式,一种是用PWM生成,一种是用定时器中断翻转IO。

曼彻斯特编码可以直接进行数字传输,编码将1变成01,而将0变成10,在每位编码中有一跳变,同时将时钟同步信息一起传输到对方。虽然这种编码方式将传输速率降低了一半,但是在编码后0和1的数量完全相等,不存在直流分量,因此具备自同步能力和良好的抗干扰能力。

这里写图片描述
图7 FSK调制后的信号

3、 信号发生器、锁相环方式:这种方式用信号发生器或者锁相环来产生方波或正玄波,由单片机来控制波形的输出,也可以实现音频通信,且十分灵活。但缺点是电路较复杂,且不同频率信号之间衔接不好掌握。

3.2 手机→设备

由于手机输出的音频信号很小,无法直接使用,因此现有方案是用运放发大到合适的范围,与用电压比较器转换成TTL方波。

1、 放大电路方式:将手机输出信号经放大电路放大到合适的幅值,然后有锁相环或者通过FSK、DTMF芯片进行解析。
2、 电压比较器方式:将手机输出的交流信号经电路强行拉到Vcc/2级别,然后加到电压比较器一端,另一段接比较电压Vcc/2,这样交流信号即被转化为TTL方波信号,再进行解析就容易了。


4. 案例分析(2FSK信号调制)

4.1 2FSK信号调制

2FSK按字面的英语全称是:2 (binary system) Frequency-shift keying(二进制频移键控),就是用二进制里的0、1来控制载波的频率,从而达到通信的目的。
例如:我们用1ms长、1KHz的正弦信号来代表二进制里的1;用1ms长、2KHz的正弦来代表二进制里的0;那一连串的1KHz、2KHz的信号解调出来就是一连串的0和1。

这里写图片描述
图9经过调制后的信号输出波形图
然后设计Android程序,步骤如下:
? 获取对应音频采样率下的最小缓冲区的大小
? 新建Audio Track(音频数据输出Class)
? 将缓冲区中的音频数据写入音频播放线程并设置左右声道音量等
注:若需要其中一个声道对外部扩展头供电,可以设置该声道为循环播放。

4.2 2FSK信号解调

4.2.1解调电路

解调端使用MSP430的单片机,主要是因为TI的单片机功耗较低,休眠状态下,电流可达到uA级,正常工作下电流也可以保持在几个mA级左右,适合手机音频口通信。

这里写图片描述
图11 比较器的输出特性
调制信号经过比较器之后的输出波形图如下:
这里写图片描述
图13 解调过程方框图

5 音频口通信关键技术与问题分析

5.1 从手机获取电能

如果外设没有电池供电,要实现音频口通信,首先就需要从音频口获取电能来驱动单片机或者传感器等设备,然后才能将数据转换成音频数据通过音频口传输出去,或者将传感器收集到的数据通过单片机转换成音频数据后通过mic口传入手机。
一般的音频口取电电路都是一个通用的升压电路,因此升压电能转换效率和是非常关键的。

5.2 不同手机音频口驱动能力

这里写图片描述
这里写图片描述
图16 Hijack音频口取电电路
取电电路分析:
Right接耳机右声道输出,之后是一个升压变压器T1,因为输出的音频电压很低,甚至不能触发后面的场效应晶体管FET导通,所以需要先升压。升压完了之后经过FET组成的桥整流电路,再经整流二极管D1调整以后就得到直流输出。
这里写图片描述
图18 音频口刷卡器框架图
拉卡拉就是一个手机刷卡器;拉卡卡、智能手机、拉卡拉软件、网络,构成了一个完整的、更强大的POS系统。
这里写图片描述
图20手机与拉卡拉音频通讯示意图

手机与拉卡拉的音频通讯过程大致如下:
? 先在手机上打开拉卡拉的应用。点击刷卡。
? 手机应用会调用Android Api的Audio Track,通过L和R线路给拉卡拉手机刷卡设备发送一段通知信号(L和R表达的信息是一样的,只是波形是反相的,L的高电平对应于R的低电平,还没搞清楚拉卡拉为什么这么设计)。
? 芯片上的通讯模块拿到音频信号,解码后发现是刷卡通知,就等待刷卡层传来刷卡信息。
? 在刷卡槽刷卡后,卡的信息传递给芯片。
? 芯片拿到卡的信息,编码成音频信号,同M线路发送给手机。
? 手机APP通过Audio Record对音频信号进行采样,拿到数字信号。
? 手机APP程序通过对数据信号进行解码,拿到实际的数据信息,即卡的信息。
? 如果刷卡失败,则手机APP拿到的是一段失败提示信息。
? 至此手机与刷卡器的通讯完成,手机APP再使用此卡的信息与拉卡拉的服务器端后台通讯,处理后续支付操作。

6.3 其他产品

这里写图片描述
图22 智能手机温湿度监控产品
这里写图片描述
图23 音频-串口转换模块

7 开发需要考虑的几点

  • 1、 手机录音软件,最好能在手机上直接看到波形的。
  • 2、 建议用笔记本电脑进行开发,而非台式机。因为音频信号很小,容易受干扰,而台式机干扰较大,笔记本还有一个好处是必要时可将外接电源拔掉,用电池供电。
  • 3、 录音笔,有时需要得到纯净的音频信号,方便更加准确的分析。
  • 4、 音频转接板,一边接音频母座,一边接音频公头,将MIC、地、左、右声道4跟线用排阵引出,方便录音。
  • 5、 需要信号衰减电路,可将设备电路产生的信号衰减至音频接口能承受的范围内。前期调试时,我们可以用该电路将信号录进电脑进行信号分析

博主热门文章推荐:

一篇读懂系列:

  • 一篇读懂无线充电技术(附方案选型及原理分析)
  • 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

LoRa Mesh系列:

  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
  • LoRa学习:信道占用检测原理(CAD)
  • LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

网络安全系列:

  • ATECC508A芯片开发笔记(一):初识加密芯片
  • SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
  • 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
  • AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

参考文献及网页链接:

[1].Verma S, Robinson A, Dutta P. AudioDAQ: turning the mobile phone’s ubiquitous headset port into a universal data acquisition interface[C]//Proceedings of the 10th ACM Conference on Embedded Network Sensor Systems. ACM, 2012: 197-210.
[2].Kuo Y S, Verma S, Schmid T, et al. Hijacking power and bandwidth from the mobile phone’s audio interface[C]//Proceedings of the First ACM Symposium on Computing for Development. ACM, 2010: 24.
[3].赵文景, 封化民. 智能手机音频通信的实现[J]. 北京电子科技学院学报, 2014(4):64-67.
[4].张佳进, 陈立畅, 张超,等. 智能移动设备的音频通信接口设计与实现[J]. 自动化与仪器仪表, 2015(4):149-152.
[5].何江山.基于智能手机的家用人体生理参数检测终端设计[D]. 浙江大学, 2015.
[6].国外Hijack 的项目网站、源码、购买链接:
http://web.eecs.umich.edu/~prabal/projects/hijack/
https://code.google.com/p/hijack-main/
http://www.seeedstudio.com/depot/hijack-development-pack-p-865.html
https://github.com/taweili/hijack/tree/master/iPhone
[7].国内Android方案Git(基于Hijack)
https://github.com/ab500/hijack-infinity
[8].安卓手机和单片机音频通信
http://blog.csdn.net/raoqin/article/details/9797131
[9].手机的音频口通信方案
http://blog.csdn.net/guang09080908/article/details/43405051
[10].拉卡拉手机刷卡器音频通讯技术原理初步分析
http://blog.csdn.net/kimmking/article/details/8712161
[11].一种智能手机获取监测环境温度、湿度的实现方法
http://www.eepw.com.cn/article/274760.htm
[12].Android音频口通信(一)——2FSK信号调制
http://blog.csdn.net/wocao1226/article/details/8773348
[13].手机音频口双向通信模块 (3P)
http://www.taskcity.com/users/20225-kuangjiu/portfolios/154338ocale=en
[14].iOS开发之音频口通信-通过方波来收发数据
http://www.jianshu.com/p/649e2c341c00
[15].通过手机耳机口和外设之间传输数据
http://www.zhihu.com/question/26918431
[16].在安卓系统中使用音频接口用于数据传输
https://software.intel.com/zh-cn/android/articles/using-the-audio-jack-as-data-interface-on-android-systemsanguage=it

来源:HowieXue

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月21日
下一篇 2018年1月22日

相关推荐