如何从手机音频口获得电能

二、通信建立的基础——耳机线上传输的信号 

我们知道,耳机是用来听音乐,打电话的,既然是和声音相关的,那么耳机线上传输的就是音频信号,常见的音频信号一般都是在100Hz——10KHz左右的范围内,那么手机里面的音频输出系统(DA和音频功放)的幅频特性(也既带宽)一定也是在这个范围(这是本人的猜想,由于设备和仪器有限,没有进行系统的测试,有兴趣的朋友可以用相关的测试仪器测测) 

那么,既然有带宽,好家伙,我们就可以通过努力在这个频带内实现我们的通信信道了!另外值得提的一点是,耳机线上传输的音频信号是交流的!  

下面我们来看看市面上常见的耳机座(公头)的引脚定义,android手机上用的耳机大多都是3.5mm的四芯座,在这四个芯中,分别是:地、左声道、右声道和线控开关(MIC),而这四芯的排列常见的有如下两种:

  1、国家标准

 

2、国际标准                                             

   

国际标准耳机座MICGND和国内标准是反的,其它的一样!

  

不难发现有了左右声道,向外设扩展头供电和发送数据就有了相应通信线路的支持,另外有了MIC这个打电话时输入说话的信号通道,那么手机接收数据也有了硬件通道的支持了!

HiJack是一个硬件和软件平台,用来在小型、低耗电周边设备和iOS设备之间建立通信。该系统采用22kHz音频信号,将其转换为7.4mW电能(转化效率47%),可以带动一个TI MSP430微控制器和其它电子元件,允许HiJackiOS应用进行通信。所有的资料都能在上面给的链接找到,有兴趣的可以自己动手做一个。耳塞插孔34有一根是GND,还有一根则是麦克风MIC输入。这两根线好多厂商都不一样,比如iphone就是3对应GND4MIC;而我手头的索爱E15i和诺基亚E63则是3对应MIC4对应GND,华为C8812则跟iphone一样。 

2. 电路  

这是电路和对应的元器件型号表(价目都列出来了): 


 

 

J1接耳塞一路输出(另外一路还可以留作他用)。之后是一个升压变压器T1,因为输出的音频电压很低,甚至不能触发后面的FET导通,所以需要先升压。升压完了之后经过FET组成的桥整流电路,再经D1调整以后就得到直流输出.

音频输出找了个Android simple frequency generator的软件,它可以调整输出频率和波形,结果发现输出16448HZ的方波的时候输出电压最大。其实是可以通过最佳匹配输入阻抗来计算这个频率值的,但是不清楚厂商的技术指标,所以直接试也是不错的办法,而且很方便。

利用音频线与arduino进行通信 音频信号频率计 

前言部分 

在多媒体电子设备中,音频设备是不可缺少的。音频就是指我们人耳正常能听到的机械振动所对应的频率范围,一般在20Hz20kHz之间。一般来说,机械振动发声(比如人的喉咙内的空气振动)通过介质传递到声音采集器中,然后使采集器产生相应的模拟信号,这些信号通过音频接口接入一个高质量的数模转换器(就电脑而言是是声卡),转成计算机或其它多媒体设备可以处理数字信号。而如果这些设备想复原声音,只需要将信号再次返回给数模转换器,重新转换成模拟信号,驱动音响等设备产生相应的机械振动,传到耳朵里就是声音了.

说了这么多,听起来很枯燥。不过我们换个思路去思考,在这个音频的传递过程中,我们若把那些机械振动的采集和产生设备换成其他的我们想要的信号产生和接受装置,那么原则上我们是可以实现这些装置与电子设备的通信的,例如,电脑上的声卡可以帮助我们实现外部设备的拓展。我们将两个电子设备通过这一系列装置去连接,进而通信,这也是可能的。

最简单的例子便是两个手机上

《会说话的tom猫》对着喊话,如果我们按照原理说,这两部手机不仅实现了通信,

还是无线通信。不过,这的确是个很糟糕的例子。做过这个实验的人就发现,每次成功的概率不是很高,语音反复重复的过程很中可能因为周围的响声被混入而彻底和以前不一样。因为这里面的无线传输的实际是通过机械振动传输实现的,也就是声音。声音有强弱的差异,也就是所谓的在模拟信号中电压的大小,声卡或者其他音频处理设备要负责将他们转化和还原,并不是一件简单的事情。做个类比,这样传递过程就好像一

