李彥鵬
?
基于USB的無線鼠標的設(shè)計
李彥鵬
張家口市人民防空辦公室,河北 張家口 075000
鼠標自1968年誕生以來,已經(jīng)經(jīng)歷過四十多年的演變和發(fā)展。近十年來,隨著消費型電腦的普及,鼠標的工作方式也有了翻天覆地的進步。研究將論述一種把PS2鼠標改變成無線鼠標的方法,根據(jù)鼠標的工作原理和協(xié)議,利用老舊的PS2鼠標和2.4GHz的無線收發(fā)模塊,配合PCUSB口,來實現(xiàn)一款簡易的無線USB口鼠標。
USB;無線;鼠標
隨著人們對辦公環(huán)境和操作便捷性要求日益增高,無線鼠標普及也被提到日程上來。研究在鼠標與電腦接口間用發(fā)射和接收電路代替了鼠標線,根據(jù)鼠標的工作原理和協(xié)議,利用老舊的PS2鼠標和2.4GHz的無線收發(fā)模塊,配合PCUSB口,實現(xiàn)了一款簡易的無線USB口鼠標[1]。
1.1 發(fā)射部分
發(fā)射部分電路主要由AVR單片機ATMEL Mega8(以下簡稱為Mega8)和315M發(fā)射模塊組成。Mega8是一款高性能、低功耗單片機:采用先進RISC精簡指令,1MHz時鐘能達到近1MIPS的運算速度;內(nèi)部集成了較大容量的存儲器和豐富的硬件接口電路,自帶RC振蕩電路可代替晶振;價格與低檔單片機相當,性價比極高。在這里,Mega8主要完成PS2接口鼠標的控制與數(shù)據(jù)獲取,并通過315M發(fā)射模塊發(fā)送位移數(shù)據(jù)[2]。
1.2 接收模塊
接收部分電路主要由接收模塊和cp2102組成,其中LED用于指示無線信號的接收解調(diào)情況,有數(shù)據(jù)接收時LED應(yīng)閃亮。Silicon Laboratories公司推出的USB接口與RS232接口轉(zhuǎn)換器CP2102/CP2103是一款高度集成的USB-UART橋接器,提供一個使用最小化元件和PCB空間來實現(xiàn)RS232轉(zhuǎn)換USB的簡便解決方案。
1.3 異步串行數(shù)據(jù)總線(UART)接口
CP2102/CP2103 UART接口包括TX (發(fā)送)和RX(接收)數(shù)據(jù)信號以及RTS、CTS、DSR、DTR、DCD和RI控制信號。UART支持RTS/CTS、DSR/DTR和X-On/X-Off握手[3]。
通過編程設(shè)置UART,支持各種數(shù)據(jù)格式和波特率。在PC機的COM端口編程設(shè)置UART的數(shù)據(jù)格式和波特率。
鼠標的工作模式有四種,分別為Reset模式,Wrap模式,Remote模式和Stream模式。前兩種作為測試用,Remote模式為主機有需要時,發(fā)送命令使鼠標回送位移數(shù)據(jù),Stream模式是上電的初始模式,每當鼠標產(chǎn)生位置或者按鍵狀態(tài)的改變就自動發(fā)送數(shù)據(jù)。顯而易見,第四種模式是最合適的。在正常讀取鼠標數(shù)據(jù)前只需發(fā)送命令(0xF4),此命令告知鼠標,主機已經(jīng)準備完畢,可以接受位移數(shù)據(jù)。
無線鼠標軟件流程如下:
(1)Mega8自身初始化,并通過0xF4命令告知PS2鼠標準備完畢;
(2)等待PS2鼠標回送位移數(shù)據(jù):Mega8利用中斷按Bit進行數(shù)據(jù)讀取,每讀取一個數(shù)據(jù)包,進行正確性驗證,然后根據(jù)無線發(fā)射模塊的發(fā)射特性,在數(shù)據(jù)包頭尾分別添加0xAA與0x55封裝成新的數(shù)據(jù)包,并通過UART端口將位移數(shù)據(jù)進行發(fā)送;
(3)接收模塊接收的數(shù)據(jù)通過CP2102,將數(shù)據(jù)傳送至USB口,PC軟件進行解釋并轉(zhuǎn)換為鼠標的運動軌跡。
本無線鼠標的制作方法與要點:
(1)由于單片機串口不發(fā)送數(shù)據(jù)時為高電平,因此將模塊中比較小的一個貼片三極管改為PNP型三極管,例如8550、9012等。經(jīng)這樣改造后,發(fā)射模塊僅在發(fā)送低電平數(shù)據(jù)時才產(chǎn)生315M的調(diào)制信號,尤其是符合了串口低電平起始位的特點,并且節(jié)省了相當一部分的功耗。
(2)研究發(fā)現(xiàn)部分接收模塊的輸出信號總在1/2VDD附近,這樣的信號必然不能被單片機的串口所正確接收,通過分析,將LM358后一級放大器的IN+與IN-之間的電阻(R11)去掉,效果就比較滿意了:沒有接收信號時為低電平,接收到信號時為高電平。當然,不同接收模塊性能不盡相同,如果讀者在制作時候遇到此類現(xiàn)象,不妨可以試試此方法。
(3)發(fā)射模塊和接受模塊的天線可以選用(1/4λ)23.8 cm左右的硬質(zhì)的銅線,在鉛筆上纏成螺旋形并適當拉長即可。天線有一定的方向性,這與接收到的信號強弱有很大的關(guān)系。
(4)由于本代碼未涉及精確的延時,對AVR熔絲位編程時選擇使用內(nèi)部RC振蕩8M即可。
AVR系列單片機與51系列的單片機端口結(jié)構(gòu)不同,它的輸入輸出的轉(zhuǎn)換需要通過修改寄存器(DDRx)來實現(xiàn)。因此讀寫時需分清端口的方向。在本電路中,只用了PD3(接PS2的CLK)和PD4(接PS2的DATA)兩個端口,利用PD3檢測PS2的時鐘下降沿產(chǎn)生中斷,并按Bit讀取PS2的串行數(shù)據(jù)。當然讀者也可以進行修改以適用更加小巧的AVR單片機甚至貼片封裝的單片機。
當CP2102轉(zhuǎn)換器與主機連接后,必須根據(jù)操作系統(tǒng)選擇相對應(yīng)的虛擬串行口驅(qū)動程序。不必修改設(shè)備的應(yīng)用程序,就像存取一個標準的物理串口一樣訪問該虛擬串口,端口設(shè)備會產(chǎn)生“CP2102 USB to UART Bridge Controller(COM×)”的新端口(×隨計算機的配置而異),此時說明驅(qū)動程序安裝成功。
研究利用Mega8完成了鼠標移動數(shù)據(jù)的讀取與PC機通信數(shù)據(jù)的傳送,其實質(zhì)為PS/2到TTL232協(xié)議的轉(zhuǎn)換,有興趣的讀者可以使用更加小巧、低電壓的芯片進行改造,使結(jié)構(gòu)更加合理,外觀更加美觀。筆者將包含鼠標定位點的串口數(shù)據(jù)包使用無線收發(fā)模塊為媒介,實現(xiàn)了無線數(shù)據(jù)傳送和接受,從而完成了無線鼠標的制作,從通用性和易用性上說,具有廣泛的應(yīng)用價值。
[1]劉海成.AVR單片機原理及測控工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008(04):364-374.
[2]求是科技.單片機典型模塊設(shè)計實例導(dǎo)航[M].第二版.北京:人民郵電出版社,2009(09):362-368.
[3]白智濤,趙莉,姜紅梅.基于PS/2接口的無線鼠標[J].無線電工程,2000(06):13-14.
TP334.2
A
1009-6434(2016)05-0069-01