湖南文理學(xué)院物理與電子科學(xué)學(xué)院 郭育軍 王先春
基于STM32多功能充值消費(fèi)一體機(jī)設(shè)計(jì)
湖南文理學(xué)院物理與電子科學(xué)學(xué)院 郭育軍 王先春
設(shè)計(jì)了一種以STM32微處理器為控制中心,智能IC卡為消息載體,讀卡器RC522為通信媒介的多功能充值消費(fèi)一體機(jī)。系統(tǒng)硬件包括:STM32微處理器最小系統(tǒng)、液晶屏顯示系統(tǒng)、獨(dú)立按鍵、EEPROM存儲(chǔ)器、IC卡讀寫模塊;系統(tǒng)驅(qū)動(dòng)(軟件)包括:液晶顯示、鍵盤服務(wù)、讀寫IC卡、讀寫EEPROM等軟件模塊。經(jīng)過(guò)測(cè)試,充值消費(fèi)一體機(jī)系統(tǒng)可以實(shí)現(xiàn)系統(tǒng)初始化、注冊(cè)、查詢、充值、消費(fèi)、掛失與解掛、公交收費(fèi)功能。
STM32;MF-RC522;射頻IC卡;充值消費(fèi)一體機(jī)
射頻刷卡消費(fèi)系統(tǒng)是一種使用射頻識(shí)別技術(shù)的綠色消費(fèi)系統(tǒng),它能反復(fù)使用、操作簡(jiǎn)單、自動(dòng)化,可以減少收費(fèi)過(guò)程中的管理成本和節(jié)省人力資源,主要用于解決公共場(chǎng)所消費(fèi)收取現(xiàn)金不便和收費(fèi)補(bǔ)錢繁瑣等問(wèn)題。
2.1 系統(tǒng)的硬件組成及工作原理
圖1 系統(tǒng)的硬件組成框圖
系統(tǒng)以微控制器STM32為控制中心,處理整個(gè)系統(tǒng)的命令和數(shù)據(jù)。讀寫器RC522應(yīng)用射頻識(shí)別技術(shù)發(fā)送和接收射頻信號(hào),建立系統(tǒng)與射頻卡通信的橋梁,第二小節(jié)我們將對(duì)RFID技術(shù)進(jìn)行介紹。當(dāng)用戶使用鍵盤對(duì)系統(tǒng)功能進(jìn)行操作時(shí),微處理器會(huì)發(fā)送相應(yīng)命令與數(shù)據(jù)控制讀寫器內(nèi)部發(fā)送器驅(qū)動(dòng)讀寫器天線與射頻卡通信以及內(nèi)部接收器對(duì)射頻信號(hào)進(jìn)行解調(diào)和譯碼,從而對(duì)射頻卡進(jìn)行讀/寫、對(duì)射頻卡內(nèi)值塊進(jìn)行加值和減值等操作。射頻卡本來(lái)是與系統(tǒng)分離的,單獨(dú)使用沒(méi)有任何意義,但當(dāng)射頻卡在系統(tǒng)注冊(cè)后,它會(huì)成為系統(tǒng)用戶的憑證,系統(tǒng)會(huì)把射頻卡的用戶信息(卡號(hào)、用戶號(hào)、消費(fèi)記錄)記錄在外設(shè)EEPROM存儲(chǔ)器,下次使用時(shí),系統(tǒng)就能識(shí)別注冊(cè)過(guò)的射頻卡,只有注冊(cè)過(guò)射頻卡才能對(duì)卡進(jìn)行查詢、充值、消費(fèi)、掛失和解掛功能。為提高系統(tǒng)安全性,系統(tǒng)默認(rèn)有一張管理員卡,管理員卡的信息已經(jīng)寫進(jìn)系統(tǒng)程序,當(dāng)使用注冊(cè)、充值、掛失和解掛、對(duì)系統(tǒng)進(jìn)行系統(tǒng)初始化的系統(tǒng)功能時(shí),要刷管理員卡才能進(jìn)行操作。
2.2 RFID技術(shù)簡(jiǎn)介
射頻識(shí)別技術(shù)RFID是"RADIO FREQUENCY INENTIFICATION"的縮寫,這項(xiàng)技術(shù)的組成分為處理與傳輸數(shù)據(jù)系統(tǒng)、電子標(biāo)簽、讀寫器三部分。處理與傳輸數(shù)據(jù)系統(tǒng)就是對(duì)于標(biāo)簽反射的無(wú)線電波進(jìn)行接收然后對(duì)數(shù)據(jù)進(jìn)行讀取,電子標(biāo)簽存儲(chǔ)著被識(shí)別物體的相關(guān)信息,它鎖存儲(chǔ)的信息就是通過(guò)讀寫器的非接觸方式讀/寫。讀寫器就是利用射頻技術(shù)讀/寫電子標(biāo)簽信息的設(shè)備。讀寫器讀出的標(biāo)簽信息可以通過(guò)計(jì)算機(jī)或微處理器,以及網(wǎng)絡(luò)系統(tǒng)進(jìn)行管理和傳輸。RFID的工作原理如圖2所示。
3.1 微處理器主控模塊
系統(tǒng)選用ST公司的32位基于ARM核心的STM32zet6微處理器,與傳統(tǒng)8051單片機(jī)性能比較,其工作頻率高,執(zhí)行速度更快,內(nèi)部集成11個(gè)定時(shí)器、13個(gè)通信接口(I2C、USART、SPI等)對(duì)完成系統(tǒng)設(shè)計(jì)所需資源綽綽有余。開發(fā)方式既可選擇傳統(tǒng)直接配置寄存器開發(fā),也可選擇庫(kù)函數(shù)開發(fā)。
3.2 讀卡器MF-RC522
MF-RC522 是高度集成的非接觸式(13.56MHz)讀寫卡芯片。此發(fā)送模塊利用調(diào)制和解調(diào)的原理,并將它們完全集成到各種非接觸式通信方法和協(xié)議中(13.56MHz)。MF-RC522的內(nèi)部發(fā)送器部分可驅(qū)動(dòng)讀寫器天線與 ISO 14443A/MIFARE 卡和應(yīng)答機(jī)的通信,無(wú)需其他的電路。接收器部分提供一個(gè)功能強(qiáng)大和高效的解調(diào)和譯碼電路,用來(lái)處理兼容 ISO 14443A/MIFARE的卡和應(yīng)答機(jī)的信號(hào)。
3.2.1 讀卡器MF-RC522的功能
MF-RC522發(fā)送模塊支持具有多種傳輸速率和調(diào)制方法的 ISO 14443A/MIFARE的讀寫器模式。ISO 14443A/MIFARE的讀寫器模式是遵循ISO 14443A/MIFARE規(guī)范的卡通信的常用讀卡器。
3.2.2 微處理器與讀卡器通訊
微處理器要對(duì)讀卡器進(jìn)行控制,必須建立它們之間的通信。首先進(jìn)行硬件電路連接,選用SPI接口使能MF-RC522和微處理器之間的高速串行通信。然后根據(jù)RC522的SPI通信時(shí)序編寫微處理器對(duì)讀卡器讀/寫數(shù)據(jù)的軟件驅(qū)動(dòng)程序。
3.3 射頻卡
3.3.1 射頻卡S50簡(jiǎn)介
S50卡是可以存儲(chǔ)1K位EEPROM的非接觸式IC卡,讀寫距離為10cm以內(nèi)(與讀寫器有關(guān))。介紹如下:(1)S50卡分為16個(gè)扇區(qū),每個(gè)扇區(qū)由4塊組成(塊0、塊1、塊2為數(shù)據(jù)塊,塊3為控制塊),16個(gè)扇區(qū)的64個(gè)塊按絕對(duì)地址編號(hào)為0~63.(2)第0扇區(qū)(絕對(duì)地址0塊)用于存放廠商代碼,已經(jīng)固化,不可更改。(3)每個(gè)扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)塊有兩種應(yīng)用:1)用作一般數(shù)據(jù)保存,可以進(jìn)行讀、寫操作。2)用作數(shù)據(jù)值,可以進(jìn)行初始化值、加值、減值、讀值操作。當(dāng)數(shù)據(jù)塊用作數(shù)據(jù)值時(shí),程序設(shè)計(jì)初始化塊(共16字節(jié))的格式為:4字節(jié)金額 + 4字節(jié)金額取反+ 4字節(jié)金額 + 1字節(jié)塊地址 + 1字節(jié)塊地址取反 + 1字節(jié)塊地址 + 1字節(jié)塊地址取反。(4)每個(gè)扇區(qū)的塊3為控制塊,包括密碼A、存取控制、密碼B。(5)每個(gè)扇區(qū)的密碼和存取控制都是獨(dú)立的,可以根據(jù)實(shí)際需要設(shè)定各自的密碼及存取控制。存取控制為4個(gè)字節(jié),共32位,扇區(qū)中每個(gè)塊(包括數(shù)據(jù)塊和控制塊)的存取條件是有密碼和存取控制共同決定的,在存取控制中每個(gè)塊都有相應(yīng)的三個(gè)控制位,三個(gè)控制為以正和反兩種形式存在于存取控制字節(jié)中,決定該塊的訪問(wèn)權(quán)限(如:進(jìn)行減值操作必須驗(yàn)證KEY A,進(jìn)行加值操作必須驗(yàn)證KEY B,等等)。
3.3.2 讀寫器與射頻卡通訊
讀寫器與射頻卡S50通訊,命令由讀寫器發(fā)出,根據(jù)相應(yīng)區(qū)讀寫條件受數(shù)字控制單元的控制。
3.4 存儲(chǔ)模塊
充值消費(fèi)一體機(jī)系統(tǒng)需存儲(chǔ)用戶卡的信息和消費(fèi)數(shù)據(jù),所以系統(tǒng)需具備數(shù)據(jù)存儲(chǔ)功能。AT24C02是一個(gè)2K位串行CMOS EE-PROM,內(nèi)部含有256個(gè)8位字節(jié),雖然AT24C02存儲(chǔ)空間偏小,但不影響系統(tǒng)功能的實(shí)現(xiàn)。AT24C02有一個(gè)8字節(jié)頁(yè)寫緩沖器,該器件通過(guò)IIC總線接口通信進(jìn)行操作,有一個(gè)寫保護(hù)功能,可進(jìn)行單個(gè)字節(jié)讀寫,使用方便,數(shù)據(jù)存儲(chǔ)安全,不易丟失。
3.5 其他模塊
鍵盤實(shí)現(xiàn)的功能是輸入,系統(tǒng)采用軟件設(shè)計(jì)簡(jiǎn)單和實(shí)時(shí)性好的獨(dú)立式鍵盤。分布"功能切換","功能確認(rèn)","0~9"十個(gè)數(shù)字鍵,以及"輸入確認(rèn)"鍵。用戶可以通過(guò)鍵盤切換和確認(rèn)系統(tǒng)功能,輸入注冊(cè)時(shí)的用戶號(hào)以及充值和消費(fèi)的金額等。顯示模塊,使用3.2寸彩色液晶顯示屏,為用戶提供菜單操作界面和顯示系統(tǒng)當(dāng)前狀態(tài)。
4.1 系統(tǒng)整體功能
圖2 系統(tǒng)整體功能框圖
4.2 主菜單功能切換與確認(rèn)程序設(shè)計(jì)
由4.1可知,系統(tǒng)分為8個(gè)功能,當(dāng)使用系統(tǒng)時(shí),只能從系統(tǒng)中選用一個(gè)功能,此時(shí)就需要一個(gè)主菜單功能的界面程序,可以對(duì)功能進(jìn)行切換和確認(rèn),程序流程圖如圖3所示。
4.3 功能具體實(shí)現(xiàn)程序設(shè)計(jì)
圖3 主菜單功能切換與確認(rèn)程序框圖
在主菜單界面選定并確認(rèn)功能后,進(jìn)入功能函數(shù),用戶根據(jù)液晶顯示屏的提示進(jìn)行操作。由于系統(tǒng)功能過(guò)多,這里只對(duì)系統(tǒng)的查詢、注冊(cè)、充值和消費(fèi)功能進(jìn)行分析。
圖4 查詢功能程序框圖
圖5 注冊(cè)功能程序框圖
圖6 充值功能程序框圖
圖7 消費(fèi)功能程序框圖
4.4 系統(tǒng)人機(jī)交互的數(shù)據(jù)處理
用戶從鍵盤輸入(用戶名、充值和消費(fèi)金額)的是十進(jìn)制數(shù),存儲(chǔ)器AT24C02和射頻卡存儲(chǔ)的數(shù)據(jù)是十六進(jìn)制數(shù)組,當(dāng)系統(tǒng)進(jìn)行人機(jī)交互時(shí),就要對(duì)系統(tǒng)內(nèi)數(shù)據(jù)進(jìn)行處理。所需數(shù)據(jù)轉(zhuǎn)換有:十進(jìn)制整數(shù)轉(zhuǎn)十六進(jìn)制數(shù)組(十進(jìn)制數(shù) 十六進(jìn)制字符串 十六進(jìn)制字節(jié)數(shù)組)和十六進(jìn)制轉(zhuǎn)十進(jìn)制整數(shù)。
系統(tǒng)測(cè)試是檢測(cè)系統(tǒng)實(shí)際功能與預(yù)想要實(shí)現(xiàn)功能是否一致的途徑,通過(guò)觀察測(cè)試結(jié)果,才能判斷程序程序是否無(wú)誤。本次系統(tǒng)開發(fā)過(guò)程中,測(cè)試方法是觀察顯示屏顯示的結(jié)果和使用串口調(diào)試。串口調(diào)試對(duì)單片機(jī)系統(tǒng)開發(fā)很重要,它能把看不見摸不著的單片機(jī)數(shù)據(jù)和外設(shè)數(shù)據(jù)通過(guò)串口在電腦上輸出。下面通過(guò)對(duì)系統(tǒng)注冊(cè)功能進(jìn)行測(cè)試,驗(yàn)證一下系統(tǒng)功能,步驟如下:(1)進(jìn)行串口設(shè)置(115200 8-N-1),將PC與系統(tǒng)進(jìn)行連接。 (2)首先使用系統(tǒng)的系統(tǒng)初始化功能,對(duì)EEPROM存儲(chǔ)器AT2402中所有數(shù)據(jù)置零。(3)使用系統(tǒng)的注冊(cè)功能,注冊(cè)時(shí)使用RFID卡號(hào)30 5E 3B 16的卡片,注冊(cè)用戶名為111,注冊(cè)成功后EEPROM讀出的數(shù)據(jù)如圖8所示,對(duì)射頻卡進(jìn)行查詢,系統(tǒng)實(shí)物顯示屏輸出結(jié)果如圖9所示。
圖8 卡注冊(cè)成功圖
圖9 查詢剛注冊(cè)射頻卡實(shí)物圖
數(shù)據(jù)解釋:EEPROM第0個(gè)字節(jié)01代表的是系統(tǒng)所有注冊(cè)的卡個(gè)數(shù);第1到第4個(gè)字節(jié)是RFID卡的卡號(hào)(30 5E 3B 16);第5個(gè)到第8個(gè)字節(jié)是十六進(jìn)制數(shù)(00 00 00 6F),轉(zhuǎn)換為十進(jìn)制數(shù)是111;第9個(gè)字節(jié)是解掛和掛失的標(biāo)志位,當(dāng)數(shù)據(jù)為0是解掛狀態(tài),卡可以正常使用,當(dāng)數(shù)據(jù)為1是掛失狀態(tài),只能進(jìn)行查詢,不能使用其他功能;第10個(gè)字節(jié)是判斷當(dāng)前卡是否有效的標(biāo)志位,1為有效卡,0為無(wú)效卡。
雖然系統(tǒng)功能基本完成,但程序設(shè)計(jì)一定會(huì)存在不足,每一個(gè)不注意的細(xì)節(jié)都會(huì)產(chǎn)生bug,影響系統(tǒng)穩(wěn)定性。IC卡消費(fèi)系統(tǒng)存在問(wèn)題還有以下幾個(gè)方面:(1)由于缺乏IC的讀寫設(shè)計(jì)經(jīng)驗(yàn),對(duì)IC卡操作的理解比較淺,本次設(shè)計(jì)并未對(duì)IC卡消費(fèi)系統(tǒng)進(jìn)行加密設(shè)計(jì),而實(shí)用系統(tǒng)必須具備加密,才能保證充值和消費(fèi)的安全性。(2)系統(tǒng)刷卡反應(yīng)稍慢,刷卡速度有待優(yōu)化,需刪減一些重復(fù)或無(wú)用的程序操作。
[1]MF-RC522非接觸式讀寫卡芯片中文簡(jiǎn)介[J]。廣州周立功單片機(jī)發(fā)展有限公司,2007,3.
[2]康華光。電子信息技術(shù)基礎(chǔ)模擬部分(第五版)[N]。北京:高等教育出版社,2006.1
[3]康華光。電子信息技術(shù)基礎(chǔ)數(shù)字部分(第五版)[N]。北京:高等教育出版社,2006.1
[4]謝維成,楊加國(guó)。單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)(第2版)[N]。北京:清華大學(xué)出版社,2009,7.
[5]劉火亮,楊森。STM32庫(kù)開發(fā)實(shí)戰(zhàn)指南[N]。北京:機(jī)械工業(yè)出版社,2013,5.
[6]MF-RC522 Contactless Reader IC[J]。 Philips Semiconductors, 2007,1-2.
[7]李峰,謝中科。C語(yǔ)言程序設(shè)計(jì)[N]。上海:復(fù)旦大學(xué)出版社,2012,7.
[8][美]Stephen Prata著,云巔工作室譯。C Primer Plus(第五版)中文版[N]。北京:人民郵電出版社,2005,2.
王先春。
國(guó)家自然科學(xué)基金青年項(xiàng)目(41304098);湖南省光電信息技術(shù)校企合作創(chuàng)新創(chuàng)業(yè)教育基地資助項(xiàng)目(湘教通〔2016〕394號(hào));湖南文理學(xué)院教研項(xiàng)目 (JGYB1314)。