国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種RFID應(yīng)用開發(fā)課程實(shí)踐教學(xué)項(xiàng)目的設(shè)計(jì)

2016-12-15 19:00:13韓少男
電腦知識(shí)與技術(shù) 2016年27期
關(guān)鍵詞:實(shí)踐教學(xué)

韓少男

摘要:針對(duì)計(jì)算機(jī)物聯(lián)網(wǎng)專業(yè)RFID應(yīng)用開發(fā)課程實(shí)驗(yàn)內(nèi)容涉及大篇幅電子技術(shù)、多數(shù)實(shí)驗(yàn)設(shè)備僅能提供驗(yàn)證性實(shí)驗(yàn)的現(xiàn)狀,本文提出了一種RFID實(shí)踐教學(xué)的簡(jiǎn)易開發(fā)框架用于指導(dǎo)學(xué)生進(jìn)行系統(tǒng)開發(fā)及課程設(shè)計(jì),詳細(xì)介紹了開發(fā)框架的實(shí)現(xiàn)及使用方法,并討論了針對(duì)計(jì)算機(jī)專業(yè)學(xué)生設(shè)計(jì)RFID實(shí)踐教學(xué)項(xiàng)目的思路。

關(guān)鍵詞:RFID應(yīng)用開發(fā);Arduino;實(shí)踐教學(xué)

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)27-0094-03

射頻識(shí)別技術(shù)是計(jì)算機(jī)科學(xué)物聯(lián)網(wǎng)專業(yè)的核心課程之一,教學(xué)內(nèi)容深入、細(xì)節(jié)具體,往往需要兩門以上的配套課程才能使學(xué)生掌握。而在課程的實(shí)驗(yàn)及課程設(shè)計(jì)部分,相當(dāng)?shù)钠婕半娮訉W(xué)科的內(nèi)容,使得沒有前置知識(shí)的學(xué)生難以把握,加之市場(chǎng)上提供的RFID相關(guān)的實(shí)驗(yàn)設(shè)備都比較封閉,大多僅能完成驗(yàn)證性實(shí)驗(yàn),學(xué)生無法順利開展課程項(xiàng)目設(shè)計(jì)[1-2]。

為了滿足實(shí)踐教學(xué),我們使用Arduino UNO作為開發(fā)平臺(tái)、MFRC522作為閱讀器,一個(gè)雙軸按鍵搖桿JoyStick作為用戶交互控制,實(shí)現(xiàn)了一套用于進(jìn)行RFID應(yīng)用開發(fā)課程設(shè)計(jì)的框架,以資源庫(kù)的形式提供給學(xué)生,并在其上完成了一個(gè)校園一卡通系統(tǒng)業(yè)務(wù)的代碼例程,用于支撐、指導(dǎo)學(xué)生完成課程項(xiàng)目開發(fā),例如公交卡系統(tǒng)、門禁系統(tǒng)等。這套硬件平臺(tái)及庫(kù)資源可以以一門單獨(dú)實(shí)驗(yàn)課程開設(shè),約48~54學(xué)時(shí),或以應(yīng)用技術(shù)課程的綜合實(shí)驗(yàn)出現(xiàn)??蚣艿娜吭创a及配套的實(shí)驗(yàn)指導(dǎo)、文獻(xiàn)都分享至GitHub:https://github.com/sketchpink/RFID.git。

1 設(shè)計(jì)思路

1.1 設(shè)計(jì)原則

本課程項(xiàng)目開發(fā)框架必須具有較強(qiáng)的復(fù)用性以滿足不同的RFID應(yīng)用場(chǎng)景。它應(yīng)該可以滿足典型的校園一卡通系統(tǒng)、公交卡系統(tǒng)、地鐵計(jì)費(fèi)卡系統(tǒng)、門禁系統(tǒng)等不同場(chǎng)景的需要。所以,要求系統(tǒng)中的各個(gè)模塊具有清晰的接口,以及簡(jiǎn)明易用的整合方法以提高整個(gè)框架的復(fù)用性。

開發(fā)框架必須較少的引入其他商業(yè)設(shè)施,以方便教學(xué)。我們?cè)谙M麡?gòu)建應(yīng)用系統(tǒng)時(shí)盡量少的引入其他商業(yè)化的軟硬件,設(shè)計(jì)一個(gè)RFID應(yīng)用系統(tǒng)“最小集”,從而將教學(xué)核心放在RFID技術(shù)本身。所以,開發(fā)框架中的控制主機(jī)的功能,例如數(shù)據(jù)存儲(chǔ),僅考慮在Arduino UNO的1K 大小的EEPROM上實(shí)現(xiàn),同時(shí),用戶控制也僅考慮使用JoyStick搖桿的四個(gè)方向作為輸入,從而完全脫離對(duì)開發(fā)端PC機(jī)上其他軟硬件的依賴。也就是說,我們希望應(yīng)用系統(tǒng)可以在接通5V電源的情況下即開始正常工作,PC機(jī)僅僅起到一個(gè)串口監(jiān)視器的作用。

