文獻標識碼:A
DOI: 10.19358/j.issn.2096-5133.2018.08.021
中文引用格式:陳科,蘇魯陽,楊筆鋒.基于ZigBee的教學應答系統(tǒng)軟件設計[J].信息技術(shù)與網(wǎng)絡安全,2018,37(8):91-95.
基于ZigBee的教學應答系統(tǒng)軟件設計
摘要:隨著我國高校教育的不斷普及,大學生數(shù)量雖然激增,但是課堂學習氛圍淡薄,甚至有逃課情況。這些現(xiàn)象嚴重影響著高校教師的教學計劃以及對學生素質(zhì)的培養(yǎng)?;赯igBee 平臺,設計了一套師生課堂應答系統(tǒng),并重點闡述其軟件設計。采用指紋識別替代傳統(tǒng)的簽到流程,加入副協(xié)調(diào)器以解決主協(xié)調(diào)器異常情況,利用Z-stack協(xié)議棧解決不同教室間誤組網(wǎng)問題,并讓學生能換一種方式對教學計劃進行反饋。學生可利用硬件模塊上的液晶屏和按鍵無線傳遞問題答題或表決信息,這使得師生間的交互變得更加方便與靈活。
關(guān)鍵詞:
Abstract:
Key words:
0 引言
近些年,對于不少在校大學生而言,度過了高考大關(guān),似乎已經(jīng)厭倦了課堂學習和思考問題。即使是一名優(yōu)秀的高校教師也難以徹底擺脫課堂的沉悶氣氛。如何讓更多人參與到知識探索中成為當前高校教育面臨的一個問題。教師的教學水平對課堂固然有一定影響,但是恰當?shù)亩嗝襟w支持能讓課堂更具有活力。
本文基于ZigBee以及Z-stack協(xié)議棧對協(xié)調(diào)器、終端節(jié)點、路由器進行了程序設計,設計了一套應答系統(tǒng)。將整個ZigBee網(wǎng)絡的協(xié)調(diào)器作為教師端模塊,用于建立網(wǎng)絡、引導其他模塊加入網(wǎng)絡以及管理學生端,并通過串口與上位機進行交互操作;將ZigBee網(wǎng)絡的終端節(jié)點作為學生端,無線發(fā)送來自學生的輸入信息,無線接收來自教師端的信息;將ZigBee網(wǎng)絡的兩個路由器分別作為指紋識別模塊以及副協(xié)調(diào)器,前者傳輸指紋信息,后者接收來自主協(xié)調(diào)器的狀態(tài)信息,當主協(xié)調(diào)器異常時,副協(xié)調(diào)器將對其進行替換,保證系統(tǒng)穩(wěn)定。上位機同步來自服務器的課程信息,對各個終端節(jié)點進行組網(wǎng)配置,避免教室之間的錯誤入網(wǎng)現(xiàn)象。
1 系統(tǒng)整體流程
系統(tǒng)整體流程如圖1所示,每間教室都有一個主協(xié)調(diào)器用于搭建網(wǎng)絡并與上位機進行通信,備份協(xié)調(diào)器用于異常處理[1]。當一堂課快要開始時,教師登錄上位機軟件,學生進入教室,并通過指紋模塊進行簽到。在學生簽到后,指紋ID信息通過無線發(fā)送給協(xié)調(diào)器。協(xié)調(diào)器接收到指紋ID后,通過串口反饋給上位機[2]。上位機軟件會顯示學生的實時簽到信息。
簽到完成后,學生用學生端模塊,在確保成功連入ZigBee網(wǎng)絡的情況下,用學號進行登錄。上位機對登錄信息進行識別,若發(fā)現(xiàn)輸入有誤或者這堂課上沒有該生信息,立即反饋給學生端錯誤信息,并不予登錄;反之,學生端模塊將進入答題界面,準備答題或是表決。
當課程結(jié)束時,上位機軟件下達下課指令,所有終端節(jié)點切換自身的個域網(wǎng)地址并重啟,為下一堂課做好準備。
2 Z-stack協(xié)議棧流程
TI的Z-Stack協(xié)議棧從總體上來看主要由三部分組成:硬件抽象層(Hardware Abstraction Layer,HAL)、操作系統(tǒng)抽象層(Operating System Abstraction Layer,OSAL)和ZigBee協(xié)議各層。
在整個Z-Stack系統(tǒng)運行時,主函數(shù)主要完成兩個任務。其一,整個系統(tǒng)的初始化,其中涉及HAL中各個硬件模塊的初始化;其二,系統(tǒng)進行網(wǎng)絡配置和任務優(yōu)先級的劃分。
圖2所示為系統(tǒng)啟動流程,首先屏蔽所有中斷,在經(jīng)歷底板、IO、硬件驅(qū)動、非易失存儲器等硬件相關(guān)的初始化后,通過OSAL的初始化函數(shù)進行系統(tǒng)初始化操作,這包括存儲器、定時器等;之后通過任務初始化函數(shù)進行網(wǎng)絡配置和任務分級,并對系統(tǒng)任務和用戶任務進行初始化操作[3];最后通過OSAL啟動函數(shù)進入輪詢狀態(tài),不停地監(jiān)聽任務事件的觸發(fā),并跳轉(zhuǎn)至任務執(zhí)行函數(shù)。所有用戶想觸發(fā)的事件必須要注冊登記,以此綁定事件與用戶任務,這樣當事件觸發(fā)時,比如按鍵按下時,系統(tǒng)才能從輪詢中正常跳轉(zhuǎn)至用戶的執(zhí)行函數(shù)[4]。
3 系統(tǒng)軟件設計
整個系統(tǒng)的軟件部分包括上位機、協(xié)調(diào)器、路由器以及各個終端節(jié)點的程序設計[5]。本文主要在ZigBee2007版協(xié)議棧的基礎上對后三者的流程進行講解,對其中涉及的液晶屏、按鍵、指紋傳感器等模塊只做簡略介紹,并不深究其控制代碼。
3.1 協(xié)調(diào)器程序設計
為了方便管理,本系統(tǒng)對每一個設備設置了一個8位ID,協(xié)調(diào)器設置為0x00[6]。整個軟件流程如圖3所示,協(xié)調(diào)器上電后,在完成協(xié)議棧的各項底層初始化操作后,開始組建網(wǎng)絡[7]。主協(xié)調(diào)器搭建起了整個網(wǎng)絡,以2.4 GHz作為此方案的通信頻段,選用16號信道,引入節(jié)點和路由器,構(gòu)建樹型網(wǎng)絡。2.4 GHz頻段下,在一個教室內(nèi)部進行無線通信,其通信質(zhì)量是可以得到保證的[8]。
之后,系統(tǒng)進行所需模塊的初始化,主要有以下3點:
(1)完成液晶屏的初始化界面顯示。協(xié)調(diào)器現(xiàn)階段幾乎不會用液晶屏和按鍵,因此對于協(xié)調(diào)器而言,液晶屏目前僅僅為其顯示連接狀態(tài),按鍵也僅僅留出硬件接口,以便后續(xù)功能補充。
(2)進行端點描述、地址類型結(jié)構(gòu)體的參數(shù)配置。對于端點,一個設備上可以擁有多個端點,它的作用主要是將不同的無線任務進行分類。當某個設備在接收數(shù)據(jù)包時,首先匹配短地址,成功后再由底層解析并分發(fā)給對應端點,如端點不匹配則直接丟棄。在本項目中,所有設備的端點號都設為8。
而地址類型結(jié)構(gòu)體,即afAddrType_t,是對端點、目的地址、發(fā)送模式、個域網(wǎng)地址的一種包裝。在配置好這樣一個結(jié)構(gòu)體之后,用戶在使用無線傳輸函數(shù)進行無線數(shù)據(jù)發(fā)送時,可以很方便地調(diào)用。為了讓整個網(wǎng)絡的無線傳輸數(shù)據(jù)分類更加清楚,本項目定義了三個這樣的結(jié)構(gòu)體,對應三種傳輸情況,協(xié)調(diào)器用到了兩種:廣播(教師端向所有學生端發(fā)送信息,便于題目的下達)和單播(教師端向單個學生端發(fā)消息,便于單獨抽問)。
(3)進行串口的初始化與注冊。對于串口,本項目利用協(xié)議棧中的調(diào)試層,對串口進行簡單快捷的處理。因為調(diào)試層中有許多調(diào)試接口能與各層進行直接通信,利用串口,聯(lián)系上位機與用戶任務顯得更加方便。
在完成初始化之后,系統(tǒng)將進行輪詢狀態(tài)。但本項目中加入了定時觸發(fā)事件,主協(xié)調(diào)器將對副協(xié)調(diào)器定時每10 s發(fā)送一次狀態(tài)信息,當副協(xié)調(diào)器連續(xù)3次未收到數(shù)據(jù)時,系統(tǒng)將認為主協(xié)調(diào)器工作狀態(tài)異常,副協(xié)調(diào)器將執(zhí)行切換操作。
如果系統(tǒng)收到無線數(shù)據(jù),也將跳轉(zhuǎn)執(zhí)行函數(shù),并根據(jù)預先設置好的幀標志位,判別接收信息的類別,然后對信息進行加工,并通過串口向上位機上傳;同理,如果收到來自上位機的串口信息,也將判別指令類型,然后再控制各個學生端進行操作[9]。
具體而言,上位機通過云端同步更新上課信息和指令信息。如圖3所示,上位機目前有7種命令格式傳遞給協(xié)調(diào)器,協(xié)調(diào)器接收3種來自其他節(jié)點的信息。
在提問環(huán)節(jié)中,上位機目前支持的操作大致為:允許答題、禁止答題、單獨抽問、隨機分組、開啟答題倒計時,基本滿足課堂應答的所需。
登錄認證是為了對學生端的登錄信息進行校對并及時反饋。
下課指令不僅為了清除當前課堂的殘留數(shù)據(jù),也更新了學生端的內(nèi)在組網(wǎng)配置,為下一次連接做準備,避免設備錯誤入網(wǎng)。
3.2 節(jié)點程序設計
與協(xié)調(diào)器一樣,為了方便管理,對每一個終端節(jié)點設置了一個8位ID,從0x01開始命名,最大0xfd。整個節(jié)點軟件流程如圖4所示,節(jié)點上電后,在完成協(xié)議棧的各項底層初始化操作后,開始根據(jù)當前個域網(wǎng)地址值搜索網(wǎng)絡并加入,同時初始化用戶任務函數(shù)。之后,節(jié)點將進行重連檢測。若在之前設備未登錄,則進行正常的登錄操作,進入答題界面答題并準備執(zhí)行教師端所發(fā)指示;若在之前設備異常斷電,則將跳過登錄操作,并恢復一些數(shù)據(jù)。
節(jié)點上主要使用的兩個硬件模塊是液晶屏和矩陣鍵盤。液晶屏采用SPI接口接入?yún)f(xié)議棧,將一直引導用戶進行相應的操作。協(xié)議棧本身針對幾個獨立按鍵進行了定義,本設計用到了其中兩個獨立按鍵,其中一個作為整個矩陣鍵盤的掃描啟動開關(guān),學生在輸入前需要先按下此鍵才能正常輸入;另外一個則作為手動復位的按鈕,按下后,可以清除所有信息,包括Flash中保存的內(nèi)容。但根據(jù)項目的需求,硬件上又加入了4×4矩陣鍵盤,占用P1口共8個端口,支持16種字符的輸入,包括:0~9十個數(shù)字,A~D四個字母,*和#兩個功能按鍵。
3.2.1 重連檢測
在初始化完成后,實際上因節(jié)點設備入網(wǎng)狀態(tài)的變化(從未組網(wǎng)變?yōu)榻K端節(jié)點),系統(tǒng)將退出輪詢?nèi)ヌ幚韴?zhí)行函數(shù)。系統(tǒng)判定入網(wǎng)設備的類型,如果是終端節(jié)點,則會進行重連檢測。具體而言,用接口函數(shù)讀取Flash中的重連標志位。
如果其值為1,則表示該設備之前已入網(wǎng),需進行界面恢復。該設備將恢復到之前答題界面,并且讀取Flash,然后將分組信息、倒計時信息也復原;如果其值為0,則表示上次是正常斷電。系統(tǒng)將進行正常登錄操作,等待學生信息的錄入。
3.2.2 顯示界面
主要設計的界面是登錄界面和答題界面,當然還有一些其他反饋界面。
在登錄界面,本項目需要學生首先按下矩陣鍵盤的啟動按鍵,再通過矩陣鍵盤輸入自己10位學號信息,以*鍵作為退格鍵,#鍵作為確認鍵。發(fā)送后,等待協(xié)調(diào)器進行認證反饋。認證成功,則液晶屏顯示“登錄成功”,進入答題頁面;反之,則液晶屏顯示“登錄失敗”,重新進入登錄頁面。為防止誤發(fā)送,在軟件后臺進行了發(fā)送限制,當輸入位數(shù)少于10位或包含其他字符,#鍵將失效。
在答題界面,節(jié)點將向協(xié)調(diào)器發(fā)送答題信息。但首先需要接收來自協(xié)調(diào)器的答題指令,當節(jié)點收到允許答題指令時,節(jié)點內(nèi)置的答題開關(guān)(一個布爾型的變量)將開啟;同理,當收到停止答題指令時,此開關(guān)將關(guān)閉。用戶需要在這段時間內(nèi)根據(jù)投影儀或PPT所示的題目,鍵入答案并發(fā)送。這是節(jié)點最主要也是最基本的輸入界面,答案長度最大16個字符。
3.2.3 其他指令的操作
除了允許答題和關(guān)閉答題這兩個基本操作外,系統(tǒng)還有其他指令。
當協(xié)調(diào)器收到上位機的隨機抽問命令,則會隨機開啟某一個節(jié)點答題開關(guān),讓其答題。當然,這個過程會有相應的蜂鳴器和LED閃爍進行提醒。
隨機分組指令讓所有在場學生平均并且隨機地分成幾個小組,小組編號將在節(jié)點的答題界面上進行顯示。
開啟倒計時是讓答題者在限定時間內(nèi)答題,時間一到,節(jié)點便會停止作答,倒計時也將顯示在節(jié)點的液晶屏上。倒計時功能采用協(xié)議棧的事件定時觸發(fā)函數(shù)進行操作,時間參數(shù)為1 000,即1 s觸發(fā)一次,事件每次觸發(fā)將更新液晶屏上的顯示時間,基本實現(xiàn)了時間同步。
對于下課指令,上位機可以向云端同步信息,從而得知班級下一個上課地點的網(wǎng)絡地址。這樣上位機就可以通過協(xié)調(diào)器控制所有節(jié)點軟切換其網(wǎng)絡配置,從而達到切換教室的效果,避免教室之間可能出現(xiàn)的誤組網(wǎng)問題[10]。
其具體切換流程為:各個節(jié)點從協(xié)調(diào)器獲取到新的網(wǎng)絡地址,然后調(diào)用接口函數(shù)寫入并更新自身的網(wǎng)絡地址,再清空重連標志位和分組信息,避免再次鏈接時出現(xiàn)問題,最后進行軟件重啟。
3.3 路由器軟件設計
在本設計中,路由器充當兩個重要模塊,自定義的8位ID分別是0xfe和0xff。下面分別講解這兩個模塊。
3.3.1 副協(xié)調(diào)器軟件流程
副協(xié)調(diào)器要想替換主協(xié)調(diào)器,自動組建和維持ZigBee網(wǎng)絡,并讓之前網(wǎng)絡中的其他節(jié)點繼續(xù)工作,必須復制網(wǎng)絡的關(guān)鍵參數(shù),這些參數(shù)包括個域網(wǎng)地址、信道信息和網(wǎng)絡鄰居表。其中個域網(wǎng)地址和信道信息相對簡單,為了讓網(wǎng)絡鄰居表也簡單一些,此項目中副協(xié)調(diào)器將不引導其他節(jié)點加入網(wǎng)絡。
由于副協(xié)調(diào)器一開始就和主協(xié)調(diào)器在一個網(wǎng)絡中,因此個域網(wǎng)地址和信道與主協(xié)調(diào)器一樣,不用處理。主協(xié)調(diào)器定時向副協(xié)調(diào)器發(fā)送狀態(tài)信息。實際上,這個信息就是主協(xié)調(diào)器通過系統(tǒng)接口函數(shù)獲取到的鄰居表,經(jīng)過包裝之后得到的信息幀。副協(xié)調(diào)器將該信息存儲在Flash中,一旦發(fā)生異常,則將Flash中存儲的設備間關(guān)系信息通過內(nèi)置函數(shù)進行恢復,用副協(xié)調(diào)器重新啟動網(wǎng)絡。
如圖5所示,副協(xié)調(diào)器在進行一系列初始化后進入輪詢。正常情況下只需要接收狀態(tài)信息,并且計算與上一次接收的時間差。若超過30 s未收到數(shù)據(jù),則進行協(xié)調(diào)器的切換。
3.3.2 指紋模塊軟件流程
本項目通過串口將指紋傳感器和ZigBee模塊聯(lián)系起來,組成一個指紋采集模塊[11]。
指紋錄入時,ZigBee模塊發(fā)送讀取圖像指令,然后傳感器開始讀取檢測到的指紋圖像,一段延時之后,再發(fā)送生成指紋特征指令,傳感器進而將生成指紋特征。二次錄入時,也將生成一個指紋特征。接著ZigBee模塊發(fā)送模板特征比對指令。如果比對成功,則生成指紋模板,分配ID并存儲;若失敗則重新錄入。
檢測指紋時,與指紋錄入時一樣。ZigBee模塊同樣需要發(fā)送讀取圖像指令和生成指紋特征指令,從而獲取指紋特征。ZigBee模塊發(fā)送搜索指紋圖像指令。若比對成功,則向協(xié)調(diào)器發(fā)送指紋ID;若失敗,則重新錄入。
在上課之前,ZigBee模塊通過云端同步學生的指紋信息,并對指紋庫進行更新。所以當學生進行簽到時,只需比對相應信息,若比對成功,將無線發(fā)送特征指令。
如圖6所示,指紋模塊也需要加入到整個網(wǎng)絡,所以也要初始化協(xié)議棧。之后,模塊等待學生的指紋錄入,當檢測到指紋圖像時,向傳感器獲取指紋特征。與庫信息進行比對后,獲得其指紋ID,無線轉(zhuǎn)發(fā)給協(xié)調(diào)器,等待下一次的指紋簽到。
4 結(jié)論
本文基于ZigBee設計了一套教學應答系統(tǒng),主要說明了其中ZigBee軟件部分,對其中多個模塊的運作進行了分析。目前該系統(tǒng)已有一些基本功能,能夠基本滿足課堂需求。在實際使用中,上位機與協(xié)調(diào)器的通信無異常,能夠正常收發(fā)指令。各個教室內(nèi)的ZigBee網(wǎng)絡通信順暢,且沒有錯誤入網(wǎng)現(xiàn)象。對于后續(xù)的擴展,可以考慮從手機入手,讓手機與云端相連,從而在課下為學生提供查漏補缺的機會。
參考文獻
[1] 楊小來. 基于ZigBee技術(shù)的家居智能化環(huán)境狀態(tài)數(shù)據(jù)檢測系統(tǒng)設計[J]. 通訊世界, 2015(23):263.
[2] 姚遠, 唐亞華. 基于C#的OTP存儲器燒錄器上位機軟件的設計與實現(xiàn)[J]. 電子設計工程, 2016, 24(13):30-33.
[3] 劉蘊. LED智能照明控制系統(tǒng)的研究與設計[D]. 西安:陜西科技大學, 2013.
[4] 曾寶國. Z-STACK協(xié)議棧應用開發(fā)分析[J]. 物聯(lián)網(wǎng)技術(shù), 2011(3):71-73.
[5] 孫九瑞, 孫曉晨. 基于ZigBee的圖書館環(huán)境監(jiān)控系統(tǒng)設計[J]. 應用科技, 2015,42(3):49-54.
[6] 崔妮. 基于無線傳感器網(wǎng)絡的采煤機狀態(tài)監(jiān)測系統(tǒng)設計與實現(xiàn)[D]. 太原:中北大學, 2016.
[7] 張久強, 施仁政, 陳遠知. 基于ZigBee的WSN節(jié)點嵌入式軟件研究與開發(fā)[C]// 全國信號和智能信息處理與應用學術(shù)會議會刊, 2014.
[8] 王建風, 師曉紅. 城市軌道交通CBTC無線干擾及防護措施[J]. 城市建設理論研究(電子版), 2014(13): 12236-12238.
[9] 王超. 基于ZigBee技術(shù)的無縫鋼軌爬行監(jiān)測系統(tǒng)研究與設計[D]. 長沙:中南大學, 2014.
[10] 鐘小磊, 陳賾, 代祖浩,等. ZigBee自組網(wǎng)的網(wǎng)間串擾和通信解決方案[J]. 光通信研究, 2017(4):70-73.
[11] 喬磊. 基于ZigBee技術(shù)的無線點餐系統(tǒng)設計[J]. 現(xiàn)代電子技術(shù), 2011, 34(3):68-71.
(收稿日期:2018-03-19)
作者簡介:
陳科(1993-),男,碩士研究生,主要研究方向:嵌入式單片機、氣象設備儀器。
蘇魯陽(1992-),男,碩士研究生,主要研究方向:圖像拼接技術(shù)研究。
楊筆鋒(1980-),男,碩士,副教授,主要研究方向:氣象探測技術(shù)及應用、信號獲取技術(shù)及應用。