物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

作者:簡(jiǎn)獻(xiàn)忠 嚴(yán)軍 范建鵬 侯一欣
來(lái)源:計(jì)算機(jī)系統(tǒng)應(yīng)用
日期:2013-12-26 10:47:02
摘要:RFID(Radio Frequency IDentification)技術(shù),即射頻識(shí)別技術(shù),是一種通信技術(shù),目前廣泛應(yīng)用于各種收費(fèi)場(chǎng)合,例如:公共交通收費(fèi)系統(tǒng),停車(chē)場(chǎng)收費(fèi)系統(tǒng)等等。目前使用RFID 技術(shù)的系統(tǒng)通常使用RS-485 和PC 端進(jìn)行數(shù)據(jù)交互,但是RS-485 使用單主節(jié)點(diǎn),采用輪詢(xún)方式,因此存在實(shí)時(shí)性較低和通訊效率低的問(wèn)題。
關(guān)鍵詞:CAN2.4GRFID

  1 引言

  RFID(Radio Frequency IDentification)技術(shù),即射頻識(shí)別技術(shù),是一種通信技術(shù),目前廣泛應(yīng)用于各種收費(fèi)場(chǎng)合,例如:公共交通收費(fèi)系統(tǒng),停車(chē)場(chǎng)收費(fèi)系統(tǒng)等等。目前使用RFID 技術(shù)的系統(tǒng)通常使用RS-485 和PC 端進(jìn)行數(shù)據(jù)交互,但是RS-485 使用單主節(jié)點(diǎn),采用輪詢(xún)方式,因此存在實(shí)時(shí)性較低和通訊效率低的問(wèn)題。

  隨著計(jì)算機(jī)科學(xué)水平的不斷飛躍和工業(yè)發(fā)展的需要,工業(yè)控制系統(tǒng)經(jīng)歷了基地式儀表控制系統(tǒng)、集中式數(shù)字控制系統(tǒng)、集散控制系統(tǒng)到現(xiàn)在廣泛使用的現(xiàn)場(chǎng)總線(xiàn)控制系統(tǒng)的轉(zhuǎn)變。CAN(Controller Area Net)總線(xiàn)是一種基于串行通信網(wǎng)絡(luò)的現(xiàn)場(chǎng)總線(xiàn)。CAN 總線(xiàn)采用多主工作方式,網(wǎng)絡(luò)上的任意節(jié)點(diǎn)可以在任意時(shí)刻向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息。同時(shí),CAN 總線(xiàn)采用非破壞性仲裁技術(shù),當(dāng)兩個(gè)或者更多的節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送數(shù)據(jù),優(yōu)先級(jí)低的節(jié)點(diǎn)將停止發(fā)送,直到優(yōu)先級(jí)高的節(jié)點(diǎn)發(fā)送完數(shù)據(jù)后再發(fā)送,這樣有效地避免了總線(xiàn)競(jìng)爭(zhēng)。CAN 通信距離最遠(yuǎn)可達(dá)10km/5kbps,通信速率最高可大1Mbps.CAN 的每幀數(shù)據(jù)都有CRC校驗(yàn)或者其它檢測(cè)方式,保證了數(shù)據(jù)通信的可靠性。

  當(dāng)一個(gè)CAN 節(jié)點(diǎn)發(fā)生嚴(yán)重錯(cuò)誤時(shí),該節(jié)點(diǎn)會(huì)自動(dòng)關(guān)閉,從而不影響其它節(jié)點(diǎn)的正常工作。因此,CAN 總線(xiàn)具有可靠性強(qiáng),實(shí)時(shí)性高和效率高等優(yōu)勢(shì),完全能夠取代RS 485 總線(xiàn)。

  考慮到在實(shí)際應(yīng)用環(huán)境中,為了減少大量的布線(xiàn)工作,使用2.4G 無(wú)線(xiàn)網(wǎng)絡(luò)作為數(shù)據(jù)從RFID 到CAN總線(xiàn)之間傳輸?shù)闹修D(zhuǎn)站。無(wú)線(xiàn)技術(shù)具有成本低、靈活性高、可靠性高和安裝時(shí)間短等特點(diǎn)。本次設(shè)計(jì)使用選用nRF24L01 組建無(wú)線(xiàn)通信網(wǎng)絡(luò),該芯片支持多點(diǎn)通信,在接受模式下可以接收6 路不同通道的數(shù)據(jù)。

  也就是無(wú)線(xiàn)網(wǎng)絡(luò)的接收端可以接收6 個(gè)不同發(fā)送端的數(shù)據(jù),發(fā)送端的數(shù)據(jù)是通過(guò)RFID 模塊獲得。

  基于以上的討論,本文將給出一種基于CAN 總線(xiàn)和2.4G 無(wú)線(xiàn)網(wǎng)絡(luò)的新型RFID 收費(fèi)系統(tǒng)。

  2 硬件系統(tǒng)設(shè)計(jì)

  2.1 系統(tǒng)拓?fù)浣Y(jié)構(gòu)和系統(tǒng)組成

  2.1.1 系統(tǒng)拓?fù)浣Y(jié)構(gòu)。

  如圖1 所示,RFID 設(shè)備的相關(guān)數(shù)據(jù)將通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)傳送至CAN 收發(fā)器,后者再將數(shù)據(jù)通過(guò)CAN 總線(xiàn)傳送至PC 機(jī),PC 機(jī)采用帶有CAN 接口的PCI-E 擴(kuò)展卡。此外,無(wú)線(xiàn)通訊芯片nRF24L01 在接受模式下可以接收6 路不同通道的數(shù)據(jù),以此來(lái)實(shí)現(xiàn)一個(gè)CAN節(jié)點(diǎn)最多控制6 個(gè)RFID 終端設(shè)備的數(shù)據(jù)傳送。在6個(gè)RFID 收費(fèi)終端不能滿(mǎn)足需求的情況下,可以添加更多的節(jié)點(diǎn),所有節(jié)點(diǎn)掛載在CAN 總線(xiàn)上,通過(guò)CAN總線(xiàn),每個(gè)節(jié)點(diǎn)將數(shù)據(jù)傳送至PC 端。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  2.1.2 系統(tǒng)組成。

  本系統(tǒng)(CAN 節(jié)點(diǎn))有兩個(gè)子系統(tǒng)組成。B 子系統(tǒng)由單片機(jī)、RFID 模塊、無(wú)線(xiàn)模塊、看門(mén)狗、液晶屏、時(shí)鐘模塊、按鍵和EEPROM 組成。微控制器(MCU)控制RFID 模塊對(duì)Mifare 1 卡進(jìn)行讀寫(xiě)操作,無(wú)線(xiàn)模塊將有關(guān)的數(shù)據(jù)發(fā)送給A 子系統(tǒng)。A 子系統(tǒng)由單片機(jī)、無(wú)線(xiàn)模塊、看門(mén)狗和CAN 模塊組成。MCU 將經(jīng)由無(wú)線(xiàn)模塊接收到的數(shù)據(jù)通過(guò)CAN 模塊發(fā)送至PC 端。由于一個(gè)節(jié)點(diǎn)最多可以控制6 個(gè)RFID 設(shè)備終端,因此在一個(gè)完整的系統(tǒng)里,A 子系統(tǒng)只有1 個(gè),而B(niǎo) 子系統(tǒng)最多可以有6 個(gè)。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  2.2 微控制器

  微控制器選用STC89LE58RD+,它具有4 個(gè)8 位并行I/O 端口P0~P3,1 個(gè)4 位并行端口P4,32KB FLASHROM,1280 字節(jié)RAM,3 個(gè)定時(shí)器,8 個(gè)中斷源和4個(gè)中斷優(yōu)先級(jí)的中斷系統(tǒng)。其性能完全滿(mǎn)足設(shè)計(jì)所需。

  2.3 CAN 模塊

  CAN 總線(xiàn)的硬件實(shí)現(xiàn)選用飛利浦公司的SJA1000和PCA82C250.

  2.3.1 SJA1000 芯片介紹。

  SJA1000 是一個(gè)獨(dú)立的 CAN 控制器。它支持PeliCAN 模式擴(kuò)展功能(采用CAN2.0B 協(xié)議),具有11 位或 29 位標(biāo)識(shí)符,64 字節(jié)的接收FIFO,具有仲裁機(jī)制和強(qiáng)大的檢錯(cuò)能力等。

  2.3.2 PCA82C250 芯片介紹。

  PCA82C250 是CAN 總線(xiàn)收發(fā)器,它主要是為汽車(chē)中高速通訊(高達(dá) 1Mbps)應(yīng)用而設(shè)計(jì)。它可以抗寬范圍的工模干擾和電磁干擾(EMI),降低射頻干擾(RFI),具有熱保護(hù)功能。最多可以連接110 個(gè)節(jié)點(diǎn)。

  2.3.3 硬件接口連接。

  如圖4 所示,P1 口作為復(fù)用的地址/數(shù)據(jù)總線(xiàn)連接SJA1000 的AD 口,P2.0 和SJA1000 的片選段CS 相連,使得SJA1000 作為單片機(jī)外圍存儲(chǔ)器映射的I/O器件。此外,SJA1000 的RX0、TX0 和PCA82C250的RXD、TXD 相連。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  2.4 無(wú)線(xiàn)模塊

  2.4.1 nRF24L01 芯片介紹。

  無(wú)線(xiàn)芯片選用nRF24L01.它是2.4GHz 無(wú)線(xiàn)射頻收發(fā)芯片,傳送速率高達(dá)2Mbps,支持125 個(gè)可選工作頻率,具有地址和CRC 校驗(yàn)功能,提供SPI 接口。

  有專(zhuān)用的中斷管腳,支持3 個(gè)中斷源,可向MCU 發(fā)出中斷信號(hào)。具有自動(dòng)應(yīng)答功能,在確認(rèn)收到數(shù)據(jù)后記錄地址,并以此地址為目標(biāo)地址發(fā)送應(yīng)答信號(hào)。支持ShockBurstTM 模式,在此模式下,nRF24L01 可以與低速M(fèi)CU 相連。nRF24L01 在接收模式下可以接收6 路不同通道的數(shù)據(jù)。

  2.4.2 nRF24L01 硬件接口連接。

  如圖5 所示,單片機(jī)通過(guò)模擬SPI 總線(xiàn)時(shí)序和nRF24L01 進(jìn)行通信。其外部中斷管腳IRQ 和單片機(jī)的P3.2(外部中斷0)相連。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  2.5 RFID 模塊

  2.5.1 MF RC500 芯片介紹。

  RFID 模塊選用飛利浦公司的MF RC500,它是目前廣泛使用的RFID 芯片之一。MF RC500 支持ISO14443A協(xié)議,支持MIFARE 雙接口卡,內(nèi)部有高集成度模擬電路用于應(yīng)答卡的解調(diào)和解碼,具有64 字節(jié)收發(fā)FIFO 緩沖區(qū)和非易失性密鑰存儲(chǔ)器。此外,有專(zhuān)用的中斷管腳,支持6 個(gè)中斷源,可向MCU 發(fā)出中斷信號(hào)。

  2.5.2 MF RC500 硬件接口連接。

  由圖6 所示, MCU 將MF RC500 中的寄存器作為外部RAM進(jìn)行訪(fǎng)問(wèn)。INT 管腳懸空,不使用中斷功能。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  3 軟件系統(tǒng)設(shè)計(jì)

  在初始化單片機(jī)程序中,子系統(tǒng)A 外部中斷設(shè)置為低電平觸發(fā),子系統(tǒng)A 的中斷信號(hào)源由nRF24L01提供,當(dāng)nRF24L01 收到數(shù)據(jù)后產(chǎn)生中斷信號(hào),通知MCU 來(lái)讀取數(shù)據(jù)。子系統(tǒng)B 不使用中斷功能。

  在初始化nRF24L01 程序中,子系統(tǒng)B 配置為發(fā)送模式,使用16 位CRC 校驗(yàn)。使用自動(dòng)應(yīng)答功能,數(shù)據(jù)通道0 被設(shè)置為接收應(yīng)答信號(hào),其數(shù)據(jù)通道0 的接收地址必須與發(fā)送端的地址相等,以此來(lái)保證能正確的收到應(yīng)答信號(hào)。一個(gè)系統(tǒng)最多可以有六個(gè)子系統(tǒng)A 組成,這6 個(gè)子系統(tǒng)的發(fā)送地址不能重復(fù)。子系統(tǒng)A 配置為接收模式,使用16 位CRC 校驗(yàn),最多接收6 個(gè)通道的數(shù)據(jù)。這6 個(gè)接收地址和各子系統(tǒng)B 中的發(fā)送地址相等。

  在初試化SJA1000 中,使用PliCAN 模式,波特率125Kbps,禁止接受和發(fā)送中斷;輸出控制寄存器配置如下:正常模式,TX 下拉,輸出控制極性。此外,需正確配置驗(yàn)收代碼寄存器和驗(yàn)收屏蔽寄存器,此配置用于CAN 總線(xiàn)仲裁功能的實(shí)現(xiàn)。

  在初始化MF RC500 中,其主要設(shè)置如下:TX1和TX2 的輸出配置為13.56MHz 能量載波;解碼器的輸入源為內(nèi)部解調(diào)器;使用Q 時(shí)鐘作為接收器時(shí)鐘;禁止發(fā)送和接收中斷;設(shè)置RxThreshold 寄存器值為0xFF,BitPhase 寄存器值為0xAD 等。

  復(fù)位請(qǐng)求函數(shù)將在天線(xiàn)的有效范圍內(nèi)搜索Mifare1 卡,如果有卡存在,將建立通信連接并讀取卡上的卡片類(lèi)型號(hào)TAGTYPE.防碰撞函數(shù)使MF RC500 在多張Mifare 1 卡選擇其中的一張。卡選擇函數(shù)能夠和已知序列號(hào)的卡進(jìn)行通信。認(rèn)證函數(shù)將Mifare 1 卡上的密碼和MF RC500 的EEPROM 中的密鑰進(jìn)行匹配。

  只有匹配正確后,才能進(jìn)行對(duì)卡的讀寫(xiě)操作。發(fā)送停機(jī)指令設(shè)置Mifare 1 卡為HALT MODE.

  CAN 函數(shù)用于將有關(guān)數(shù)據(jù)發(fā)送至PC 機(jī)。本次設(shè)計(jì)采用查詢(xún)方式以確保數(shù)據(jù)已經(jīng)發(fā)送。通過(guò)查詢(xún)狀態(tài)寄存器中的標(biāo)志位TBS、TCS 和TS 即可確認(rèn)是否數(shù)據(jù)發(fā)送完畢。類(lèi)似的,在無(wú)線(xiàn)函數(shù)中為確保數(shù)據(jù)已經(jīng)發(fā)送,通過(guò)查詢(xún)狀態(tài)寄存器中的TX_DS 即可。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  4 系統(tǒng)測(cè)試

  首先,對(duì)RFID 模塊進(jìn)行了測(cè)試。將MIFARE 1卡放入天線(xiàn)有效范圍內(nèi),對(duì)該卡進(jìn)行讀寫(xiě)操作,并將相關(guān)數(shù)據(jù)顯示在液晶屏上。經(jīng)過(guò)該測(cè)試,RFID 模塊讀寫(xiě)正常。 隨后,測(cè)試該系統(tǒng)傳輸網(wǎng)絡(luò)的實(shí)時(shí)性,本文以溫度數(shù)據(jù)的無(wú)線(xiàn)傳輸進(jìn)行測(cè)試。測(cè)量溫度的裝置為DS18B20 單線(xiàn)溫度傳感器。將該溫度傳感器連接至子系統(tǒng)B 中,溫度傳感器每隔一秒對(duì)室內(nèi)溫度采樣一次,微控制器讀取溫度數(shù)據(jù)并通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)發(fā)送給A 子系統(tǒng),A 子系統(tǒng)接收數(shù)據(jù)并通過(guò)CAN 總線(xiàn)發(fā)送至PC 端。

  PC 端使用Visual Basic 6.0 編寫(xiě)上位機(jī)程序,上位機(jī)將溫度數(shù)據(jù)繪制成曲線(xiàn)并寫(xiě)入文本。溫度曲線(xiàn)如圖8 所示,其中溫度值的精度為1 攝氏度。通過(guò)對(duì)溫度曲線(xiàn)圖和文本數(shù)據(jù)的對(duì)比觀察,發(fā)現(xiàn)溫度數(shù)據(jù)無(wú)異常, 數(shù)據(jù)沒(méi)有出現(xiàn)丟失情況。

基于CAN和2.4G的RFID收費(fèi)系統(tǒng)

  5 結(jié)語(yǔ)

  本文利用了CAN 總線(xiàn)取代RS-485 總線(xiàn),克服了后者存在的缺點(diǎn)。同時(shí)還使用了無(wú)線(xiàn)技術(shù),在減少大量布線(xiàn)工作的同時(shí),充分利用了nRF24L01 多點(diǎn)通訊的功能。在系統(tǒng)搭建完成后,筆者對(duì)系統(tǒng)進(jìn)行了長(zhǎng)時(shí)間測(cè)試。測(cè)試結(jié)果表明:數(shù)據(jù)傳輸穩(wěn)定,可靠,實(shí)時(shí)性高,克服了傳統(tǒng)基于RS485 總線(xiàn)設(shè)計(jì)的RFID 收費(fèi)系統(tǒng)的缺陷,具有較強(qiáng)的使用價(jià)值。