1.2 課程開發(fā)環(huán)境

Arduino官方提供的IDE環(huán)境僅僅由最基本的文本編輯器、編譯器及燒錄器構(gòu)成。相較較為流行的IDE環(huán)境中所提供的代碼高亮、代碼自動(dòng)補(bǔ)全以及重要的Debug工具等,Arduino IDE對(duì)于用戶可謂并不友好。為了方便學(xué)生使用,我們?cè)O(shè)計(jì)在課程中采用學(xué)生熟悉的Visual Studio 2015并配合Visual Micro Arduino Plugin插件來完成課程設(shè)計(jì)的開發(fā)。

1.3 硬件開發(fā)平臺(tái)

采用Arduino作為開發(fā)平臺(tái)是考慮到計(jì)算機(jī)專業(yè)學(xué)生沒有單片機(jī)等前置知識(shí)。Arduino作為一款非專業(yè)開發(fā)板,簡(jiǎn)化了嵌入式開發(fā)的準(zhǔn)備工作,對(duì)于不熟悉電子的計(jì)算機(jī)專業(yè)學(xué)生非常友好。MFRC522閱讀器通過SPI接口接入Arduino,選取這一款13.56MHz 的閱讀器通過是考慮到ISO 14443高頻協(xié)議是目前市場(chǎng)RFID應(yīng)用場(chǎng)景最多的技術(shù),便于學(xué)生利用身邊常見的情景完成自己的項(xiàng)目設(shè)計(jì)。

2 功能定義

本課程項(xiàng)目開發(fā)框架所提供的功能可以分為四個(gè)部分:對(duì)ISO/IEC 14443協(xié)議的實(shí)現(xiàn)、對(duì)卡片的管理、對(duì)數(shù)據(jù)的管理、對(duì)用戶交互控制支持,如表1所示。

3 框架實(shí)現(xiàn)

框架以C/C++作為開發(fā)語(yǔ)言,我們實(shí)現(xiàn)了以下類來描述并實(shí)現(xiàn)功能定義,如圖1所示。DATA類描述了數(shù)據(jù)在Arduino EEPROM的存儲(chǔ)方式,STORAGE類則負(fù)責(zé)對(duì)數(shù)據(jù)的所有存取改查操作;OPTION類完成了用戶通過JoyStick完成菜單選取的功能,另一方面,CreateUI類負(fù)責(zé)格式化輸出開發(fā)者自定義的菜單;MONEY類負(fù)責(zé)完成輸入金額的字符串到數(shù)值之間的轉(zhuǎn)換。在MFRC522上對(duì)ISO/IEC 14443協(xié)議的實(shí)現(xiàn)由RFID類完成,這個(gè)類引用自GitHub上的一個(gè)開源項(xiàng)目①。BUSINESS類及UI類則是針對(duì)校園一卡通這項(xiàng)應(yīng)用場(chǎng)景所編寫的業(yè)務(wù)類,它作為例程提供給學(xué)生使用框架的方法。學(xué)生可以通過這些類所組成的開發(fā)框架,自行修改、編寫B(tài)USINESS類來實(shí)現(xiàn)自己的RFID應(yīng)用系統(tǒng),或者也可以考慮以繼承的方式獲取BUSINESS中的卡片管理功能。所有的類定義及類實(shí)現(xiàn)文件都需要導(dǎo)入到$( Arduino)\libraries\RFID下才能被工程正常編譯。

3.1 數(shù)據(jù)管理功能的實(shí)現(xiàn)

3.1.1 數(shù)據(jù)的存儲(chǔ)位置

首先要確定不同數(shù)據(jù)的存儲(chǔ)位置。對(duì)于一些初始化狀態(tài)的信息,例如卡片基本信息,發(fā)卡單位,卡片狀態(tài)等等,將其保存在系統(tǒng)中,構(gòu)成一條卡片記錄,而金額數(shù)據(jù)一般的做法是僅保存在卡片上,由加密系統(tǒng)保證這一金額不被隨意改動(dòng)。同時(shí),考慮如何在卡片與系統(tǒng)之間建立綁定關(guān)系,我們讓每一條記錄都維護(hù)一個(gè)卡號(hào)字段,以表示當(dāng)前記錄所對(duì)應(yīng)的卡片。同時(shí),為了方便卡片在系統(tǒng)的中的標(biāo)識(shí)及查詢,我們額外創(chuàng)建一個(gè)索引字段,同時(shí)存放于系統(tǒng)與卡片之中,確定卡片歸屬于本系統(tǒng)管理。

