【摘要】本文針對以嵌入式計算機系統為核心的隔爆設備實現就地操作困難,成本高,可靠性低等問題,提出了一種以C8051F340單片機為核心的USB鼠標配備紅外遙控器實現隔爆設備就地操作的解決方案,并詳細介紹了該USB鼠標的軟硬件實現方法。實際應用表明,采用該方案設計的紅外遙控USB鼠標能很好的解決隔爆設備就地操問題,成本低,簡單可靠,便于安裝,具有很強的推廣意義和實用價值。
【關鍵詞】紅外遙控;USB鼠標;C8051F340;單片機
引言
隨著煤礦生產自動化程度的不斷提高,煤礦井下電子設備數量也隨之增加,尤其是井下的系統集控設備數量急劇增多,為實現復雜的現場控制、通信、顯示等功能,此類設備多以嵌入式計算機系統為核心,以防爆外殼實現礦用化功能。然而隔爆設備有一個明顯的弊端,就是按鍵少,甚至沒有按鍵,實現就地操作困難,如果在使用過程中需要輸入數字或字符等信息,純隔爆設備難以實現,比如配置IP地址、輸入密碼、設置報警限定值等,為此有人將輸入鍵盤設計成本安型組件或整體設計成本安設備,但并不是所有設備均能設計成本安設備,并且還會帶來外殼防護,成本,持久可靠性等一系列問題,形成嵌入式計算機系統應用技術向井下移植過程中的一個障礙。針對這種現象,筆者設計了一款既能實現紅外遙控接收解碼,又具備USB鼠標接口功能的電路,將紅外接收的按鍵信息轉換成USB鼠標動作,可以徹底解決這個問題。
1.遙控USB鼠標設計方案
目前幾乎所有的嵌入式計算機系統都具備富余USB設備接口,而且操作系統軟件也集成了鼠標驅動程序,本設計正是利用冗余的USB接口實現信息輸入功能,首先選用帶煤安證的通用紅外遙控器發射遙控信號,然后用單片機實現紅外接收解碼映射成鼠標動作,最后通過標準USB V1.1協議與嵌入式計算機系統進行通信。遙控器按鍵示意圖如圖1所示:
圖1 遙控器按鍵示意圖
遙控器按鍵對應的鼠標動作如表1所示:
表1
按鍵名稱 鼠標動作定義 備注
5 鼠標上移 長按表示連續移動
7 鼠標左移 同上
9 鼠標右移 同上
0 鼠標下移 同上
+ 鼠標左鍵 連續按兩次表示雙擊
- 鼠標右鍵 雙擊不響應
設置 滾輪上滾
確認 滾輪下滾
單片機選用C8051F340,具備高速8051內核和擴展的中斷控制系統,有48MIPS和25MIPS兩種版本,I/O端口均可耐5V電壓,48腳TQFP封裝。該芯片自帶USB設備接口模塊功能,符合USB規范2.0版本[3],集成時鐘恢復電路和USB收發器,無需外部晶振以及外部電阻,支持8個端點,片內自帶1KB大小的USB緩存,非常適合本應用,目前市面上廉價的鼠標控制芯片均已集成光電輸入,而且非工業級芯片標準,因此不適合本應用。
紅外遙控接收頭采用3.3V標準的HS0038集成解碼器,濾除載波信號,提取按鍵碼信號輸出,單片機采用中斷方式接收,同時觸發一個專用定時器對接收的低電平持續時間進行計時,0.5毫秒認為是“0”,1.5毫秒則認為是“1”,連續接收16個數據位,組成兩個字節,前一個字節為標志碼,后一個字節為按鍵信息[2],在成功接收到按鍵信息后,將此信息直接按動作對應關系轉換成SUB鼠標動作信息發送給嵌入式系統,從而完成系統輸入要求。
2.遙控USB鼠標設計原理圖(見圖2)
如圖2所示,通過USB接口取電獲得5V電源,然后降壓得到3.3V電源給CPU以及紅外接收頭,紅外接收頭的輸出信號通過外部中斷方式進入CPU,USB數據接口直接與外部相連,電路極為簡單,器件少而且成本低。
3.軟件設計
按照電路硬件設計,紅外接收信號會觸發中斷,同時啟動一個專用定時器對紅外信號進行計時,在中斷服務程序中實現解碼功能,然后將紅外遙控按鍵信息轉換成鼠標動作數據,按USB鼠標動作數據幀向外發發送,從而實現鼠標功能。其中最關鍵的USB鼠標報告描述符定義[1]如下:
const hid_report_descriptorHIDREPORTDESC=
{
0x05, 0x01,//Usage Page (Generic Desktop)
0x09, 0x02,//Usage (Mouse)
0xA1, 0x01,//Collection (Application)
0x05, 0x09,//Usage (Pointer)
0x19, 0x01,//Usage Minimum (01)
0x29, 0x03, //Usage Maximum (01)
0x15, 0x00,//Logical Minimum (0)
0x25,0x01,//Logical Maximum (1)
0x95, 0x03,// Report Count (3)
0x75, 0x01,// Report Size (1)
0x81, 0x02,// Input (Data, Variable, Absolute)
0x95, 0x01,// Report Count (1)
0x75, 0x05,// Report Size (5)
0x81, 0x03,/ Input (Constant) for padding
0x05, 0x01,// Usage Page (Generic Desktop)
0x09, 0x01,
0xa1, 0x00,
0x09, 0x30,// Usage (X)
0x09, 0x31,// Usage (Y)
0x15, 0x81,// Logical Minimum (-127)
0x25, 0x7F,// Logical Maximum (127)
0x75, 0x08,//Report Size (8)
0x95, 0x02,//Report Count (3)
0x81, 0x06,//Input (Data, Variable, Relative)
0xC0,
0x09, 0x38,
0x95, 0x01,
0x81, 0x06,
0x09, 0x3c,
0x15, 0x00,
0x25, 0x01,
0x75, 0x01,
0x95, 0x01,
0xb1, 0x22,
0x95, 0x07,
0xb1, 0x01,
0xc0 };
程序設計流程圖如圖3所示:
圖3 程序設計流程圖
4.結語
由于上述方案設計成本低廉,已采用本方案設計了一款標準組件,批量應用于煤礦現場,使用效果極好。實踐證明,這種采用紅外遙控實現煤礦井下隔爆設備現場操作的方法安全、穩定、可靠,體積小便于安裝,并且不會對其他任何器件產生不良影響,為煤礦防暴設備的現場信息輸入提供了一個全新而且完美的解決方案,具有極為廣泛的實際指導意義和推廣價值。
參考文獻
[1]倪陳強,基于C8051F340單片機的USB HID類設備設計[J].現代電子技術,2007(18).
[2]余東峰,通用紅外遙控解碼器的設計[J].現代電子技術,2011,8.
[3]潘琢金(譯).C8051F340全速USB FLASH控制器數據手冊.深圳:新華龍電子,2006,1.
作者簡介:楊生元(1975—),男,電子設計工程師,從事煤礦井下電力監控系統以及煤礦電氣自動控制方面的研究。