馬蓉
摘要:鑒于“RFID應用技術”課程在高職教學中遇到的困難,專門為該課程研究設計了校園一卡通系統(tǒng)。本文主要闡述了如何將校園一卡通系統(tǒng)融入課程教學,詳細說明了該系統(tǒng)框架的設計過程。最終目標是利用該框架,進一步指導學生著手開發(fā)一系列的RFID應用,使學生從一個僅了解RFID通訊原理的學習者轉換成為一個RFID應用的開發(fā)者。
關鍵詞: 物聯(lián)網;RFID技術;Arduino
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2018)30-0096-02
RFID技術是物聯(lián)網的核心技術之一,因此,“RFID應用技術”課程是物聯(lián)網專業(yè)的核心課程之一。課程的最終目標是使學生對RFID技術有清晰的了解,并能夠進行實際運用。而市面上多數(shù)的RFID實訓教學設備所提供的開發(fā)環(huán)境大多建立在業(yè)務層之上,而接觸不到底層的通訊過程,整個課程的內容與信息系統(tǒng)開發(fā)無異。
鑒于這種情況,我們本著簡潔、復用的設計思想,專門為這門課程設計開發(fā)了一套校園一卡通系統(tǒng)的開發(fā)框架。我們要求學生在完成校園一卡通系統(tǒng)的學習后能夠獨立完成另外一項RFID應用系統(tǒng)的開發(fā)。最終使學生從一個僅了解RFID通訊原理的學習者轉換成為一個RFID應用的開發(fā)者。
1校園一卡通系統(tǒng)設計的總體思路
在實際的一卡通系統(tǒng)的設計過程中會出現(xiàn)許多商業(yè)化的設施:硬件平臺、卡片與閱讀器的結構、通訊協(xié)議、開源(第三方)庫源碼等,同時也會涉及一些設計模式等不易理解的內容。鑒于高職學生的理論基礎有限,我們設計了一個能夠滿足各種RFID應用場景的開發(fā)框架(包括簡單的數(shù)據表示及使用方法),并完成了一套校園消費一卡通全部功能作為示例程序,以支撐課程內容。該框架選取Arduino與MFRC500系列作為硬件平臺,選取C/C++作為開發(fā)語言,盡可能的少引入其他商業(yè)(或開源)設施,從而將注意力集中在如何應用RFID技術本身。學生只需有基本的C語言開發(fā)基礎即可看懂示例程序,后期參考該系統(tǒng)的設計、利用該系統(tǒng)提供的函數(shù)庫資源,自己就可以完成一個可實際應用的RFID項目。
2 校園一卡通系統(tǒng)框架的整體設計
2.1硬件設計
系統(tǒng)的硬件設施包括4個部分:Arduino UNO、MFRC522、Joystick、卡片。Arduino UNO是Arduino開發(fā)板家族成員之一,Arduino本身即為一單片機系統(tǒng)以及開發(fā)IDE的統(tǒng)稱,可以認為一卡通系統(tǒng)是存放并且運行在這個單片機系統(tǒng)中的。MFRC522是一塊連接在Arduino UNO開發(fā)板上的芯片,它作為 “閱讀器”的角色。JoyStick是一個簡易的控制搖桿,它能夠測量四個方向的輸入并將其以模擬信號的形式傳送給Arduino UNO。在本系統(tǒng)中,JoyStick扮演了用戶輸入控制器的角色,一卡通系統(tǒng)的所有功能選項都以上、下、左、右四項菜單方式提供給用戶使用,比使用傳統(tǒng)的鍵盤控制更加直觀,有良好的用戶體驗??ㄆ窍到y(tǒng)操作的對象,系統(tǒng)所使用的卡片為當前應用最為廣泛的Mifare One系列卡片。
2.2軟件設計
系統(tǒng)的軟件設施為一套函數(shù)庫文件以及工程文件,工程的編譯工作須由Arduino IDE完成,編譯完成后同樣由Arduino IDE將二進制文件上傳至Arduino UNO開發(fā)板中。上傳完畢后,項目即開始運行,直到UNO斷電停止運行。在運行的過程中,一卡通系統(tǒng)將一直提供服務,接收用戶的控制指令并做出響應。系統(tǒng)的輸出是以串口信息的方式呈現(xiàn),通過觀察Arduino IDE提供的串口來獲取系統(tǒng)響應。
2.3功能介紹
一卡通系統(tǒng)具有基本卡片的管理功能,即開卡與銷毀卡操作,除此之外還具備充值、消費、查詢功能。其中,開卡可以理解為:將一張新的Mifare One卡片納入本系統(tǒng)進行管理,此卡片將用于本系統(tǒng),且僅用于本系統(tǒng)。銷毀卡的功能則與開卡相反,即從本系統(tǒng)中刪除本卡片的所有信息,卡片今后還可以使用于其他系統(tǒng)。既然系統(tǒng)具有記錄卡片信息的功能,所以還應該具有一些列管理數(shù)據的功能,如查詢已有數(shù)據、清除數(shù)據、統(tǒng)計等等。
總結校園一卡通系統(tǒng)應該具有的功能如表1所示:
系統(tǒng)運行后,首先顯示主功能菜單,每一項主菜單下都有一個二級菜單。所有的功能菜單將以4項為一組的方式顯示,分別對應JoyStick的上下左右操作,如圖1所示。
撥動JoyStick搖桿可以選擇二級功能。每一個二級功能菜單都設置down操作(向下)為返回一級菜單。
3 校園一卡通系統(tǒng)開發(fā)框架的設計與實現(xiàn)
對于系統(tǒng)開發(fā)框架的設計我們有兩個設計原則:
第一,系統(tǒng)必須具有非常強的復用性以滿足不同的RFID應用場景。也就是說這套框架不是僅僅為了校園一卡通這一種應用場景來設計,還應該可以滿足公交卡系統(tǒng)、地鐵計費卡系統(tǒng)、門禁系統(tǒng)等不同場景的需要。因此,就要求系統(tǒng)中的各個模塊具有清晰的接口,盡可能全面的功能,以及簡明易用的整合方法以提高整個框架的復用性。
第二,系統(tǒng)必須較少的引入其他商業(yè)設施,以方便教學。其中Mifare卡片、MFRC522閱讀器,這是RFID不可缺少的設施,除此之外,我們在希望構建系統(tǒng)時盡量少的引入其他的內容,從而將核心放在RFID技術本身。所以,系統(tǒng)框架中的控制主機的功能,例如數(shù)據存儲,僅考慮在Arduino UNO上完成,同時,用戶控制也僅考慮使用JoyStick的四個方向作為按鍵,從而完全脫離對開發(fā)端PC機的依賴,PC機僅僅起到一個串口輸出監(jiān)視器的作用。
3.1數(shù)據管理功能的實現(xiàn)
在Storage.h中我們將實現(xiàn)對數(shù)據存儲的所有操作,通過定義類:STORAGE。我們設想的STORAGE類應該具有這樣的特性:
1)它負責一切保存關于Data的數(shù)據到EEPROM中;
2)為了簡明、復用,所有函數(shù)盡可能少的傳遞參數(shù)。所以我們設置成員:
unsigned char ptr;
Data& data;
ptr的作用看作一個指向EEPROM記錄塊首的指針,即ptr * 10總是指向index塊所在的位置,這樣,由于EEPROM中所有記錄塊的結構相同,在訪問特定的記錄塊內地址時,可以采用ptr * 10 + 塊內偏移量這樣的固定公式來完成。index與ptr之間始終保持著index = ptr + 1的數(shù)學關系。
data作為對Data類的引用,將要處理的數(shù)據傳給操作者STORAGE類。
3.2金額處理
由于在RFID類中,我們沒有實現(xiàn)ISO/IEC 14443中的Increment與Decrement這兩種操作,所以我們不得不將金額信息存放在普通的數(shù)據塊中。在數(shù)據塊中,數(shù)據被逐字節(jié)識別,這對消費與充值操作這樣加減運算造成了一定的麻煩,我們必須實現(xiàn)字符到數(shù)值的轉換。也就是首先把來自PC機串口監(jiān)視器輸入的字符串轉換為數(shù)值,然后把來自卡片的字節(jié)數(shù)據轉換為數(shù)值,最后把經過加減運算的數(shù)值轉換回字節(jié)數(shù)據發(fā)送給卡片。
在Money類中,我們通過三個函數(shù)來完成這樣的轉換。有了這些技術上的準備,我們可以著手設計MONEY類了,其中cardBuffer[]用于保存卡片數(shù)值塊的數(shù)據,只保留其前4字節(jié),serialBuffer[]用于保存串口監(jiān)視器輸入的字符串,而balance則作為真正做加減運算的金額數(shù)值。
3.3菜單的設計與實現(xiàn)
對于菜單的設計,通過校園一卡通管理系統(tǒng)的展示可以看出,所有的界面最多顯示4個功能,分別對應控制搖桿的4個方向。我們希望系統(tǒng)能有統(tǒng)一的界面,所以我們將所有的界面用長度為40個字符的“*”裝飾在界面的最上與最下,其中最上行中要在中央位置放置功能名的大寫英文。我們創(chuàng)建CreateUI類,它的功能分別為打印最上行裝飾、打印最下行裝飾、打印其中的菜單這三項。
3.4用戶交互功能的實現(xiàn)
系統(tǒng)中,JoyStick僅僅是在2個模擬管腳給Arduino一個信號,這遠遠不夠。所以我們專門定義一個類:OPTION,來對這兩個模擬管腳適當?shù)奶幚怼_@個類必須具有以下特性:
1) 能夠得知JoyStick輸入值所對應的方向;
2)能夠將用戶輸入過的值保存下來,提供給系統(tǒng)使用;
3)能夠使系統(tǒng)需要用戶輸入時停下來等待用戶搖動JoyStick。
4 結束語
通過設計開發(fā)校園一卡通系統(tǒng)的系統(tǒng)框架,進一步提高了“RFID應用技術”課程的教學效果。利用這個框架,我們可以指導學生著手開發(fā)一系列的RFID應用,包括公交卡系統(tǒng)、地鐵卡系統(tǒng)、門禁系統(tǒng)等等。最終使大部分學生從一個僅了解RFID通訊原理的學習者轉換成為一個RFID應用的開發(fā)者。
參考文獻:
[1] 陳呂州.Arduino程序設計基礎[M].北京:北京航空航天大學出版社,2015.
[2] 貝毅君.RFID技術在物聯(lián)網中的應用[M].北京:人民郵電出版社,2013.
【通聯(lián)編輯:光文玲】