一種新型RFID收費(fèi)系統(tǒng)設(shè)計(jì)方案
2.4.2 nRF24L01 硬件接口連接。
如圖5 所示,單片機(jī)通過(guò)模擬SPI 總線時(shí)序和nRF24L01 進(jìn)行通信。其外部中斷管腳IRQ 和單片機(jī)的P3.2(外部中斷0)相連。
圖5 nRF24L01 接口連接示意圖
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ǔ)器。此外,有專用的中斷管腳,支持6 個(gè)中斷源,可向MCU 發(fā)出中斷信號(hào)。
2.5.2 MF RC500 硬件接口連接。
由圖6 所示, MCU 將MF RC500 中的寄存器作為外部RAM進(jìn)行訪問(wèn)。INT 管腳懸空,不使用中斷功能。
圖6 MF RC500 接口連接示意圖
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 總線仲裁功能的實(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ù)將在天線的有效范圍內(nèi)搜索Mifare1 卡,如果有卡存在,將建立通信連接并讀取卡上的卡片類型號(hào)TAGTYPE.防碰撞函數(shù)使MF RC500 在多張Mifare 1 卡選擇其中的一張??ㄟx擇函數(shù)能夠和已知序列號(hào)的卡進(jìn)行通信。認(rèn)證函數(shù)將Mifare 1 卡上的密碼和MF RC500 的EEPROM 中的密鑰進(jìn)行匹配。
只有匹配正確后,才能進(jìn)行對(duì)卡的讀寫操作。發(fā)送停機(jī)指令設(shè)置Mifare 1 卡為HALT MODE.
CAN 函數(shù)用于將有關(guān)數(shù)據(jù)發(fā)送至PC 機(jī)。本次設(shè)計(jì)采用查詢方式以確保數(shù)據(jù)已經(jīng)發(fā)送。通過(guò)查詢狀態(tài)寄存器中的標(biāo)志位TBS、TCS 和TS 即可確認(rèn)是否數(shù)據(jù)發(fā)送完畢。類似的,在無(wú)線函數(shù)中為確保數(shù)據(jù)已經(jīng)發(fā)送,通過(guò)查詢狀態(tài)寄存器中的TX_DS 即可。
圖7 子系統(tǒng)A 軟件流程
圖8 子系統(tǒng)B 軟件流程圖
4 系統(tǒng)測(cè)試
首先,對(duì)RFID 模塊進(jìn)行了測(cè)試。將MIFARE 1卡放入天線有效范圍內(nèi),對(duì)該卡進(jìn)行讀寫操作,并將相關(guān)數(shù)據(jù)顯示在液晶屏上。經(jīng)過(guò)該測(cè)試,RFID 模塊讀寫正常。 隨后,測(cè)試該系統(tǒng)傳輸網(wǎng)絡(luò)的實(shí)時(shí)性,本文以溫度數(shù)據(jù)的無(wú)線傳輸進(jìn)行測(cè)試。測(cè)量溫度的裝置為DS18B20 單線溫度傳感器。將該溫度傳感器連接至子系統(tǒng)B 中,溫度傳感器每隔一秒對(duì)室內(nèi)溫度采樣一次,微控制器讀取溫度數(shù)據(jù)并通過(guò)無(wú)線網(wǎng)絡(luò)發(fā)送給A 子系統(tǒng),A 子系統(tǒng)接收數(shù)據(jù)并通過(guò)CAN 總線發(fā)送至PC 端。
PC 端使用Visual Basic 6.0 編寫上位機(jī)程序,上位機(jī)將溫度數(shù)據(jù)繪制成曲線并寫入文本。溫度曲線如圖8 所示,其中溫度值的精度為1 攝氏度。通過(guò)對(duì)溫度曲線圖和文本數(shù)據(jù)的對(duì)比觀察,發(fā)現(xiàn)溫度數(shù)據(jù)無(wú)異常, 數(shù)據(jù)沒(méi)有出現(xiàn)丟失情況。
圖9 溫度曲線圖
5 結(jié)語(yǔ)
本文利用了CAN 總線取代RS-485 總線,克服了后者存在的缺點(diǎn)。同時(shí)還使用了無(wú)線技術(shù),在減少大量布線工作的同時(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 總線設(shè)計(jì)的RFID 收費(fèi)系統(tǒng)的缺陷,具有較強(qiáng)的使用價(jià)值。
評(píng)論