一種藍(lán)牙打印機的實現(xiàn)方案
作為一種短距離無線通信協(xié)議,藍(lán)牙技術(shù)以其低成本、低功耗、高速率、方便靈活等特點在眾多無線解決方案中脫穎而出。藍(lán)牙10m的工作距離可以很好的滿足大多數(shù)數(shù)字設(shè)備的應(yīng)用場合,如辦公室或家庭。打印機是常用的一個設(shè)備,擺脫打印機連線所帶來的不便,實現(xiàn)無線打印,可以減少桌面上令人不快的電纜,并且可以將打印機遠(yuǎn)離主機任意搬動,擺放在房間中適合的位置。本文介紹一種用藍(lán)牙技術(shù)來實現(xiàn)主機與打印機的無線連接,實現(xiàn)遙控打印的方法。
藍(lán)牙打印機的設(shè)計方案
設(shè)計的總體思路如圖1所示:
在主機端用一單片機來仿真打印機進行工作,截取從主機并口傳出的數(shù)據(jù)及控制信號,并通過藍(lán)牙無線連接傳送到打印機端。在打印機側(cè)的單片機則根據(jù)所收到的藍(lán)牙數(shù)據(jù)來仿真主機對打印機進行控制操作,從而實現(xiàn)打印機與主機的藍(lán)牙無線連接。主機端的藍(lán)牙作為主設(shè)備進行查詢和發(fā)起連接,打印機端的藍(lán)牙則作為從設(shè)備等待連接的建立。單片機采用89C2051,藍(lán)牙芯片采用愛立信公司生產(chǎn)的支持點對點連接的ROK101-008。該模塊內(nèi)包括了無線部分、基帶控制器、閃存、電源控制模塊和內(nèi)部時鐘這五個主要部分,提供UART、PCM、I2C標(biāo)準(zhǔn)接口并內(nèi)置晶振,其硬件框圖如圖2所示:
該方案適用于具有Centronic并行接口的通用打印機。用戶無須更改打印機的驅(qū)動程序,只需將含有單片機和藍(lán)牙的兩塊板子分別連接到主機端和打印機上,就可以進行無線打印了。整個過程對于原打印機驅(qū)動程序是透明的,這樣就為打印機用戶提供了很大的方便。
單片機對藍(lán)牙模塊的控制
藍(lán)牙規(guī)范定義了主機控制接口(HCI),它為基帶控制器、硬件控制器、硬件狀態(tài)和控制寄存器等提供了標(biāo)準(zhǔn)的命令接口。主機通過HCI傳輸層將控制命令和數(shù)據(jù)發(fā)送給藍(lán)牙模塊,而藍(lán)牙模塊又通過HCI傳輸層將其狀態(tài)信息及數(shù)據(jù)發(fā)還給主機。HCI傳輸層的主要目的是實現(xiàn)透明性。傳輸層不需要對主控制器驅(qū)動程序傳送給主控制器的數(shù)據(jù)可見,這就使接口(HCI)或主控制器能在不影響傳輸層的基礎(chǔ)上升級。
如圖3所示,在HCI傳輸層中至少傳送4種不同類型的包——HCI命令、HCI事件、ACL數(shù)據(jù)和SCL數(shù)據(jù)。每個HCI包都以HCI指示頭開始,不同的指示頭代表著不同類型的HCI包:
0x01 HCI指令分組
0x02 HCI ACL數(shù)據(jù)分組
0x03 HCI SCO數(shù)據(jù)分組
0x04 HCI事件分組
傳輸層主要有下列3種:HCI USB ; HCI PCM; HCI UART。我們用單片機通過HCI-UART傳輸子層對藍(lán)牙模塊進行控制。連接的原理圖如圖4所示:
一般來說,將單片機與藍(lán)牙芯片在短距離內(nèi)直接相連,便已可保證數(shù)據(jù)的可靠傳輸,也無須接CTS和RTS信號進行流量控制。單片機與藍(lán)牙間的UART通信采用8位數(shù)據(jù)位,1位終止位,無奇偶校驗,使用無類型小Endian格式,即最低位最先發(fā)送。UART通信格式及波特率均可通過單片機向藍(lán)牙發(fā)送HCI指令來進行調(diào)整。ROK-101-008芯片最高可支持460.8Kbps的UART速率。發(fā)送給藍(lán)牙模塊的第一條HCI指令應(yīng)該是軟件復(fù)位(Soft Reset)命令,當(dāng)藍(lán)牙執(zhí)行完一條指令后,將返回一個帶有狀態(tài)參數(shù)信息的命令完成事件(Command_Complete_Event),以告知主機(單片機)命令執(zhí)行的情況。
當(dāng)完成軟件復(fù)位后,要使得藍(lán)牙模塊做為從設(shè)備等待來自其他藍(lán)牙設(shè)備的查詢和連接發(fā)起,我們還需設(shè)置一些計時器的值,進行一系列的參數(shù)設(shè)定。即使是作為主設(shè)備的主機端藍(lán)牙,在進行查詢和建立連接之前也需要做上述的參數(shù)設(shè)定工作。這些需要設(shè)置的參數(shù)主要有下列幾個:
* Set Event Filter(設(shè)置事件過濾器)
* Write Scan Enable(設(shè)置掃描參數(shù),如是否可以進行查詢和尋呼)
* Write Authentication Enable(設(shè)置是否需要進行驗證)
* Write Page Timeout(設(shè)置尋呼超時,一般該值可以設(shè)為7s)
打印機端的藍(lán)牙模塊在設(shè)置完上述各參數(shù)后便已經(jīng)做好了從設(shè)備的準(zhǔn)備,等待連接的建立。而在主機端的藍(lán)牙模塊還需進行查詢(Inquiry)過程以取得遠(yuǎn)端設(shè)備的藍(lán)牙地址,并根據(jù)查詢得到的藍(lán)牙地址來發(fā)起連接。一旦藍(lán)牙連接被建立之后,便可以進行數(shù)據(jù)的收發(fā),以實現(xiàn)藍(lán)牙無線打印。
單片機與主機以及打印機
的連接
單片機和主機以及打印機的接口電路十分簡單,以與打印機連接為例,電路如圖5所示:
將89C2051的P1口直接與打印機的數(shù)據(jù)口相連,用P3.7來采樣打印機的BUSY信號。由于主機與打印機的連線一般較長,打印機一側(cè)一般均有匹配電阻,因此作為STROBE信號輸出的P3.3不能與打印機直接相連,這里我們用一與非門來增加驅(qū)動能力以實現(xiàn)控制。當(dāng)單片機接收到主機通過藍(lán)牙發(fā)送過來的數(shù)據(jù)后,在打印機側(cè)模擬主機對打印機進行控制操作。首先將要發(fā)送給打印機的數(shù)據(jù)從P1口輸出,隨后從P3.3經(jīng)過門電路反向產(chǎn)生一個負(fù)脈沖,作為選通信號發(fā)送給打印機,偵聽P3.7上的BUSY信號,當(dāng)該信號電平為低時,則表示本次數(shù)據(jù)已被打印機接收,可以發(fā)送下一個數(shù)據(jù)。
結(jié)語
以上方案并不涉及打印機的具體型號,也無須改變用戶打印機的驅(qū)動程序,因而適用于大多數(shù)的通用打印機。這種用單片機通過UART傳輸層對藍(lán)牙模塊進行控制的方法,不僅僅適用于藍(lán)牙打印機的研制,還適應(yīng)于各類嵌入式的藍(lán)牙系統(tǒng)?!?/P>
參考文獻:
1. Specifications of the Bluetooth System Version 1.1,http://www.bluetooth.com.
2. Ericsson ROK 101 008 Data Sheet,http://www.ericsson.com.
3. 金純等著,《藍(lán)牙技術(shù)》,電子工業(yè)出版社,2001.
4. 李華等著,《MCS-51系列單片機實用接口技術(shù)》,北京航空航天大學(xué)出版社,1993.
圖1 藍(lán)牙打印機設(shè)計的總體思路
圖2 Ericsson ROK 101 008 硬件框圖
圖3 藍(lán)牙HCI傳輸層示意圖
圖4 單片機與藍(lán)牙連接原理圖
圖5 單片機與打印機連接原理圖
評論