红外遥控发射器(软件篇)

搞定了硬件电路的问题,接下来就要考虑怎么跟电脑连接了。红外遥控器一般是在一个高频信号(36KHz)上加载一个低频的调制信号,所以实际上我们用的遥控器都会利用一个晶振来产生载波信号。像下面这个图这样这种电路看起来就已经很复杂了,以我现在的电焊水平是没办法应付的。

image

因为是通过电脑控制发射遥控信号,所以我预备通过电脑来控制所有的高低频发射,所以在硬件篇里面的硬件只有两个元件。那么接下来就是通过电脑的哪个外设接口来控制的问题。

一开始考虑用COM口。COM口是标准的可编程外部接口,比特率达到112Kbps,完全能够通过对COM口编程达到驱动红外发射二极管的目的,不过在和同事讨论的时候发现COM口至少有两个问题:

1. COM口的0和1分别是正负电平,虽然二级管能够承受一定的反向电压,但是理想的情况还是没有反向电压的好。

2. COM口的TX信号电压不定,根据手册是5V到9V不等,也就是说稳流电路需要有自适应性。另外如果电压是9V的话,反向电压就超过反向工作电压一倍不到,需要并联一个电阻来匹配反向电压。

于是把目光移到了主板上的另外一个部件,pc speaker上。http://en.wikipedia.org/wiki/Pc_speaker PC speaker是一个典型的方波发生器,只需要写入跟频率倒数有关的数字就能够产生高频方波信号。它的电压也是标准的5V,而且信号是在5V和0V之间变化,和二极管正好匹配。编程也比较方便。

好吧,我承认这是典型的Cowboy Programming,是不符合Code Craft精神的。不过作为业余爱好,还是能少花些力气就少花些力气吧。

先确认PC小喇叭是有声音的以后,把昨天做好的电源组件接到了pc小喇叭上,然后让它发出beep后用数码相机观测,O yeah,成功工作了。其实这样是小有点冒险的,因为不知道pc speaker PIN的输出功率是多少,不过当我打开机箱看到pc小喇叭上写着8欧姆0.5w的字样后就很放心了。

然后就是一些基本的计算,我的电视机兼显示器是Philips的,采用RC5编码,高频信号为36KHz,算下来应该把pcspkr编程为33就可以达到这个频率,可是实际上发现一旦频率大于32khz红外发射管就不亮,不知道是因为什么原因,可能是红外LED管不能工作在这么高的频率下,也可能是pc spkr针脚实际上不能输出这么高频的方波信号,回头改回pc spkr再试一下。好在32khz也能认出来,但是识别距离就变得比较近了,只有离几厘米的距离才能认出。

具体驱动pc spkr的方法参见这个链接:http://tldp.org/LDP/lpg/node83.html

RC5的标准参见这个链接http://en.wikipedia.org/wiki/RC-5,具体的参数可能随不同遥控器而不一样,比如我的遥控器的01信号间隔就是780us而不是上面讲的889us。遥控器信号的获得是利用我的一个usb红外遥控接收器,以前做过一个mce遥控器的libusb app,程序里面有很多调试信息可以打。通过对比标准philips遥控器和红外发射管产生的调试信息,可以逐渐找到合适的信号。

最终结果:我可以通过这个发射器控制电视机的音量啦!这里就不上图了。我的最终目的是要能够通过这个发射器把客厅的电视机和htpc结合起来,通过mce的遥控器来直接控制电视机,这样就能扔掉电视机的遥控器了。随着技术问题的解决,剩下的就只是具体的调试问题了,实践证明通过pc speaker当作遥控器的信号发生器是完全可行的,虽然还不太完美,不过是可以用的。软件篇到此为止,谢谢围观!

发表评论

邮箱地址不会被公开。 必填项已用*标注