朱俊杰,龔銳彬
(廣州城市理工學(xué)院 電子信息工程學(xué)院,廣東廣州,510800)
市場(chǎng)上傳統(tǒng)的鍵盤鼠標(biāo)以桌面式為主,占據(jù)較大的空間,在部分場(chǎng)景下使用不便且不方便攜帶??罩惺髽?biāo)[5]的出現(xiàn)使鼠標(biāo)不再依賴桌面,利用慣性傳感器采集的信息控制鼠標(biāo)移動(dòng)。近年來(lái)越來(lái)越多的學(xué)者對(duì)便攜式鍵盤鼠標(biāo)進(jìn)行理論研究和實(shí)驗(yàn)測(cè)試,文獻(xiàn)[2]設(shè)計(jì)了指尖壓敏可佩戴式鍵盤鼠標(biāo),利用陀螺儀的速度控制鼠標(biāo),使用九宮格輸入方法,依據(jù)不同手指的敲擊次數(shù)作為鍵盤輸入。文獻(xiàn)[4]提出了BLE 空中鼠標(biāo)系統(tǒng),利用光標(biāo)定位法和固定光標(biāo)法解決“未知”和光標(biāo)“死區(qū)”問(wèn)題。大部分的研究文獻(xiàn)主要對(duì)空中鼠標(biāo)進(jìn)行了研究和實(shí)驗(yàn)測(cè)試,對(duì)復(fù)合式鍵盤鼠標(biāo)研究文獻(xiàn)較少。
基于以上背景,本文設(shè)計(jì)了一款基于單片機(jī)的USB 復(fù)合設(shè)備鍵盤鼠標(biāo)。該設(shè)計(jì)由USB 接收器和手機(jī)APP 組成。受控終端插入U(xiǎn)SB 接收器,手機(jī)APP 模擬鍵盤鼠標(biāo)功能,通過(guò)藍(lán)牙傳輸至終端接收,實(shí)現(xiàn)鍵盤鼠標(biāo)操作。解決了鍵盤鼠標(biāo)外設(shè)部署配置簡(jiǎn)單化,具有攜帶方便、靈活、穩(wěn)定性強(qiáng)等優(yōu)點(diǎn)。
本設(shè)計(jì)方案采用模塊化設(shè)計(jì),系統(tǒng)結(jié)構(gòu)如圖1 所示。本設(shè)計(jì)由手機(jī)APP 模擬鍵盤鼠標(biāo)操作,將操作指令數(shù)據(jù)通過(guò)藍(lán)牙傳輸至USB 接收器藍(lán)牙模塊,再通過(guò)串口協(xié)議將數(shù)據(jù)傳輸給STM32 單片機(jī)處理,使用USB 通信協(xié)議將數(shù)據(jù)傳輸至USB 接口,USB 接口通過(guò)有線電纜與主機(jī)相連,最后將數(shù)據(jù)傳輸給主機(jī)完成鍵盤鼠標(biāo)操作。硬件部分由主控電路、藍(lán)牙模塊和電源電路組成。主控芯片選擇STM32F103C8T6,負(fù)責(zé)通信協(xié)議的轉(zhuǎn)換和數(shù)據(jù)處理。藍(lán)牙模塊采用HC-05,其采用RS232 串口通信協(xié)議,負(fù)責(zé)數(shù)據(jù)通信交互,藍(lán)牙開發(fā)模式使用雙微控制器模式,由主機(jī)控制來(lái)實(shí)現(xiàn)模塊功能。電源電路選用AMS1117-3.3V 電源芯片,實(shí)現(xiàn)USB 電壓5V 降壓為3.3V,負(fù)責(zé)給STM32 單片機(jī)和藍(lán)牙模塊供電。
圖1 系統(tǒng)結(jié)構(gòu)圖
主控電路原理圖如圖2 所示,主控芯片STM32F103C8T6與USB 接口相連,終端通過(guò)USB 口插入連接,使用USB數(shù)據(jù)傳輸協(xié)議進(jìn)行通信。主控芯片與HC-05 藍(lán)牙模塊通過(guò)串口連接,使用串口傳輸協(xié)議通信,將藍(lán)牙模塊收到的手機(jī)APP 數(shù)據(jù)進(jìn)行處理分析后發(fā)送至終端。USB 傳輸線[12]由電源線、地線、D+和D-四條線組成,其中電源線和地線可提供5V 電壓,最大500mA 電流,D+和D-為差分信號(hào)輸入線,使用3.3V 電壓。
圖2 主控電路原理圖
電源電路原理圖如圖3 所示,此部分電路主要組成有:AMS1117 穩(wěn)壓芯片、濾波電容、模擬地?cái)?shù)字隔離電感電阻。該電路可穩(wěn)定將5V 輸入電壓降為3.3V,最大電流可達(dá)1A。其中D3.3V 和A3.3V 為均3.3V 電源端,分別供數(shù)字電路和模擬電路使用。
圖3 AMS1117-3.3V 電路原理圖
藍(lán)牙模塊原理圖如圖4 所示,其中1 號(hào),2 號(hào)引腳與主控芯片通過(guò)串口連接進(jìn)行數(shù)據(jù)通信,手機(jī)APP 數(shù)據(jù)將通過(guò)模塊內(nèi)置射頻天線接收,接收到的數(shù)據(jù)通過(guò)串口協(xié)議傳輸給主控芯片處理。31 號(hào)引腳連接的STA 燈用來(lái)顯示藍(lán)牙模塊的工作狀態(tài),34 號(hào)引腳用來(lái)控制藍(lán)牙芯片工作模式。當(dāng)34 號(hào)引腳置低電平時(shí),STA 燈快閃,藍(lán)牙模塊進(jìn)入可配對(duì)模式,匹配成功后STA燈慢閃,進(jìn)入AT模式。若匹配不成功,藍(lán)牙模塊進(jìn)入AT 模式,但STA 燈繼續(xù)保持快閃,此時(shí)無(wú)藍(lán)牙匹配連接。當(dāng)34 號(hào)引腳置高電平時(shí),STA 燈慢閃,藍(lán)牙模塊進(jìn)入AT 模式[10]。
圖4 HC-05 藍(lán)牙模塊原理圖
USB 通信[9~12]屬于主從式通信,請(qǐng)求從主機(jī)端向設(shè)備端發(fā)出并響應(yīng)。USB 協(xié)議通信時(shí),數(shù)據(jù)編碼采用NRZI 方式,以包為單位在進(jìn)行傳輸。USB 通信有四種傳輸模式,指USB 設(shè)備與控制器驅(qū)動(dòng)之間進(jìn)行的傳輸以事務(wù)為單位進(jìn)行,分別有批量傳輸、控制傳輸、中斷傳輸和同步傳輸。中斷傳輸模式[11]用于非周期地自然發(fā)生的數(shù)據(jù)量小的信息傳輸,并且只有從外設(shè)到主機(jī)一個(gè)傳輸方向,所以采用中斷傳輸模式。鍵盤鼠標(biāo)事件發(fā)生后,通過(guò)中斷端口通知主機(jī)端完成相關(guān)任務(wù)。
USB 設(shè)備枚舉[13]。USB 設(shè)備在插入終端時(shí),終端檢測(cè)到設(shè)備插入將進(jìn)行USB 設(shè)備枚舉。在枚舉的過(guò)程中,終端對(duì)USB 設(shè)備進(jìn)行詢問(wèn),要求USB 設(shè)備對(duì)描述符進(jìn)行回復(fù),若USB 設(shè)備回復(fù)的描述符被終端正常讀取,則根據(jù)USB 設(shè)備發(fā)回的數(shù)據(jù)進(jìn)行分析和處理,直至終端為USB 設(shè)備配置驅(qū)動(dòng)使其可以被正確識(shí)別并使用。枚舉過(guò)程中傳輸了包括:地址、設(shè)備描述符、配置描述符、字符描述符、報(bào)告描述符等。
USB 復(fù)合設(shè)備[6],指具有兩個(gè)獨(dú)立的USB 設(shè)備功能,集中在同一個(gè)硬件上的USB-HID 設(shè)備。該設(shè)計(jì)屬于通用USB 設(shè)備,接口須符合USB-HID 協(xié)議,并且在接口描述符中分配兩個(gè)接口,分別對(duì)應(yīng)為鍵盤、鼠標(biāo)設(shè)備接口。其中鍵盤在端點(diǎn)描述符中有兩個(gè)端口,分別對(duì)應(yīng)鍵盤按鍵鍵值和指示燈控制。USB 描述符結(jié)構(gòu)框圖如圖5 所示。
圖5 USB 描述符結(jié)構(gòu)框圖
本設(shè)計(jì)系統(tǒng)軟件流程為進(jìn)入初始化,首先檢測(cè)USB 設(shè)備枚舉狀態(tài),在USB 保持連接的情況下檢測(cè)藍(lán)牙信號(hào),使用手機(jī)APP 發(fā)送數(shù)據(jù)到單片機(jī)MCU,單片機(jī)MCU 對(duì)數(shù)據(jù)進(jìn)行處理,并通過(guò)數(shù)據(jù)判斷并發(fā)送鍵盤鍵值或鼠標(biāo)光標(biāo)位置,直到USB 斷開后結(jié)束整個(gè)流程。系統(tǒng)軟件流程圖如圖6 所示。
圖6 系統(tǒng)軟件整體流程圖
本設(shè)計(jì)鍵盤鼠標(biāo)操作由手機(jī)APP 實(shí)現(xiàn),設(shè)計(jì)UI 組件設(shè)計(jì)界面,放置鍵盤按鍵和觸摸板。進(jìn)入邏輯設(shè)計(jì)界面,設(shè)計(jì)按鍵按下和松開的邏輯鍵盤操作,設(shè)計(jì)觸摸板的移動(dòng)相對(duì)距離Dx,Dy 得到相對(duì)坐標(biāo)。APP 設(shè)計(jì)圖如圖7 所示,設(shè)計(jì)藍(lán)牙虛擬按鍵控制手機(jī)與下位機(jī)連接開關(guān),并將按鍵和觸摸板操作通過(guò)藍(lán)牙發(fā)送數(shù)據(jù)到下位機(jī)。在USB 底層協(xié)議配置中,為鍵盤和鼠標(biāo)分別配置了2 個(gè)報(bào)告ID 號(hào)(即分配2 個(gè)接口),如圖8 所示。鼠標(biāo)接口負(fù)責(zé)獲取鼠標(biāo)的移動(dòng)、單擊、雙擊、拖動(dòng)、單擊右鍵的數(shù)據(jù)傳輸至相應(yīng)的地址存儲(chǔ)。鍵盤接口ID 號(hào)中設(shè)定2 個(gè)端口,分別負(fù)責(zé)鍵盤按鍵鍵值數(shù)據(jù)傳輸和鍵盤指示燈開關(guān),并將獲取的數(shù)據(jù)傳輸至相應(yīng)的地址存儲(chǔ)。軟件處理時(shí)需保證鍵盤和鼠標(biāo)數(shù)據(jù)正確性,防止鍵盤和鼠標(biāo)數(shù)據(jù)錯(cuò)亂。
圖7 APP 設(shè)計(jì)圖
圖8 USB 配置部分代碼
通過(guò)軟硬件設(shè)計(jì)后,完成實(shí)物制作,接收器實(shí)物圖如圖9 所示。結(jié)合APP 軟件進(jìn)行系統(tǒng)聯(lián)合調(diào)試,調(diào)試包含功能性測(cè)試、穩(wěn)定性測(cè)試和兼容性測(cè)試,測(cè)試方法包括:鍵盤全鍵測(cè)試、鍵盤指示燈測(cè)試、鼠標(biāo)移動(dòng)測(cè)試、鼠標(biāo)點(diǎn)擊測(cè)試、鼠標(biāo)框選測(cè)試、藍(lán)牙連接測(cè)試、冷熱重啟檢測(cè)、熱拔插檢測(cè)等。
圖9 接收器實(shí)物圖
將接收器插入電腦對(duì)USB 設(shè)備枚舉情況進(jìn)行測(cè)試,使用總線協(xié)議分析軟件Bus Hound 對(duì)USB 設(shè)備進(jìn)行抓取顯示,如圖10 所示。該設(shè)計(jì)有兩個(gè)接口三個(gè)端口,第一個(gè)接口枚舉為鍵盤端口和指示燈端口,第二個(gè)接口枚舉為鼠標(biāo)設(shè)備。經(jīng)過(guò)鍵盤鼠標(biāo)測(cè)試軟件PassMark KeyboardTest 多次測(cè)試,鍵盤鼠標(biāo)功能正常。經(jīng)測(cè)試USB 枚舉成功并與結(jié)構(gòu)設(shè)計(jì)完全相符,三個(gè)USB 端點(diǎn)均能夠正常地進(jìn)行數(shù)據(jù)傳輸且互不干擾。
圖10 Bus Hound 軟件設(shè)備顯示圖
該設(shè)計(jì)穩(wěn)定性測(cè)試如表1 所示,兼容性測(cè)試如表2 所示。
表1 穩(wěn)定性測(cè)試表
表2 兼容性測(cè)試表
本文研究了單片機(jī)、USB 總線協(xié)議和藍(lán)牙技術(shù),深度分析USB 復(fù)合設(shè)備,以USB 設(shè)備通信傳輸協(xié)議為基礎(chǔ)了設(shè)計(jì)了基于單片機(jī)的USB 復(fù)合設(shè)備鍵盤鼠標(biāo)。經(jīng)過(guò)測(cè)試結(jié)果證明,本設(shè)計(jì)具有靈活性好、穩(wěn)定性強(qiáng)、兼容性高等優(yōu)點(diǎn),非常適合家庭影院、教學(xué)課堂等多媒體場(chǎng)景下使用,解決了鍵盤鼠標(biāo)外設(shè)部署配置簡(jiǎn)單化的問(wèn)題。