那么,有什么现成的例子可以证明这个在音频设备间使用数字信号的想法是可行的呢?电话。电话在拨号时发出不同音高的声音不是偶然的,每个数字对应一个频率,这些固定频率的声音被转化成电流再通过电话线传递给控制端,控制端再根据频率的顺序得到数字的顺序,也就是电话号码,再按照既定的程序接通对应用户的电话。这样我们就用按键完成了一段指令的输入,又经过一系列的信号的传递和转换,完成了对远程终端的控制。而如果我们把这种做法更复杂化点,就是所谓拨号上网。不过,这个信号的传递所使用的频率,远远超过了音频的所谓20-20kHz定义,但是我们看到,原理还是一样的。不过,原来的声卡被换了个名字,叫调制解调器。而原来声卡中最重要的数模转换器也被尽量的简化掉了,因为我们只需要01,或者多几个数字而已.

现在回头讨论下,为什么要利用电话上网。原因很简单,电话是最普及的音频设备,甚至说是最普及和最简单的远程通信装置,即使在网络时代也是这样。电话线的覆盖范围基本是100%,而移动通信的信号那就不必说了。这样在电话线上载入网络通信,就避免了重新布线入户的成本。而从我们的角度看,手机,mp3,电脑,这些最常见的电子设备,都有一个共同音频端口,我们甚至没有必要为这个端口做特别的修改,就能做很多事情,比如手机与单片机通信。有人说,ADK就好了?不过ADK需要新的成本,以及复杂的配置,这些配置对于一般用户来说太难以解释了,就是极客也很难上手。而音频端口,只要一根线,一个简单的放大器电路,,一个写好的通信协议,也能完成类似的事情。事实上,网络上已经流传了android利用音频线与串口通信的程序,请去电子市场搜索和下载AudioSerialOut程序,一目了然。他们的官方网站也提供了一致的思路,笔者讲在下文中讲解。

 

在手机应用里点击刷卡时,音频信号通过LR从手机发送到电路板,通过A\D模块转换成数据信号。刷卡时电路板拿到银行卡信息,再通过A\D模块转换成音频传输给手机。当然手机APP应用里在信号出入的时候,也需要做相应的A\D编解码工作,这个也是手机APP里最重要的工作。

手机与拉卡拉的音频通讯大概结构见上图,大概的流程是: 3.1    先在手机上打开拉卡拉的应用。点击刷卡。  

3.2    手机应用会调用android apiAudioTrack,通过LR线路给拉卡拉手机刷卡设备发送一段通知信号(LR表达的信息是一样的,只是波形是反相的,L的高电平对应于R的低电平,还没搞清楚拉卡拉为什么这么设计)。

3.3    芯片上的通讯模块拿到音频信号,解码后发现是刷卡通知,就等待刷卡层传来刷卡信息。  

3.4    在刷卡槽刷卡后,卡的信息传递给芯片。  

3.5    芯片拿到卡的信息,编码成音频信号,同M线路发送给手机。  3.6    手机APP通过AudioRecord对音频信号进行采样,拿到数字信号。 

3.7    手机APP程序通过对数据信号进行解码,拿到实际的数据信息,即卡的信息。  

3.8    如果刷卡失败,则手机APP拿到的是一段失败提示信息。  3.9    至此手机与刷卡器的通讯完成,手机APP再使用此卡的信息与拉卡拉的服务器端后台通讯,处理后续支付操作。

其中的技术关键点是(细节本文暂不讨论):

a)传输上使用什么样的调制方式,采用什么样的波特率、频率。 

b)通讯上如何制定合适的协议,包括如何判断信号开始、如何握手建立连接。

c)编码上如何编码表示数据,如何校验和纠错,如何滤波和解码数据

4.相关的一些技术问题

4.A/D转换的问题

耳机线传输一般是1250HZ~9600HZ之间的交流音频信号。信号的调制解调有3种方式,

调幅(AM)、调频(FM)和调相(PM)三种。根据对拉卡拉的输入输出信号的分析,

我们发现拉卡拉使用的是调幅方式,频率为9600HZ4800HZ的音频信号

4.3不同android手机的问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值