為了盡可能不使用其他的數(shù)據(jù)庫(kù)技術(shù)的情況下,我們采用Arduino UNO自身的一塊EEPROM作為數(shù)據(jù)存儲(chǔ)區(qū)域,它的大小為1KB,我們使用其一半的空間512B用于卡片記錄的存儲(chǔ),另一半的空間留給開發(fā)者自行使用。EEPROM空間被劃分為塊為單位進(jìn)行讀寫,每一塊的大小為1字節(jié),塊號(hào)從0開始編址,即塊0,塊1,…,塊511。Arduino為程序員提供了一個(gè)名為EEPROM的庫(kù)來完成讀寫操作,它通過塊號(hào)進(jìn)行訪問,這個(gè)庫(kù)被定義在Arduino Library的EEPROM.h中。

3.1.2 記錄塊的結(jié)構(gòu)設(shè)計(jì)

利用EEPROM保存卡片記錄,記錄塊結(jié)構(gòu)表如表2所示。這個(gè)結(jié)構(gòu)由DATA類實(shí)現(xiàn),并將這些字段設(shè)置為公有暴露給外部函數(shù)使用。

其中,設(shè)計(jì)index字段是這樣考慮的:首先,index字段用于記錄的索引,雖然卡號(hào)也具有唯一性,但是如果利用5字節(jié)的卡號(hào)進(jìn)行索引,效率較為低下;第二,index字段同時(shí)兼具記錄有效性標(biāo)識(shí)的作用,我們要求index編號(hào)一定是一個(gè)大于0的整數(shù),表示“第XX條記錄”,一旦index值為0,則表示此條記錄已經(jīng)從系統(tǒng)中刪去,所以在清除記錄時(shí),我們可以通過將該記錄的index置為0來完成。所有的記錄塊以圖2所示的方式排列在EEPROM中。

3.1.3 記錄的存儲(chǔ)管理

記錄存儲(chǔ)管理通過STORAGE類實(shí)現(xiàn),它通過index完成對(duì)記錄的新增、查詢、修改,并且能夠以塊為單位管理EEPROM存儲(chǔ)區(qū)。類中設(shè)置了一個(gè)用戶查找EEPROM存儲(chǔ)區(qū)的指針ptr,并設(shè)置了一個(gè)對(duì)DATA類實(shí)例的引用,用于操作來自閱讀器的卡號(hào)、金額等數(shù)據(jù)。

3.1.4 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的使用

DATA實(shí)現(xiàn)為一個(gè)結(jié)構(gòu),這樣設(shè)計(jì)是為了便于RFID類相關(guān)操作函數(shù)直接使用,可以將DATA看做連接卡片數(shù)據(jù)與系統(tǒng)數(shù)據(jù)的橋梁。當(dāng)有數(shù)據(jù)從卡片發(fā)到系統(tǒng),一個(gè)Data對(duì)象將從RFID的對(duì)象接收這些數(shù)據(jù),隨后系統(tǒng)使用STORAGE類來對(duì)這個(gè)Data對(duì)象進(jìn)行數(shù)據(jù)存儲(chǔ)的相關(guān)操作。

3.2 用戶交互控制的實(shí)現(xiàn)

本系統(tǒng)選取了一款常見的雙軸按鍵搖桿JoyStick用于用戶與系統(tǒng)的交互控制。我們?cè)O(shè)計(jì)讓學(xué)生只允許構(gòu)建這樣的菜單:每一級(jí)菜單具有4中選項(xiàng),分別對(duì)應(yīng)up、down、left、right。當(dāng)搖桿推向某一方向時(shí),菜單被選中,執(zhí)行相應(yīng)功能或進(jìn)入下一級(jí)菜單。例如,在框架提供的例程中,我們總是將down選項(xiàng)定義為“返回上一級(jí)菜單”功能。

我們實(shí)現(xiàn)OPTION類來完成JoyStick的用戶輸入。這里需要注意多級(jí)菜單的情況:多級(jí)菜單下,在推動(dòng)的過程Arduino將檢測(cè)到連續(xù)變化的模擬信號(hào),會(huì)造成同一方向連續(xù)多次輸入,所以業(yè)務(wù)邏輯要保證有彈回檢測(cè)機(jī)制。

3.3 菜單的設(shè)計(jì)與實(shí)現(xiàn)

