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