【摘要】本文针对以嵌入式计算机系统为核心的隔爆设备实现就地操作困难,成本高,可靠性低等问题,提出了一种以C8051F340单片机为核心的USB鼠标配备红外遥控器实现隔爆设备就地操作的解决方案,并详细介绍了该USB鼠标的软硬件实现方法。实际应用表明,采用该方案设计的红外遥控USB鼠标能很好的解决隔爆设备就地操问题,成本低,简单可靠,便于安装,具有很强的推广意义和实用价值。
【关键词】红外遥控;USB鼠标;C8051F340;单片机
引言
随着煤矿生产自动化程度的不断提高,煤矿井下电子设备数量也随之增加,尤其是井下的系统集控设备数量急剧增多,为实现复杂的现场控制、通信、显示等功能,此类设备多以嵌入式计算机系统为核心,以防爆外壳实现矿用化功能。然而隔爆设备有一个明显的弊端,就是按键少,甚至没有按键,实现就地操作困难,如果在使用过程中需要输入数字或字符等信息,纯隔爆设备难以实现,比如配置IP地址、输入密码、设置报警限定值等,为此有人将输入键盘设计成本安型组件或整体设计成本安设备,但并不是所有设备均能设计成本安设备,并且还会带来外壳防护,成本,持久可靠性等一系列问题,形成嵌入式计算机系统应用技术向井下移植过程中的一个障碍。针对这种现象,笔者设计了一款既能实现红外遥控接收解码,又具备USB鼠标接口功能的电路,将红外接收的按键信息转换成USB鼠标动作,可以彻底解决这个问题。
1.遥控USB鼠标设计方案
目前几乎所有的嵌入式计算机系统都具备富余USB设备接口,而且操作系统软件也集成了鼠标驱动程序,本设计正是利用冗余的USB接口实现信息输入功能,首先选用带煤安证的通用红外遥控器发射遥控信号,然后用单片机实现红外接收解码映射成鼠标动作,最后通过标准USB V1.1协议与嵌入式计算机系统进行通信。遥控器按键示意图如图1所示:
图1 遥控器按键示意图
遥控器按键对应的鼠标动作如表1所示:
表1
按键名称 鼠标动作定义 备注
5 鼠标上移 长按表示连续移动
7 鼠标左移 同上
9 鼠标右移 同上
0 鼠标下移 同上
+ 鼠标左键 连续按两次表示双击
- 鼠标右键 双击不响应
设置 滚轮上滚
确认 滚轮下滚
单片机选用C8051F340,具备高速8051内核和扩展的中断控制系统,有48MIPS和25MIPS两种版本,I/O端口均可耐5V电压,48脚TQFP封装。该芯片自带USB设备接口模块功能,符合USB规范2.0版本[3],集成时钟恢复电路和USB收发器,无需外部晶振以及外部电阻,支持8个端点,片内自带1KB大小的USB缓存,非常适合本应用,目前市面上廉价的鼠标控制芯片均已集成光电输入,而且非工业级芯片标准,因此不适合本应用。
红外遥控接收头采用3.3V标准的HS0038集成解码器,滤除载波信号,提取按键码信号输出,单片机采用中断方式接收,同时触发一个专用定时器对接收的低电平持续时间进行计时,0.5毫秒认为是“0”,1.5毫秒则认为是“1”,连续接收16个数据位,组成两个字节,前一个字节为标志码,后一个字节为按键信息[2],在成功接收到按键信息后,将此信息直接按动作对应关系转换成SUB鼠标动作信息发送给嵌入式系统,从而完成系统输入要求。
2.遥控USB鼠标设计原理图(见图2)
如图2所示,通过USB接口取电获得5V电源,然后降压得到3.3V电源给CPU以及红外接收头,红外接收头的输出信号通过外部中断方式进入CPU,USB数据接口直接与外部相连,电路极为简单,器件少而且成本低。
3.软件设计
按照电路硬件设计,红外接收信号会触发中断,同时启动一个专用定时器对红外信号进行计时,在中断服务程序中实现解码功能,然后将红外遥控按键信息转换成鼠标动作数据,按USB鼠标动作数据帧向外发发送,从而实现鼠标功能。其中最关键的USB鼠标报告描述符定义[1]如下:
const hid_report_descriptorHIDREPORTDESC=
{
0x05, 0x01,//Usage Page (Generic Desktop)
0x09, 0x02,//Usage (Mouse)
0xA1, 0x01,//Collection (Application)
0x05, 0x09,//Usage (Pointer)
0x19, 0x01,//Usage Minimum (01)
0x29, 0x03, //Usage Maximum (01)
0x15, 0x00,//Logical Minimum (0)
0x25,0x01,//Logical Maximum (1)
0x95, 0x03,// Report Count (3)
0x75, 0x01,// Report Size (1)
0x81, 0x02,// Input (Data, Variable, Absolute)
0x95, 0x01,// Report Count (1)
0x75, 0x05,// Report Size (5)
0x81, 0x03,/ Input (Constant) for padding
0x05, 0x01,// Usage Page (Generic Desktop)
0x09, 0x01,
0xa1, 0x00,
0x09, 0x30,// Usage (X)
0x09, 0x31,// Usage (Y)
0x15, 0x81,// Logical Minimum (-127)
0x25, 0x7F,// Logical Maximum (127)
0x75, 0x08,//Report Size (8)
0x95, 0x02,//Report Count (3)
0x81, 0x06,//Input (Data, Variable, Relative)
0xC0,
0x09, 0x38,
0x95, 0x01,
0x81, 0x06,
0x09, 0x3c,
0x15, 0x00,
0x25, 0x01,
0x75, 0x01,
0x95, 0x01,
0xb1, 0x22,
0x95, 0x07,
0xb1, 0x01,
0xc0 };
程序设计流程图如图3所示:
图3 程序设计流程图
4.结语
由于上述方案设计成本低廉,已采用本方案设计了一款标准组件,批量应用于煤矿现场,使用效果极好。实践证明,这种采用红外遥控实现煤矿井下隔爆设备现场操作的方法安全、稳定、可靠,体积小便于安装,并且不会对其他任何器件产生不良影响,为煤矿防暴设备的现场信息输入提供了一个全新而且完美的解决方案,具有极为广泛的实际指导意义和推广价值。
参考文献
[1]倪陈强,基于C8051F340单片机的USB HID类设备设计[J].现代电子技术,2007(18).
[2]余东峰,通用红外遥控解码器的设计[J].现代电子技术,2011,8.
[3]潘琢金(译).C8051F340全速USB FLASH控制器数据手册.深圳:新华龙电子,2006,1.
作者简介:杨生元(1975—),男,电子设计工程师,从事煤矿井下电力监控系统以及煤矿电气自动控制方面的研究。