手机音频口通信

1.    为什么用音频口通信而不用其他接口?

    原因是音频口简单、廉价、每个智能手机上都有而且有大量的资料可供查阅。其他的接口诸如usb,firewire等,有的只是安卓手机上有,有的只是iPhone手机上有,即使是一般安卓手机上都有的usb接口也有不同尺寸,导致无法使用一个通用平台适应所有的手机。而音频口克服了所有这些缺点。

 

2.    音频口通信可以做什么?

    在这个平台上,发挥你的想象力,几乎可以无所不能:你可以把扩展头插入你的智能手机,控制你家里所有的红外遥控电器,再也不用为找不到遥控器而烦恼了;同样,你可以用扩展头测量温度、湿度,然后显示在手机上;还可以用扩展头当做一个心率测试仪,这样你在家里都可以随时了解你的心率情况;还有现在已经普遍使用的手机刷卡器。

图1 音频口红外遥控器


图2 音频口心率测试仪

图3 音频口刷卡器

 

3.    音频口通信关键技术

现在网络上关于音频口的讨论非常多,这里关于音频口的基本原理就不介绍了。

要实现音频口通信,首先就需要从音频口获取电能来驱动单片机或者传感器等设备,然后将数据转换成音频数据通过音频口传输出去,或者将传感器收集到的数据通过单片机转换成音频数据后通过mic口传入手机。所以音频口通信的关键技术就是电能收集和音频通信。

如图4所示, iPhone手机凭借其强大的音频口驱动能力,可以驱动大量的单片机及传感器,所以网络上绝大多数音频口的展示和应用都集中的iPhone手机上。在这里就不讨论iPhone手机,下面的内容主要针对安卓手机。

图4 各种智能手机音频口输出功率,iPhone音频口可以输出16mw的功率,而其他的安卓手机只有几mw的输出能力,

再加上升压电路的转换效率,真正能够使用的功率微乎其微,一般的传感器都无法驱动。

 3.1 安卓手机的音频口电能收集

    从网上也可以搜到一些从安卓手机上收集电能的实验,如有些可以看到该实验只是驱动了一个LED,没有单片机及传感器等其他负载。有些实验完全没有脱离仿真器环境,只能说明扩展头和手机的通信是正常的,不能说明用安卓手机给扩展头供电正常。

    (1)中的音频口取电电路是一个通用电路,如图5,该升压电路的电能转换效率非常低,大概一半都不到,大多数安卓手机音频口输出的电能经该电路转换后都无法驱动一般的单片机或传感器,只能驱动例如(1)中的LED,一旦带上负载,电压下降的非常多。

图5 一般的音频口取电电路

 

图6是我们的实验板,A板是和图5一样的实验电路,在我们的实验中,使用华为的C8813手机,不论使用的是22KHz的单音信号作为输出驱动,还是使用方波信号,都只能点亮LED灯(不带其他负载电路),一旦加上单片机和传感器等负载,电压立即下降到只有1.5V不到,不但单片机和传感器无法工作,LED灯也不亮。

B板采用了和图5完全不一样的取电电路,大大提高了转换效率。从图中可以看到,整个系统没有使用仿真器供电,完全使用华为手机的音频口给整个扩展头供电,从单片机发出的packet在手机中成功解码。我们还在扩展头上加装了一个温度传感器,华为手机的音频口完全可以驱动该温度传感器读出当前的环境温度。

                  

图6 完全靠安卓音频口驱动的音频口通信方案

 

3.2  安卓手机的音频口通信

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

FSK的原理很简单,任何一本通信原理的书上都可以查到:用一个频率表示1,另一个不同的频率表示0。在这里我们使用1200Hz的信号代表0,2400Hz的信号代表1。如图7所示,1(高电平)所在的频率高,0(低电平)所在的频率低,这样就完成了FSK调制。

图7  FSK调制后的信号

 

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

         

图8   曼彻斯特编码后的波形

 

我们采用了性能更好的曼彻斯特编码,在手机端和扩展头的单片机上都实现了曼彻斯特码的编码和解码,还完成了数据的组帧和解帧,使得手机和扩展头之间可以实现同时的双向通信即全双工通信。当然,如果想性能更好,可以用一些简单的纠错编码,这样在出现少量错误的时候可以进行校正,进一步的降低误码率。

我们实验的结果是:在误码率1/10000时,可以达到2k~4kbps的传输速率。这是在权衡了功率消耗、扩展头成本、软硬件实现复杂度及器件可获得性等各种情况之后的结果。

补充:

这是我们最新版的结果,扩展头和一元硬币的比较,全手机供电,温度传输等一应俱全。


再补充(20140520,这个日子很不错啊):

有很多人在问手机供电转换的效率问题,这个问题非常专业。确实,就像上面文章中提到的,大部分安卓手机音频口驱动能力非常低,再加上转换效率,能提供给扩展头的电能非常有限。

所以,我们做了大量的优化工作,现在的结果是:可以完全支持主流的安卓手机,当然还有苹果手机。


我的邮箱:liuxueuestc@163.com

阅读更多
想对作者说点什么? 我来说一句

HiJack 音频口取电原理

2013年09月02日 482KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