几个月前20元入手的凯越歌乐汽车音响,一直放置在书架上。
至从有了它,在书房看书听广播和音乐变成了一件美事。可是懒惰的我,一直没有满足。看书的时候如果要调换频道或者调整音量,还得从沙发上起身几步。心想,有个遥控器就好了。。。
不甘满足的我,掀起了史无前例的研发工作。汽车音响加装红外遥控器。
本来想得还比较简单,无非就是用单片机接收红外接收管信号,然后用端口控制模拟开关去控制每一个按键即可。
遥控器有个很好的选择,是我大学时期的一个带遥控的CD机的遥控器,小巧漂亮。用来控制这个音响再合适不过了。
先用PIC16F628单片机接红外接收头,把红外遥控的编码显示在LCD1602上。由于是SONY的遥控器,编码不是通常NEC码,而是他自己的D7C8编码。为了探测这个编码的编码规则,用示波器来看波形。但示波器不是逻辑分析仪,无法记录波形。于是想了一个办法,用iPhone手机录像,然后截取图像的某几帧来获取波形(实在是科研条件简陋)。。。还好。最后单片机能共正确读出这个遥控器的所有按键编码。算初战告捷。截取的红外编码波形图:
下一步就是想办法控制汽车音响的按键。
首先拆开控制面板,发现是有专门一块sanyo的芯片LC75853控制LCD显示和4*4键盘矩阵。通过sanyo的CCB协议和机身中CPU通讯。通过对键盘按钮的测量,发现如果用集成模拟开关很费事。不如尝试通过模拟CCB协议,去模拟控制面板,从而控制整个音响。
CCB有4个引脚,输入DI,输出DO,时钟CL和使能CE。要了解这个协议的细节并能用单片机模拟,再用示波器这种古董设备当然不行。于是在网上买了一个简易的逻辑分析仪,一百多。8个通道,20M采样,搞单片机级别的够用了。如图
有了这个先进武器,再结合LC75853的资料。初步用PIC单片机模拟DO信号来“欺骗”音响主机的CPU有按键发生。当CPU发现有键按下,会发出键盘的地址,来询问键盘被按下了哪个。这个时候只需要用单片模拟发往CPU的键码就能实现控制了。至少理论上是这样。CCB的按键波形如下(还包括我的开发和烧写环境):
首先,单片机拉低DO,告诉CPU有按键了。然后CPU发过来地址,单片判断这个地址是不是要是问键盘的。然后模拟从LC75853通过DO发往CPU的键码。于是按这个时序,用PIC模拟一遍。由于PIC单片机速度较慢。而LC75853的时钟是4M级别的,PIC单片机20M的主频(一个指令4个周期)根本跟不上。当晚折腾很久之后,决定第二天用AVR试试。因为AVR是一个指令一个周期。8M应该够用。
中秋第二天,早早起来开始干。果然,AVR速度能够胜任。经过一上午的艰苦调试,过中午之后,已经能模拟出所有按键时序。完成这个作品已经没有技术上的障碍了。于是从机身电路板把系统5v电源和CCB四条线以及音量和电源开关信号接了出来。
由于音量加减和电源信号是单独的控制逻辑,都是通过拉低来控制。于是用单片机接三个三极管,做了3个OC门来控制这三路信号拉低。用单片调试的时候,电源控制很简单很顺利。但音量控制遇到不少困难。一方面不停的用逻辑分析仪分析原来的时序,一方面用单片机程序模拟。原来vol-up和vol-down的区别,在于几ms的先后。鏖战到晚上,终于搞定音量控制。。。终于,可以说,完成已经毫无悬念。混乱的调试桌面:
中秋第三天,大早起来把音响所有部件还原,只有控制排线从后面引出来。如图:
把程序控制部分,按红外键码和功能做了对应。并做程序调试和验证工作。确定程序和硬件配合部分已经完成。由于现在还是实验板上,无法直接投入使用。很有把握后,放心的出门买菜做饭洗碗。午饭后,就又新作了一块板子,就只有ATMEGA8一片和若干排线接口。很利落(背后连线很复杂,不美观,就不看了):
由于是照着实验板接一遍,所以剩下的就是细心别出错。想当年大学的微机原理实验室,每次都是我第一个做完,这些年更是经验丰富。很快,插上实验板上的已经烧写好单片机,插上排线。通电,一次成功。o yeah!
看看最后的合影吧:特意选用了很炫的蓝色LED作为接收指示。
上书架的效果:用书把单片机线路板挡在后面,把LED和红外接收管的引线也用书挡住。
终于可以坐在沙发上边看书边选择喜欢的音乐了。。。文中省略了上百次的不停调试,烧写,失败,挫折。事实证明,凡事要有个强大的内心,之后才能享受成功所带来的成就感!DIY和登山登顶后一样,会上瘾的!
注:以上内容全部来自网络,非原创!!!
[ 此帖被che001234在2010-10-17 09:09重新编辑 ]