基于nRF4O1的無(wú)線排隊(duì)機(jī)設(shè)計(jì)
O 引言
隨著人民群眾的生活水平越來(lái)越高,排隊(duì)機(jī)在銀行、電信、醫(yī)院、稅務(wù)等窗口服務(wù)性行業(yè)使用越來(lái)越廣泛。根據(jù)單片機(jī)串行通信原理,采用nRF401無(wú)線通信模塊的開(kāi)發(fā)了無(wú)線排隊(duì)系統(tǒng)。無(wú)線排隊(duì)系統(tǒng)不但具備原有線系統(tǒng)的所有功能,而且突破了有線排隊(duì)系統(tǒng)在客戶安裝使用上的瓶頸等工作。該系統(tǒng)由基于NORDIC公司推出的單片無(wú)線收發(fā)一體芯片nRF401和基于51系列單片機(jī)兩部分組成,實(shí)際運(yùn)行取得了良好的效果。
1 系統(tǒng)組成
無(wú)線排隊(duì)機(jī)系統(tǒng)如圖l所示,該系統(tǒng)由發(fā)號(hào)主機(jī)、營(yíng)業(yè)員叫號(hào)器、主顯示屏、窗口顯示屏、語(yǔ)音報(bào)號(hào)器等部分組成。系統(tǒng)的每個(gè)組成部分的數(shù)據(jù)傳遞采用無(wú)線收發(fā)模式,通過(guò)通信協(xié)議使之成為一個(gè)無(wú)線的排隊(duì)系統(tǒng)。
2 無(wú)線通信原理
在無(wú)線排隊(duì)機(jī)數(shù)據(jù)通信系統(tǒng)中,單片機(jī)之間的數(shù)據(jù)通信采用一對(duì)多的主從模式,利用ISM頻段(433 MHz)無(wú)線通信。由發(fā)號(hào)主機(jī)負(fù)責(zé)發(fā)送從機(jī)(無(wú)線主顯示屏、無(wú)線窗口顯示屏、無(wú)線叫號(hào)器)地址、控制命令及數(shù)據(jù),從機(jī)則負(fù)責(zé)收集現(xiàn)場(chǎng)信息,進(jìn)行一定的數(shù)據(jù)處理,根據(jù)主機(jī)的要求返回?cái)?shù)據(jù),并執(zhí)行主機(jī)發(fā)出的命令。在采用主從式多機(jī)串行通信系統(tǒng)中,從機(jī)不主動(dòng)發(fā)送命令或數(shù)據(jù),一切都由主機(jī)控制。由于發(fā)送和接收共用同一物理信道,因此在任意時(shí)刻只允許一臺(tái)從機(jī)處于發(fā)送狀態(tài),只有被主機(jī)呼叫的從機(jī)才能占用總線,對(duì)主機(jī)作出應(yīng)答。每臺(tái)從機(jī)均分配有一個(gè)唯一的從機(jī)地址。主機(jī)與從機(jī)通信時(shí)采用輪流查詢方式,主機(jī)先呼叫某從機(jī)地址,喚醒被叫從機(jī)后,主、從兩機(jī)之間進(jìn)行數(shù)據(jù)交換,而末被呼叫的從機(jī)則繼續(xù)處于等待狀態(tài)。主機(jī)發(fā)送的信息可以傳到多個(gè)從機(jī)或指定的從機(jī),各從機(jī)發(fā)送的信息只能被主機(jī)接收。為了完成上述功能需通過(guò)設(shè)置單片機(jī)的串口控制寄存器SCON來(lái)實(shí)現(xiàn),在此將單片機(jī)設(shè)置在工作方式3,即SM0=1,SM1=1,且所有從機(jī)初始化SM2=1,使所有從機(jī)處于監(jiān)聽(tīng)狀態(tài)。通信仂議中的規(guī)定:
①單片機(jī)以方式3進(jìn)行通信,一幀數(shù)據(jù)的第9位為"1"代表地址幀,為"0"代表數(shù)據(jù)幀;
②設(shè)定通信波特率為1200bps;
③主機(jī)與從機(jī)的聯(lián)絡(luò)過(guò)程:主機(jī)下發(fā)地址幀,被呼叫從機(jī)向主機(jī)返回地址幀,以便主機(jī)確定與從機(jī)聯(lián)絡(luò)上了。主機(jī)下發(fā)控制命令,從機(jī)根據(jù)命令或接收主機(jī)的數(shù)據(jù)塊,或向主機(jī)發(fā)送數(shù)據(jù)塊;
④無(wú)線通訊數(shù)據(jù)塊格式如表所示。
Lead為引導(dǎo)字節(jié):Leader=OxFF;
Header為數(shù)據(jù)包的命令字節(jié)由此確定數(shù)據(jù)包的類型,見(jiàn)表1;
Length為數(shù)據(jù)包包含的Length字節(jié)之后的所有字節(jié)的長(zhǎng)度;
Data為數(shù)據(jù)包字節(jié);
Checksum校驗(yàn)字節(jié)。
表1 命令字參數(shù)表
[!--empirenews.page--]
⑤示例:發(fā)送窗口分配的排隊(duì)號(hào)碼:
0xFF 0x34 Ox03 2個(gè)字節(jié) SUM
2字節(jié)分配示意圖
為了實(shí)現(xiàn)多機(jī)通信,所有發(fā)射電路的振蕩頻率和所有接收電路的振蕩頻率都必須一致。為保證正常通信,數(shù)據(jù)傳送方向必須為半雙工傳送,收發(fā)器在發(fā)射時(shí)必須屏蔽自己的接收中斷,發(fā)射結(jié)束后再開(kāi)放。
3 硬件電路設(shè)計(jì)
nRF401是一個(gè)基于ISM頻率為433MHz設(shè)計(jì)的單片UHF無(wú)線收發(fā)一體芯片。該芯片有如下特點(diǎn):采用FSK(frequency shift keying)頻移鍵控調(diào)制方式,具有非常少的外圍元件,直接數(shù)據(jù)輸入輸出,抗干擾能力強(qiáng),特別適合工業(yè)場(chǎng)合;采用DSS+PLL頻率合成技術(shù),頻率穩(wěn)定性極好;無(wú)需曼徹斯特編碼;工作速度最高可達(dá)20 kbps;最大發(fā)射功率達(dá)+10dBm,使用距離最遠(yuǎn)可達(dá)1000m;工作在ISM頻率433MHz和雙信道頻率433.92M Rz/434.33MHz下,使用不需要申請(qǐng)?jiān)S可證。
單片機(jī)與nRF401應(yīng)用連接如圖3所示,在本系統(tǒng)中,為避免相互干擾,無(wú)線收發(fā)部分單獨(dú)做在一塊PCB板上,組成獨(dú)立的無(wú)線收發(fā)模塊。壓控振蕩器(VC0)外接22mH高品質(zhì)因素電感;鎖相環(huán)(PLL)外接典型單端二階濾波器;振蕩源輸入接4MHz晶振;ANT1/ANT2為天線接口,天線設(shè)計(jì)采用PCB差分天線;CS為頻率選擇,通過(guò)撥盤(pán)開(kāi)關(guān)S1選擇,CS=0時(shí)選擇433.92MHz,CS=1時(shí)選擇434.33MHz,無(wú)論何種選擇都要使主從機(jī)頻率一致;PWR UP為節(jié)電控制選擇,由單片機(jī)控制;DOUT為數(shù)據(jù)輸出端口,與單片機(jī)串行口數(shù)據(jù)線RXD連接;DIN為數(shù)據(jù)輸人端口,與單片機(jī)串行口數(shù)據(jù)線TXD連接;TXEN為發(fā)送/接收控制端口,由單片機(jī)控制,TXEN=0時(shí)nRF401接收無(wú)線信息,TXEN=1時(shí)nRF401發(fā)送無(wú)線信息。單片機(jī)與nRF401的電路連接如圖3所示。本系統(tǒng)可編程實(shí)現(xiàn)頻率的選擇和節(jié)電模式的控制,為實(shí)際的應(yīng)用提供了方便。實(shí)驗(yàn)證明,該無(wú)線收發(fā)模塊的性能良好,全可以滿足數(shù)據(jù)傳輸?shù)男枰?/p>
窗口顯示電路采用8塊74LS595串行傳輸行數(shù)據(jù)和1塊74HC154進(jìn)行列選控制16塊8*8LED點(diǎn)陣進(jìn)行顯示,采用SST公司(Silicon Storage Technology)的高速可編程閃存芯片ST28SF040存儲(chǔ)顯示字符庫(kù)。具體電路簡(jiǎn)單在此不再列出。
4 通信軟件設(shè)計(jì)
為了避免同頻干擾的問(wèn)題,系統(tǒng)采用分時(shí)TDMA(Time Division Multiple Access)技術(shù),把系統(tǒng)發(fā)號(hào)主機(jī)與任意一臺(tái)從機(jī)之問(wèn)的通信采用時(shí)分的方式分開(kāi),發(fā)號(hào)主機(jī)通過(guò)掃描的方式與各臺(tái)從機(jī)設(shè)備進(jìn)行單臺(tái)通信,這樣系統(tǒng)中的發(fā)號(hào)主機(jī)與從機(jī)的通信方式就成為點(diǎn)對(duì)點(diǎn)的通信方式。程序采用C51單片機(jī)語(yǔ)言編寫(xiě),其主控程序流程圖如圖4、圖5所示[!--empirenews.page--]
5 系統(tǒng)軟件設(shè)計(jì)
一次完整的排隊(duì)系統(tǒng)運(yùn)作過(guò)程如下:主機(jī)等待著顧客按下取票按鈕,鍵盤(pán)掃描到按下的鍵值后,根據(jù)取票類型生成排隊(duì)號(hào),并且讀出當(dāng)前系統(tǒng)時(shí)間、排隊(duì)情況、業(yè)務(wù)類型等信息,打印成排隊(duì)票。這時(shí),如果某窗口的操作員服務(wù)完一位顧客,按下窗口鍵盤(pán)上的"下一位",這個(gè)信息就會(huì)傳輸給主機(jī),主機(jī)根據(jù)當(dāng)前排隊(duì)隋況和業(yè)務(wù)情況,將排隊(duì)序列上能服務(wù)的最近客戶排隊(duì)號(hào)回應(yīng)給窗口,窗口鍵盤(pán)收到回應(yīng)后,立刻更新鍵盤(pán)上的顯示為要服務(wù)的排隊(duì)號(hào)。同時(shí),主機(jī)還把這個(gè)排隊(duì)號(hào)發(fā)送給部分其他從機(jī):窗口LED顯示屏,讓它也顯示最新的排隊(duì)號(hào);語(yǔ)音播報(bào)從機(jī),讓其播報(bào)該排隊(duì)號(hào),以提醒顧客前來(lái)服務(wù)。發(fā)號(hào)主機(jī)按時(shí)間輪流查詢各從機(jī)狀態(tài),并進(jìn)行控制,其主要處理流程如圖6。
6 結(jié)束語(yǔ)
基于nRF401的無(wú)線排隊(duì)系統(tǒng)具有硬件電路簡(jiǎn)單、成本低廉、編程方便、通信可靠性高的特點(diǎn),改善了以往有線排隊(duì)系統(tǒng)安裝線路復(fù)雜、故障不易排查等問(wèn)題。本文提出的通信協(xié)議能夠在多臺(tái)單片機(jī)問(wèn)安全地傳送數(shù)據(jù),實(shí)現(xiàn)了通信雙方非接觸式的數(shù)據(jù)傳送,也可用于其他遙控、遙測(cè)的單片機(jī)應(yīng)用場(chǎng)合。