两年前曾经DIY过一个电脑红外遥控器的,现在也还能用的,只是年初升级到了WIN7操作系统,但是那个PC遥控软件却不能在win7下使用,所以被闲置了。最近有点烧高清,我目前的高清是用笔记本+平板电视实现的,通过HDMI传输信号,那画面质量真的是没法说,为什么没有用台式机呢,因为台式机和电视机分别在房间的两头,需要用很长的HDMI线连接,中间还得跨越一道门,不但不方便也不好看,还费钱,还好新买的笔记本已经被调较得可以播放高清了,唯一遗憾的是笔记本只能放在电视机很近的地方,这样控制播放就很不方便了,于是萌生了再次搞一个红外遥控器的念头。
因为笔记本不带串口,这样就不能用原来的串口红外接收器了,要么买一个USB接口的接收器,要么就是搞一个USB-串口转换器。在浏览以前买编程器的淘宝店的时候发现了有USB-TTL的转换器,也有USB-UART的接口,在下单发货后才发现只买了USB-TTL的转换器,没有买USB-UART接口,有点晕啊。不过俺在此以前已经研究过了遥控器软件官方提供的接收器电路,发现这个接收器只是利用了串口的几根线做了个窃电电路,真正起作用的只是RXD一根线而已,而USB-TTL模块本身就带5v输出的,是标准的TTL电平。 USB-TTL模块到货后,插入电脑,提示要到官方网站下载驱动(cp1202),win7本身没有这个驱动,要注意的是官方网站上下的驱动在win7下是安装不了的,最后是在其他下载网站上下的才安装成功的。因为这个接口是TTL电平的,所以不需要RS232电平转换电路了,直接将H0038红外接收器引脚用杜邦线接入模块对应引脚就应该可以了。搭好电路,然后启动遥控器软件,发现软件可以接收到信号,但是收到的编码几乎只有FFFFFF9这类数字,显然接收到的红外编码没有正确解码,考虑到用PC机自带串口+自制接收器能正确解码,问题肯定出在模块上,再次参考官方接收器电路,看到RXD信号还经过了一级三极管,按此修改了电路,还是不行,而且连接收都不行了,更不要说解码了。苦思冥想了一阵,突然想到RS232用的是负逻辑,而USB-TTL是正逻辑,如果在RXD上加一级反相电路不就可以了?说干就干,用三极管做个反相电路是最简单了,大概的计算了一下电路参数,焊好电路,再试,成功! 接下来将模块和软件安装到笔记本上,测试,也可以接收到红外信号。奇怪的是需要按很多次按钮,才有可能接收到一次信号,这样的话,遥控起来就很费劲了。刚开始多次更换USB插座、重新安装软件,下载新版本软件,提高遥控器软件的进程优先级,关闭其他一些软件,因为怀疑是CPU运算过于繁忙的问题,造成遥控器软件不能及时接收到红外信号,这些措施都没有取得什么效果,曾经也想过是不是接口的电压输出是3.3v而不是5v的,经测试这个模块输出的确实是5v,所以也不是电压的问题。上网查了一下,几乎没有人提这个问题,只看到有一个人说了他在PC上工作正常的接收器到了笔记本上就不正常了,有人答了一下说可能是笔记本供电不足的问题。手头上正好用着一个USBHUB,可以外接电源的,正好可以测试这个问题,USBHUB接到笔记本,然后模块接到USBHUB,一个开关电源做电源。哈,可以随时接收到红外信号了!这么说有可能确实是供电不足的问题,那么在把外接电源去掉试试看吧,结果也没问题! 问题基本解决了,还有疑问没解决:为什么直接接上USB端口不行,经过一级USBHUB就可以了呢?
|