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