现在能用来在远距离无线操作电脑的设备种类很多,从无线键盘、鼠标到蓝牙、红外,不一而足。虽然红外的方式遥控功能有限,但是在诸如调整音量、播放音视频等方面可以一键到位,在方便性上有着其它几种控制方式不可取代的优越性,所以自己动手DIY一下,既可以过过DIY瘾,又可以用到实际中,一举两得。
思路上,就是把遵循某种遥控协议(以NEC的居多,这个DIY就按照这个来)的编码解码后,获知是遥控器的哪一个按键动作,然后用它作为控制信号完成相应的电脑动作的过程。
在方案上,就我的了解,有如下几种:
RS232电平转换→(串口)→上位机软解+上位机软件
MCU软解+MCU用固件实现USB协议→(USB接口)→上位机软件
MCU软解+USB芯片→(USB接口)→上位机软件
带MCU的USB芯片(完成软解及USB协议)→(USB接口)→上位机软件
考虑到电脑的串口基本上闲置不做他用,还有后几种方案需要专用的芯片,成本比较高,因此选择了第一种串口的方案。其实不管用哪种,这个DIY的硬件电路都比较简单,需要下功夫的是相应的软件部分。下图是串口方案的硬件电路图。

图中,串口的RTS、DTR经整流稳压后,得到+5V电压,给红外接收和电平转换芯片MAX3232供电。红外信号经9014反相放大,再经MAX3232进行电平变换后,由RXD传输到电脑串口。串口设置为:波特率9600bps,8位数据位,无校验,1个停止位。
这里想着重说明一下为什么需要反相。
这是NEC协议中发射端逻辑1和逻辑0的编码格式。它用的是脉宽编码。接收端输出的信号和发射端是反相的,再经三极管反相,也就是电路图中的SIG信号,与发射端又变为同相的。想要上位机能实现软解,就需要从逻辑1和逻辑0经过脉宽编码后的时序特征再结合串口协议中规定的帧格式来入手。
上图是串口协议的帧格式。它以下降沿为起始。这样一来,在电脑看来,就认为逻辑1和逻辑0的560μs后的下降沿是一帧的开始了。对于9600bps的波特率、8位数据位、无校验、1个停止位的设置,一帧的时间约是1.04ms,这样若是逻辑1,因为低电平持续时间是2.25-0.56=1.69ms>1.04ms,串口就认为接收到的数据都是0;若是逻辑0,低电平持续时间是1.12-0.56=0.56ms<1.04ms,串口在一帧开始后的前0.56ms接收到的是低电平,这个时间对于9600bps波特率,约发送了5.376bit的数据,除去起始位再计入误差,串口认为接收到了4或5位的0,后面接收到的是遥控器发送的下一编码的前半部分!不管这个码是什么,根据协议,它的前半部分总是高电平,所以串口收到的全为1。 (责任编辑:admin) |