基于单片机的USB 复合设备键盘鼠标设计
2023-11-14朱俊杰龚锐彬
朱俊杰,龚锐彬
(广州城市理工学院 电子信息工程学院,广东广州,510800)
0 引言
市场上传统的键盘鼠标以桌面式为主,占据较大的空间,在部分场景下使用不便且不方便携带。空中鼠标[5]的出现使鼠标不再依赖桌面,利用惯性传感器采集的信息控制鼠标移动。近年来越来越多的学者对便携式键盘鼠标进行理论研究和实验测试,文献[2]设计了指尖压敏可佩戴式键盘鼠标,利用陀螺仪的速度控制鼠标,使用九宫格输入方法,依据不同手指的敲击次数作为键盘输入。文献[4]提出了BLE 空中鼠标系统,利用光标定位法和固定光标法解决“未知”和光标“死区”问题。大部分的研究文献主要对空中鼠标进行了研究和实验测试,对复合式键盘鼠标研究文献较少。
基于以上背景,本文设计了一款基于单片机的USB 复合设备键盘鼠标。该设计由USB 接收器和手机APP 组成。受控终端插入USB 接收器,手机APP 模拟键盘鼠标功能,通过蓝牙传输至终端接收,实现键盘鼠标操作。解决了键盘鼠标外设部署配置简单化,具有携带方便、灵活、稳定性强等优点。
1 方案设计
本设计方案采用模块化设计,系统结构如图1 所示。本设计由手机APP 模拟键盘鼠标操作,将操作指令数据通过蓝牙传输至USB 接收器蓝牙模块,再通过串口协议将数据传输给STM32 单片机处理,使用USB 通信协议将数据传输至USB 接口,USB 接口通过有线电缆与主机相连,最后将数据传输给主机完成键盘鼠标操作。硬件部分由主控电路、蓝牙模块和电源电路组成。主控芯片选择STM32F103C8T6,负责通信协议的转换和数据处理。蓝牙模块采用HC-05,其采用RS232 串口通信协议,负责数据通信交互,蓝牙开发模式使用双微控制器模式,由主机控制来实现模块功能。电源电路选用AMS1117-3.3V 电源芯片,实现USB 电压5V 降压为3.3V,负责给STM32 单片机和蓝牙模块供电。
图1 系统结构图
1.1 主控电路
主控电路原理图如图2 所示,主控芯片STM32F103C8T6与USB 接口相连,终端通过USB 口插入连接,使用USB数据传输协议进行通信。主控芯片与HC-05 蓝牙模块通过串口连接,使用串口传输协议通信,将蓝牙模块收到的手机APP 数据进行处理分析后发送至终端。USB 传输线[12]由电源线、地线、D+和D-四条线组成,其中电源线和地线可提供5V 电压,最大500mA 电流,D+和D-为差分信号输入线,使用3.3V 电压。
图2 主控电路原理图
1.2 电源电路
电源电路原理图如图3 所示,此部分电路主要组成有:AMS1117 稳压芯片、滤波电容、模拟地数字隔离电感电阻。该电路可稳定将5V 输入电压降为3.3V,最大电流可达1A。其中D3.3V 和A3.3V 为均3.3V 电源端,分别供数字电路和模拟电路使用。
图3 AMS1117-3.3V 电路原理图
1.3 蓝牙模块
蓝牙模块原理图如图4 所示,其中1 号,2 号引脚与主控芯片通过串口连接进行数据通信,手机APP 数据将通过模块内置射频天线接收,接收到的数据通过串口协议传输给主控芯片处理。31 号引脚连接的STA 灯用来显示蓝牙模块的工作状态,34 号引脚用来控制蓝牙芯片工作模式。当34 号引脚置低电平时,STA 灯快闪,蓝牙模块进入可配对模式,匹配成功后STA灯慢闪,进入AT模式。若匹配不成功,蓝牙模块进入AT 模式,但STA 灯继续保持快闪,此时无蓝牙匹配连接。当34 号引脚置高电平时,STA 灯慢闪,蓝牙模块进入AT 模式[10]。
图4 HC-05 蓝牙模块原理图
2 USB 原理
USB 通信[9~12]属于主从式通信,请求从主机端向设备端发出并响应。USB 协议通信时,数据编码采用NRZI 方式,以包为单位在进行传输。USB 通信有四种传输模式,指USB 设备与控制器驱动之间进行的传输以事务为单位进行,分别有批量传输、控制传输、中断传输和同步传输。中断传输模式[11]用于非周期地自然发生的数据量小的信息传输,并且只有从外设到主机一个传输方向,所以采用中断传输模式。键盘鼠标事件发生后,通过中断端口通知主机端完成相关任务。
USB 设备枚举[13]。USB 设备在插入终端时,终端检测到设备插入将进行USB 设备枚举。在枚举的过程中,终端对USB 设备进行询问,要求USB 设备对描述符进行回复,若USB 设备回复的描述符被终端正常读取,则根据USB 设备发回的数据进行分析和处理,直至终端为USB 设备配置驱动使其可以被正确识别并使用。枚举过程中传输了包括:地址、设备描述符、配置描述符、字符描述符、报告描述符等。
USB 复合设备[6],指具有两个独立的USB 设备功能,集中在同一个硬件上的USB-HID 设备。该设计属于通用USB 设备,接口须符合USB-HID 协议,并且在接口描述符中分配两个接口,分别对应为键盘、鼠标设备接口。其中键盘在端点描述符中有两个端口,分别对应键盘按键键值和指示灯控制。USB 描述符结构框图如图5 所示。
图5 USB 描述符结构框图
3 软件设计
本设计系统软件流程为进入初始化,首先检测USB 设备枚举状态,在USB 保持连接的情况下检测蓝牙信号,使用手机APP 发送数据到单片机MCU,单片机MCU 对数据进行处理,并通过数据判断并发送键盘键值或鼠标光标位置,直到USB 断开后结束整个流程。系统软件流程图如图6 所示。
图6 系统软件整体流程图
本设计键盘鼠标操作由手机APP 实现,设计UI 组件设计界面,放置键盘按键和触摸板。进入逻辑设计界面,设计按键按下和松开的逻辑键盘操作,设计触摸板的移动相对距离Dx,Dy 得到相对坐标。APP 设计图如图7 所示,设计蓝牙虚拟按键控制手机与下位机连接开关,并将按键和触摸板操作通过蓝牙发送数据到下位机。在USB 底层协议配置中,为键盘和鼠标分别配置了2 个报告ID 号(即分配2 个接口),如图8 所示。鼠标接口负责获取鼠标的移动、单击、双击、拖动、单击右键的数据传输至相应的地址存储。键盘接口ID 号中设定2 个端口,分别负责键盘按键键值数据传输和键盘指示灯开关,并将获取的数据传输至相应的地址存储。软件处理时需保证键盘和鼠标数据正确性,防止键盘和鼠标数据错乱。
图7 APP 设计图
图8 USB 配置部分代码
4 系统联调与测试分析
通过软硬件设计后,完成实物制作,接收器实物图如图9 所示。结合APP 软件进行系统联合调试,调试包含功能性测试、稳定性测试和兼容性测试,测试方法包括:键盘全键测试、键盘指示灯测试、鼠标移动测试、鼠标点击测试、鼠标框选测试、蓝牙连接测试、冷热重启检测、热拔插检测等。
图9 接收器实物图
将接收器插入电脑对USB 设备枚举情况进行测试,使用总线协议分析软件Bus Hound 对USB 设备进行抓取显示,如图10 所示。该设计有两个接口三个端口,第一个接口枚举为键盘端口和指示灯端口,第二个接口枚举为鼠标设备。经过键盘鼠标测试软件PassMark KeyboardTest 多次测试,键盘鼠标功能正常。经测试USB 枚举成功并与结构设计完全相符,三个USB 端点均能够正常地进行数据传输且互不干扰。
图10 Bus Hound 软件设备显示图
该设计稳定性测试如表1 所示,兼容性测试如表2 所示。
表1 稳定性测试表
表2 兼容性测试表
5 结语
本文研究了单片机、USB 总线协议和蓝牙技术,深度分析USB 复合设备,以USB 设备通信传输协议为基础了设计了基于单片机的USB 复合设备键盘鼠标。经过测试结果证明,本设计具有灵活性好、稳定性强、兼容性高等优点,非常适合家庭影院、教学课堂等多媒体场景下使用,解决了键盘鼠标外设部署配置简单化的问题。