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