徐屹恒 丁當 張昕楊
研究背景
目前中小學教師或課代表每天手工登記交作業情況、核查出沒有交作業的學生,耗時耗力,且容易發生差錯而需要二次核實,部分科目的作業批改后還要人工登記作業成績等。人工收作業登記效率低下常常讓教師們苦惱。發現這個問題后,我們走訪了幾個小學、初中的教師,得知他們常常為找出誰沒交作業而花費大量時間。因此,開發一套提高作業情況登記效率和記錄分析作業成績等第的系統是非常有意義的。
研究思路
圖書館的圖書借還系統給了我們靈感,該系統是基于RFID技術實現的。每本書里都有電子標簽,當把圖書放置在操作臺上時,RFID讀卡器便能識別一疊借/還的圖書,一兩秒時間操作屏幕上就能顯示書目列表。系統自動與圖書館數據庫聯網,實現圖書的借/還記錄。借鑒這個思路,我們研發了一套基于RFID技術的作業快速收評系統,在每本作業上都貼上電子標簽,教師收完作業,把本子放在操作臺上,系統就能自動讀取出哪些同學交了作業,再和數據庫中學生信息比對,沒交作業的學生清單便立刻顯示在屏幕上。
研究方案
為了實現基于RFID的作業收交,我們首先需要從RFID的工作原理、RFID的種類、RFID標簽的價格研究項目的可行性。確定了基于RFID作業收評系統的硬件結構、軟件功能,接著我們采購RFID讀寫器和標簽,研究讀寫器的功能和標簽數據的讀寫方法,調測RFID和電腦連接的軟件代碼。硬件調試成功后,按照制定的軟件功能,設計數據庫,完成客戶端、服務器端程序的編寫。
研究過程
在每個作業本上貼上有學生信息的RFID標簽,在客戶端控制超高頻RFID讀寫模塊,同時讀取一疊作業本信息,并將讀取到的信息寫入服務器端數據庫,教師還可選擇寫入作業成績功能將作業等第寫入數據庫。教師、家長、學生可以訪問服務器端,獲取未交作業學生名單、作業評分等信息。系統的數據庫采用廣泛用于嵌入式設備的輕量型數據庫SQLite,客戶端和服務器端軟件都采用Python語言進行編程。
圖1為系統軟件功能及實現方法的思維導圖。通過此圖,我們明確了收作業客戶端、Web查詢客戶端和服務器數據庫的功能和相互之間的關系,明確了系統需要設計的用戶界面、數據庫內容和要實現的軟件功能。
RFID選型
每個作業本上都需粘貼標簽,因此標簽必須為無源型的而且要小,同時成本要低;另外基于作業快速收交的需求,系統需要使用具有高速地多重標簽識別功能的RFID識讀器。通過查閱資料,我們采購了超高頻RFID讀寫器UHFReader188和超高頻RFID標簽。
外殼制作
為了保護RFID讀寫器并方便堆放作業本,我們為RFID讀寫器制作了外殼。外殼采用椴木板,在makercase網站上輸入外殼尺寸生成設計圖紙,由激光切割機切割,用熱熔膠粘合成型。
RFID標簽學生信息寫入
本系統設置學號為“入學年份+班級號+學號”,如20170301為2017年入學的3班1號學生。在標簽中不設置科目信息,是為了方便標簽重復利用。把RFID讀寫器連接到電腦串口,用讀寫器軟件設置正確串口號,打開所連接的串口,然后將標簽逐一放到RFID讀寫器上,使用RFID讀寫器自帶的軟件對標簽編碼進行改寫。如果電腦沒有串口,可采用串口轉USB線將讀寫器連接至電腦USB口。
RFID讀寫器串口調試
本項目用到的串口命令有:打開串口、向RFID讀寫器發送讀取標簽命令、接收串口數據、關閉串口。
打開串口、接收串口數據、關閉串口
調用Python中pyserial模塊的語句。
·打開串口:ser=serial.Serial(ser=serial.Serial(port=comport,baudrate=57600,bytesize=8,parity='N',stopbits=1,timeout=10》。經過測試,超時參數設為10秒能穩定讀出32個標簽數據。
·接收數據:ser.read(20480)。20480表示緩沖區字節數。
·關閉串口:ser.close()
向讀寫器發送讀取標簽的命令需按照RFID串口協議,向讀寫器發送一串十六進制命令代碼。Python語句為:
d=bytearray.fromhex(06 FF 01 05 01 2F FB)
ser.write(d)
發送了詢查命令后,使用語句:c=ser.read(20480),將RFID讀寫器應答的一串十六進制數據讀到列表c,最后對讀到的串口數據c進行解析,分離出本次讀取到的學號信息并排序。
數據庫設計
系統數據庫采用soLlite數據庫。它能夠支持Windows、Linux、Unix等主流操作系統,同時能夠跟很多程序語言相結合。系統的設計主要是2個數據表學生信息表(記錄學生基本信息),以及提交作業的信息表。
用戶界面設計
系統的用戶界面有收作業客戶端用戶界面和Web查詢客戶端用戶界面。收作業客戶端用戶界面采用Python tkinter設計,使用了Menu組件、Button組件、OptionMenu組件、ListView組件等。Web查詢客戶端用戶界面采用PYthon flask實現,Flask是Python中的一個微型Web開發框架。
軟件實現
收作業客戶端基于Windows下Python2.7+pyserrial模塊開發,并采用Python內置組件包tkinter實現圖形界面,實現串口初始化、RFID數據讀取和解析、數據顯示、數據提交、數據清除等功能。收作業客戶端將作業數據提交到soLite數據庫里。軟件流程如圖2所示。
服務器端軟件采用Python的flask框架實現了一個簡易的WebServer,提供了單日作業統計、個人作業情況匯總、平時作業總評等功能。flask框架提供了webserver的基本架構,只需要增加相應的模塊和頁面模板,即可實現相應的功能。每個模塊獲取用戶的請求,分析需要實現的功能,從數據庫中取出滿足條件的數據,利用模板構造相應的頁面,返回給客戶端瀏覽器。
研究結果
基于RFID的作業快速收評系統的創新點在于能快速、同時、準確讀取一疊作業本信息。此功能采用了高速多重識別標簽、性能卓越的超高頻RFID讀寫器,精心調整相關串口參數,使其能穩定可靠地同時讀人多本作業信息。
教師可在批改時將作業本根據作業等第分開擺放,最后將作業等第相同的學生信息和等第信息一起由收作業客戶端讀人數據庫。每天單個班級一項作業情況登記和成績等第登記的工作時長由10~20分鐘縮短至1~2分鐘。
系統還具有自動計算學期作業成績總評分的功能,能客觀公正評價學生的平時學習情況。另外,Web查詢頁面還提供了單個學生的某段時間內作業情況分析功能,方便督促學生提高作業質量。
本系統可以廣泛應用于中小學,將教師、課代表每日統計交作業情況的工作量大大降低。另外根據教育減負的要求,中小學作業成績都采用等第制,本系統方便將成績等第信息化,使作業等第數據具有后續分析價值。本系統在班級中進行了試用,得到了教師的好評,具有很好的推廣價值。
該項目獲得第33屆全國青少年科技創新大賽創新成果競賽項目中學組工程學一等獎。
專家評語
項目基于RFID技術開發了一套作業快速收評系統,制作了相應的實物裝置,實現了實時準確讀入作業本信息功能,解決了學生作業收集評價效率低的問題。項目源自生活,方案合理,構思新穎,符合中學生創新的特點,有較好的推廣應用價值。建議進一步提高系統的可靠性和適用性,并在學校推廣使用。