引言
作為一種短距離無線通信協議,藍牙技術以其低成本、低功耗、高速率、方便靈活等特點在眾多無線解決方案中脫穎而出。藍牙10m的工作距離可以很好的滿足大多數數字設備的應用場合,如辦公室或家庭。打印機是常用的一個設備,擺脫打印機連線所帶來的不便,實現無線打印,可以減少桌面上令人不快的電纜,并且可以將打印機遠離主機任意搬動,擺放在房間中適合的位置。本文介紹一種用藍牙技術來實現主機與打印機的無線連接,實現遙控打印的方法。
藍牙打印機的設計方案
設計的總體思路如圖1所示:
圖1 藍牙打印機設計的總體思路
在主機端用一單片機來仿真打印機進行工作,截取從主機并口傳出的數據及控制信號,并通過藍牙無線連接傳送到打印機端。在打印機側的單片機則根據所收到的藍牙數據來仿真主機對打印機進行控制操作,從而實現打印機與主機的藍牙無線連接。主機端的藍牙作為主設備進行查詢和發起連接,打印機端的藍牙則作為從設備等待連接的建立。單片機采用89C2051,藍牙芯片采用愛立信公司生產的支持點對點連接的ROK101-008。該模塊內包括了無線部分、基帶控制器、閃存、電源控制模塊和內部時鐘這五個主要部分,提供UART、PCM、I2C標準接口并內置晶振,其硬件框圖如圖2所示:
圖2 Ericsson ROK 101 008 硬件框圖
該方案適用于具有Centronic并行接口的通用打印機。用戶無須更改打印機的驅動程序,只需將含有單片機和藍牙的兩塊板子分別連接到主機端和打印機上,就可以進行無線打印了。整個過程對于原打印機驅動程序是透明的,這樣就為打印機用戶提供了很大的方便。
單片機對藍牙模塊的控制
圖3 藍牙HCI傳輸層示意圖
藍牙規范定義了主機控制接口(HCI),它為基帶控制器、硬件控制器、硬件狀態和控制寄存器等提供了標準的命令接口。主機通過HCI傳輸層將控制命令和數據發送給藍牙模塊,而藍牙模塊又通過HCI傳輸層將其狀態信息及數據發還給主機。HCI傳輸層的主要目的是實現透明性。傳輸層不需要對主控制器驅動程序傳送給主控制器的數據可見,這就使接口(HCI)或主控制器能在不影響傳輸層的基礎上升級。
如圖3所示,在HCI傳輸層中至少傳送4種不同類型的包——HCI命令、HCI事件、ACL數據和SCL數據。每個HCI包都以HCI指示頭開始,不同的指示頭代表著不同類型的HCI包: 0x01HCI指令分組 0x02HCIACL數據分組 0x03HCISCO數據分組 0x04HCI事件分組
傳輸層主要有下列3種:HCIUSB;HCIPCM;HCIUART。我們用單片機通過HCI-UART傳輸子層對藍牙模塊進行控制。連接的原理圖如圖4所示:
圖4 單片機與藍牙連接原理圖
一般來說,將單片機與藍牙芯片在短距離內直接相連,便已可保證數據的可靠傳輸,也無須接CTS和RTS信號進行流量控制。單片機與藍牙間的UART通信采用8位數據位,1位終止位,無奇偶校驗,使用無類型小Endian格式,即最低位最先發送。UART通信格式及波特率均可通過單片機向藍牙發送HCI指令來進行調整。ROK-101-008芯片最高可支持460.8Kbps的UART速率。發送給藍牙模塊的第一條HCI指令應該是軟件復位(SoftReset)命令,當藍牙執行完一條指令后,將返回一個帶有狀態參數信息的命令完成事件(Command_Complete_Event),以告知主機(單片機)命令執行的情況。
當完成軟件復位后,要使得藍牙模塊做為從設備等待來自其他藍牙設備的查詢和連接發起,我們還需設置一些計時器的值,進行一系列的參數設定。即使是作為主設備的主機端藍牙,在進行查詢和建立連接之前也需要做上述的參數設定工作。這些需要設置的參數主要有下列幾個: *SetEventFilter(設置事件過濾器) *WriteScanEnable(設置掃描參數,如是否可以進行查詢和尋呼) *WriteAuthenticationEnable(設置是否需要進行驗證) *WritePageTimeout(設置尋呼超時,一般該值可以設為7s)
打印機端的藍牙模塊在設置完上述各參數后便已經做好了從設備的準備,等待連接的建立。而在主機端的藍牙模塊還需進行查詢(Inquiry)過程以取得遠端設備的藍牙地址,并根據查詢得到的藍牙地址來發起連接。一旦藍牙連接被建立之后,便可以進行數據的收發,以實現藍牙無線打印。
單片機與主機以及打印機的連接
單片機和主機以及打印機的接口電路十分簡單,以與打印機連接為例,電路如圖5所示:
圖5 單片機與打印機連接原理圖
將89C2051的P1口直接與打印機的數據口相連,用P3.7來采樣打印機的BUSY信號。由于主機與打印機的連線一般較長,打印機一側一般均有匹配電阻,因此作為STROBE信號輸出的P3.3不能與打印機直接相連,這里我們用一與非門來增加驅動能力以實現控制。當單片機接收到主機通過藍牙發送過來的數據后,在打印機側模擬主機對打印機進行控制操作。首先將要發送給打印機的數據從P1口輸出,隨后從P3.3經過門電路反向產生一個負脈沖,作為選通信號發送給打印機,偵聽P3.7上的BUSY信號,當該信號電平為低時,則表示本次數據已被打印機接收,可以發送下一個數據。
結語
以上方案并不涉及打印機的具體型號,也無須改變用戶打印機的驅動程序,因而適用于大多數的通用打印機。這種用單片機通過UART傳輸層對藍牙模塊進行控制的方法,不僅僅適用于藍牙打印機的研制,還適應于各類嵌入式的藍牙系統。
責任編輯:gt
-
單片機
+關注
關注
6035文章
44554瀏覽量
634660 -
藍牙
+關注
關注
114文章
5809瀏覽量
170192 -
打印機
+關注
關注
10文章
768瀏覽量
45659
發布評論請先 登錄
相關推薦
評論