系統(tǒng)通過串口監(jiān)視器向用戶輸出菜單與控制信息。我們提供了一個(gè)CreateUI類來規(guī)范菜單的樣式,包括菜單上方及下方由連續(xù)若干個(gè)“*”構(gòu)成的裝飾行。這樣做一方面是簡(jiǎn)化開發(fā),生成統(tǒng)一美觀的菜單,更重要的是,由于Arduino UNO的運(yùn)行內(nèi)存很小,如果所創(chuàng)建的界面包含若干級(jí)菜單,那么大量重復(fù)的符號(hào)常量將使程序的全局靜態(tài)區(qū)占用過多的運(yùn)行內(nèi)存,造成運(yùn)行時(shí)棧區(qū)空間不足,這將導(dǎo)致運(yùn)行的不穩(wěn)定甚至是錯(cuò)誤。

3.4 金額處理

金額處理的主要工作時(shí)將用戶通過串口輸入字符轉(zhuǎn)換為數(shù)值、將數(shù)值轉(zhuǎn)換為字節(jié)流、緩沖區(qū)處理等功能,由MONEY類實(shí)現(xiàn)。

4 項(xiàng)目例程

為了指導(dǎo)學(xué)生正確使用課程開發(fā)框架,我們構(gòu)建了一個(gè)校園一卡通系統(tǒng)例程,包括BUSINESS類、對(duì)應(yīng)的UI菜單類以及相應(yīng)的工程文件。

BUSINESS類實(shí)現(xiàn)了開卡管理、注銷管理、查詢、充值、消費(fèi)等功能,并且實(shí)現(xiàn)了一個(gè)UI類來輸出操作菜單。這一例程是利用框架完成的,學(xué)生可以通過這一例程了解開發(fā)框架的使用方式。它可以作為實(shí)踐課程的引例為學(xué)生展示框架的功能,啟發(fā)學(xué)生自行設(shè)計(jì)自己的RFID應(yīng)用系統(tǒng)。

5 結(jié)束語(yǔ)

本文以構(gòu)建RFID應(yīng)用系統(tǒng)“最小集”的方式提供了一個(gè)課程設(shè)計(jì)開發(fā)框架。框架被設(shè)計(jì)為現(xiàn)在這樣的形式出于多方面的考慮。第一是利用Arduino UNO作為開發(fā)平臺(tái)保證了對(duì)嵌入式、單片機(jī)知識(shí)的簡(jiǎn)化;第二是盡可能少的引入例如數(shù)據(jù)庫(kù)等商業(yè)化軟件,使課程內(nèi)容集中在RFID技術(shù)應(yīng)用這一話題上;第三,框架將實(shí)現(xiàn)ISO 14443協(xié)議下閱讀器讀寫機(jī)制的RFID類暴露給學(xué)生直接使用(而不是將其設(shè)計(jì)在看不到的底層),這區(qū)別于市場(chǎng)上封裝的閉源的實(shí)驗(yàn)設(shè)備,可以幫助學(xué)生熟悉、掌握RFID協(xié)議流程及機(jī)制,最終達(dá)到理解技術(shù)原理,掌握實(shí)踐應(yīng)用的教學(xué)目標(biāo)。

注釋:本文所引用GitHub RFID開源項(xiàng)目可以從 https://github.com/miguelbalboa/rfid.git獲得。

參考文獻(xiàn):

[1] 吳功宜.對(duì)物聯(lián)網(wǎng)工程專業(yè)教學(xué)體系建設(shè)的思考[J].計(jì)算機(jī)教育,2010(21):26-29.

[2] 曹國(guó)平.應(yīng)用型本科物聯(lián)網(wǎng)專業(yè) RFID 課程實(shí)踐教學(xué)研究[J].計(jì)算機(jī)教育,2015(10):100-102.

猜你喜歡
實(shí)踐教學(xué)
茶學(xué)專業(yè)校企合作實(shí)踐教學(xué)探索
考試周刊(2016年79期)2016-10-13 23:35:16
《電氣工程畢業(yè)設(shè)計(jì)》 課程的教學(xué)設(shè)計(jì)
考試周刊(2016年79期)2016-10-13 23:26:02
研究型學(xué)習(xí)在傳熱學(xué)實(shí)踐教學(xué)中的應(yīng)用
思想政治理論課實(shí)踐教學(xué)研究述評(píng)
高職院校商務(wù)禮儀課程教學(xué)改革探索芻議
《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用》教學(xué)創(chuàng)新方法研究
科技視界(2016年20期)2016-09-29 11:25:15
山东省| 临高县| 西畴县| 黄冈市| 安仁县| 吉安市| 大连市| 邻水| 灵石县| 资阳市| 奈曼旗| 安丘市| 连南| 遵化市| 颍上县| 丁青县| 杭锦后旗| 上栗县| 砀山县| 灯塔市| 林口县| 慈利县| 菏泽市| 丰城市| 兴和县| 焉耆| 丰原市| 兴化市| 延庆县| 荔浦县| 泰顺县| 玛多县| 江油市| 无极县| 台安县| 炎陵县| 西贡区| 苏州市| 巴彦淖尔市| 定陶县| 庐江县|