基於ZigBee的教學應答系統軟體設計

陳科,蘇魯陽,楊筆鋒

(1.成都信息工程大學,四川 成都 610225;2.中國氣象局大氣探測重點開放實驗室,四川 成都 610225)

隨著我國高校教育的不斷普及,大學生數量雖然激增,但是課堂學習氛圍淡薄,甚至有逃課情況。這些現象嚴重影響著高校教師的教學計劃以及對學生素質的培養。基於ZigBee 平臺,設計了一套師生課堂應答系統,並重點闡述其軟件設計。採用指紋識別替代傳統的簽到流程,加入副協調器以解決主協調器異常情況,利用Z-stack協議棧解決不同教室間誤組網問題,並讓學生能換一種方式對教學計劃進行反饋。學生可利用硬件模塊上的液晶屏和按鍵無線傳遞問題答題或表決信息,這使得師生間的交互變得更加方便與靈活。

中圖分類號:TP311;TN212文獻標識碼:ADOI: 10.19358/j.issn.2096-5133.2018.08.021

引用格式:陳科,蘇魯陽,楊筆鋒.基於ZigBee的教學應答系統軟件設計[J].信息技術與網絡安全,2018,37(8):91-95.

The program design of teaching response system based on ZigBee

Chen Ke1, Su Luyang1,Yang Bifeng1,2

(1.Chengdu University of Information Technology, Chengdu 610225, China;

2.The Key Open Laboratory for Atmospheric Exploration of China Meteorological Administration, Chengdu 610225, China)

Abstract:With the popularization of higher education in our country, although the number of undergraduates has surged, the atmosphere of classroom learning is weak and even students may skip classes. These phenomena seriously affect the teaching plans of college teachers and the cultivation of students’ qualities. This paper based on the platform of ZigBee, designs a set of teacher-student classroom interaction system, and emphasizes its design of software. The system uses fingerprinting to replace the traditional process of sign-in, adds a vice-coordinator to solve the abnormity of the master coordinator, uses the protocol stack of Z-stack to solve the problem of misconnecting between different classrooms, and allows students to change their way to response to the teaching plan. Students can use the LCD panel and buttons on hardware modules to wirelessly transmit their answers or voting information, which makes the interaction between teachers and students become more convenient and flexible.

Key words:ZigBee; Z-stack; teching response system; wireless communication; networking

0 引言

近些年,對於不少在校大學生而言,度過了高考大關,似乎已經厭倦了課堂學習和思考問題。即使是一名優秀的高校教師也難以徹底擺脫課堂的沉悶氣氛。如何讓更多人參與到知識探索中成為當前高校教育面臨的一個問題。教師的教學水平對課堂固然有一定影響,但是恰當的多媒體支持能讓課堂更具有活力。

本文基於ZigBee以及Z-stack協議棧對協調器、終端節點、路由器進行了程序設計,設計了一套應答系統。將整個ZigBee網絡的協調器作為教師端模塊,用於建立網絡、引導其他模塊加入網絡以及管理學生端,並通過串口與上位機進行交互操作;將ZigBee網絡的終端節點作為學生端,無線發送來自學生的輸入信息,無線接收來自教師端的信息;將ZigBee網絡的兩個路由器分別作為指紋識別模塊以及副協調器,前者傳輸指紋信息,後者接收來自主協調器的狀態信息,當主協調器異常時,副協調器將對其進行替換,保證系統穩定。上位機同步來自服務器的課程信息,對各個終端節點進行組網配置,避免教室之間的錯誤入網現象。

1 系統整體流程

系統整體流程如圖1所示,每間教室都有一個主協調器用於搭建網絡並與上位機進行通信,備份協調器用於異常處理[1]。當一堂課快要開始時,教師登錄上位機軟件,學生進入教室,並通過指紋模塊進行簽到。在學生簽到後,指紋ID信息通過無線發送給協調器。協調器接收到指紋ID後,通過串口反饋給上位機[2]。上位機軟件會顯示學生的實時簽到信息。

簽到完成後,學生用學生端模塊,在確保成功連入ZigBee網絡的情況下,用學號進行登錄。上位機對登錄信息進行識別,若發現輸入有誤或者這堂課上沒有該生信息,立即反饋給學生端錯誤信息,並不予登錄;反之,學生端模塊將進入答題界面,準備答題或是表決。

當課程結束時,上位機軟件下達下課指令,所有終端節點切換自身的個域網地址並重啟,為下一堂課做好準備。

基于ZigBee的教学应答系统软件设计

2 Z-stack協議棧流程

TI的Z-Stack協議棧從總體上來看主要由三部分組成:硬件抽象層(Hardware Abstraction Layer,HAL)、操作系統抽象層(Operating System Abstraction Layer,OSAL)和ZigBee協議各層。

在整個Z-Stack系統運行時,主函數主要完成兩個任務。其一,整個系統的初始化,其中涉及HAL中各個硬件模塊的初始化;其二,系統進行網絡配置和任務優先級的劃分。

圖2所示為系統啟動流程,首先屏蔽所有中斷,在經歷底板、IO、硬件驅動、非易失存儲器等硬件相關的初始化後,通過OSAL的初始化函數進行系統初始化操作,這包括存儲器、定時器等;之後通過任務初始化函數進行網絡配置和任務分級,並對系統任務和用戶任務進行初始化操作[3];最後通過OSAL啟動函數進入輪詢狀態,不停地監聽任務事件的觸發,並跳轉至任務執行函數。所有用戶想觸發的事件必須要註冊登記,以此綁定事件與用戶任務,這樣當事件觸發時,比如按鍵按下時,系統才能從輪詢中正常跳轉至用戶的執行函數[4]

基于ZigBee的教学应答系统软件设计

3 系統軟件設計

整個系統的軟件部分包括上位機、協調器、路由器以及各個終端節點的程序設計[5]。本文主要在ZigBee2007版協議棧的基礎上對後三者的流程進行講解,對其中涉及的液晶屏、按鍵、指紋傳感器等模塊只做簡略介紹,並不深究其控制代碼。

3.1 協調器程序設計

為了方便管理,本系統對每一個設備設置了一個8位ID,協調器設置為0x00[6]。整個軟件流程如圖3所示,協調器上電後,在完成協議棧的各項底層初始化操作後,開始組建網絡[7]。主協調器搭建起了整個網絡,以2.4 GHz作為此方案的通信頻段,選用16號信道,引入節點和路由器,構建樹型網絡。2.4 GHz頻段下,在一個教室內部進行無線通信,其通信質量是可以得到保證的[8]

之後,系統進行所需模塊的初始化,主要有以下3點:

(1)完成液晶屏的初始化界面顯示。協調器現階段幾乎不會用液晶屏和按鍵,因此對於協調器而言,液晶屏目前僅僅為其顯示連接狀態,按鍵也僅僅留出硬件接口,以便後續功能補充。

(2)進行端點描述、地址類型結構體的參數配置。對於端點,一個設備上可以擁有多個端點,它的作用主要是將不同的無線任務進行分類。當某個設備在接收數據包時,首先匹配短地址,成功後再由底層解析並分發給對應端點,如端點不匹配則直接丟棄。在本項目中,所有設備的端點號都設為8。

基于ZigBee的教学应答系统软件设计

而地址類型結構體,即afAddrType_t,是對端點、目的地址、發送模式、個域網地址的一種包裝。在配置好這樣一個結構體之後,用戶在使用無線傳輸函數進行無線數據發送時,可以很方便地調用。為了讓整個網絡的無線傳輸數據分類更加清楚,本項目定義了三個這樣的結構體,對應三種傳輸情況,協調器用到了兩種:廣播(教師端向所有學生端發送信息,便於題目的下達)和單播(教師端向單個學生端發消息,便於單獨抽問)。

(3)進行串口的初始化與註冊。對於串口,本項目利用協議棧中的調試層,對串口進行簡單快捷的處理。因為調試層中有許多調試接口能與各層進行直接通信,利用串口,聯繫上位機與用戶任務顯得更加方便。

在完成初始化之後,系統將進行輪詢狀態。但本項目中加入了定時觸發事件,主協調器將對副協調器定時每10 s發送一次狀態信息,當副協調器連續3次未收到數據時,系統將認為主協調器工作狀態異常,副協調器將執行切換操作。

如果系統收到無線數據,也將跳轉執行函數,並根據預先設置好的幀標誌位,判別接收信息的類別,然後對信息進行加工,並通過串口向上位機上傳;同理,如果收到來自上位機的串口信息,也將判別指令類型,然後再控制各個學生端進行操作

[9]

具體而言,上位機通過雲端同步更新上課信息和指令信息。如圖3所示,上位機目前有7種命令格式傳遞給協調器,協調器接收3種來自其他節點的信息。

在提問環節中,上位機目前支持的操作大致為:允許答題、禁止答題、單獨抽問、隨機分組、開啟答題倒計時,基本滿足課堂應答的所需。

登錄認證是為了對學生端的登錄信息進行校對並及時反饋。

下課指令不僅為了清除當前課堂的殘留數據,也更新了學生端的內在組網配置,為下一次連接做準備,避免設備錯誤入網。

3.2 節點程序設計

與協調器一樣,為了方便管理,對每一個終端節點設置了一個8位ID,從0x01開始命名,最大0xfd。整個節點軟件流程如圖4所示,節點上電後,在完成協議棧的各項底層初始化操作後,開始根據當前個域網地址值搜索網絡並加入,同時初始化用戶任務函數。之後,節點將進行重連檢測。若在之前設備未登錄,則進行正常的登錄操作,進入答題界面答題並準備執行教師端所髮指示;若在之前設備異常斷電,則將跳過登錄操作,並恢復一些數據。

基于ZigBee的教学应答系统软件设计

節點上主要使用的兩個硬件模塊是液晶屏和矩陣鍵盤。液晶屏採用SPI接口接入協議棧,將一直引導用戶進行相應的操作。協議棧本身針對幾個獨立按鍵進行了定義,本設計用到了其中兩個獨立按鍵,其中一個作為整個矩陣鍵盤的掃描啟動開關,學生在輸入前需要先按下此鍵才能正常輸入;另外一個則作為手動復位的按鈕,按下後,可以清除所有信息,包括Flash中保存的內容。但根據項目的需求,硬件上又加入了4×4矩陣鍵盤,佔用P1口共8個端口,支持16種字符的輸入,包括:0~9十個數字,A~D四個字母,*和#兩個功能按鍵。

3.2.1 重連檢測

在初始化完成後,實際上因節點設備入網狀態的變化(從未組網變為終端節點),系統將退出輪詢去處理執行函數。系統判定入網設備的類型,如果是終端節點,則會進行重連檢測。具體而言,用接口函數讀取Flash中的重連標誌位。

如果其值為1,則表示該設備之前已入網,需進行界面恢復。該設備將恢復到之前答題界面,並且讀取Flash,然後將分組信息、倒計時信息也復原;如果其值為0,則表示上次是正常斷電。系統將進行正常登錄操作,等待學生信息的錄入。

3.2.2 顯示界面

主要設計的界面是登錄界面和答題界面,當然還有一些其他反饋界面。

在登錄界面,本項目需要學生首先按下矩陣鍵盤的啟動按鍵,再通過矩陣鍵盤輸入自己10位學號信息,以*鍵作為退格鍵,#鍵作為確認鍵。發送後,等待協調器進行認證反饋。認證成功,則液晶屏顯示“登錄成功”,進入答題頁面;反之,則液晶屏顯示“登錄失敗”,重新進入登錄頁面。為防止誤發送,在軟件後臺進行了發送限制,當輸入位數少於10位或包含其他字符,#鍵將失效。

在答題界面,節點將向協調器發送答題信息。但首先需要接收來自協調器的答題指令,當節點收到允許答題指令時,節點內置的答題開關(一個布爾型的變量)將開啟;同理,當收到停止答題指令時,此開關將關閉。用戶需要在這段時間內根據投影儀或PPT所示的題目,鍵入答案併發送。這是節點最主要也是最基本的輸入界面,答案長度最大16個字符。

3.2.3 其他指令的操作

除了允許答題和關閉答題這兩個基本操作外,系統還有其他指令。

當協調器收到上位機的隨機抽問命令,則會隨機開啟某一個節點答題開關,讓其答題。當然,這個過程會有相應的蜂鳴器和LED閃爍進行提醒。

隨機分組指令讓所有在場學生平均並且隨機地分成幾個小組,小組編號將在節點的答題界面上進行顯示。

開啟倒計時是讓答題者在限定時間內答題,時間一到,節點便會停止作答,倒計時也將顯示在節點的液晶屏上。倒計時功能採用協議棧的事件定時觸發函數進行操作,時間參數為1 000,即1 s觸發一次,事件每次觸發將更新液晶屏上的顯示時間,基本實現了時間同步。

對於下課指令,上位機可以向雲端同步信息,從而得知班級下一個上課地點的網絡地址。這樣上位機就可以通過協調器控制所有節點軟切換其網絡配置,從而達到切換教室的效果,避免教室之間可能出現的誤組網問題[10]

其具體切換流程為:各個節點從協調器獲取到新的網絡地址,然後調用接口函數寫入並更新自身的網絡地址,再清空重連標誌位和分組信息,避免再次鏈接時出現問題,最後進行軟件重啟。

3.3 路由器軟件設計

在本設計中,路由器充當兩個重要模塊,自定義的8位ID分別是0xfe和0xff。下面分別講解這兩個模塊。

3.3.1 副協調器軟件流程

副協調器要想替換主協調器,自動組建和維持ZigBee網絡,並讓之前網絡中的其他節點繼續工作,必須複製網絡的關鍵參數,這些參數包括個域網地址、信道信息和網絡鄰居表。其中個域網地址和信道信息相對簡單,為了讓網絡鄰居表也簡單一些,此項目中副協調器將不引導其他節點加入網絡。

由於副協調器一開始就和主協調器在一個網絡中,因此個域網地址和信道與主協調器一樣,不用處理。主協調器定時向副協調器發送狀態信息。實際上,這個信息就是主協調器通過系統接口函數獲取到的鄰居表,經過包裝之後得到的信息幀。副協調器將該信息存儲在Flash中,一旦發生異常,則將Flash中存儲的設備間關係信息通過內置函數進行恢復,用副協調器重新啟動網絡。

如圖5所示,副協調器在進行一系列初始化後進入輪詢。正常情況下只需要接收狀態信息,並且計算與上一次接收的時間差。若超過30 s未收到數據,則進行協調器的切換。

基于ZigBee的教学应答系统软件设计

3.3.2 指紋模塊軟件流程

本項目通過串口將指紋傳感器和ZigBee模塊聯繫起來,組成一個指紋採集模塊[11]

指紋錄入時,ZigBee模塊發送讀取圖像指令,然後傳感器開始讀取檢測到的指紋圖像,一段延時之後,再發送生成指紋特徵指令,傳感器進而將生成指紋特徵。二次錄入時,也將生成一個指紋特徵。接著ZigBee模塊發送模板特徵比對指令。如果比對成功,則生成指紋模板,分配ID並存儲;若失敗則重新錄入。

檢測指紋時,與指紋錄入時一樣。ZigBee模塊同樣需要發送讀取圖像指令和生成指紋特徵指令,從而獲取指紋特徵。ZigBee模塊發送搜索指紋圖像指令。若比對成功,則向協調器發送指紋ID;若失敗,則重新錄入。

在上課之前,ZigBee模塊通過雲端同步學生的指紋信息,並對指紋庫進行更新。所以當學生進行簽到時,只需比對相應信息,若比對成功,將無線發送特徵指令。

如圖6所示,指紋模塊也需要加入到整個網絡,所以也要初始化協議棧。之後,模塊等待學生的指紋錄入,當檢測到指紋圖像時,向傳感器獲取指紋特徵。與庫信息進行比對後,獲得其指紋ID,無線轉發給協調器,等待下一次的指紋簽到。

基于ZigBee的教学应答系统软件设计

4 結論

本文基於ZigBee設計了一套教學應答系統,主要說明了其中ZigBee軟件部分,對其中多個模塊的運作進行了分析。目前該系統已有一些基本功能,能夠基本滿足課堂需求。在實際使用中,上位機與協調器的通信無異常,能夠正常收發指令。各個教室內的ZigBee網絡通信順暢,且沒有錯誤入網現象。對於後續的擴展,可以考慮從手機入手,讓手機與雲端相連,從而在課下為學生提供查漏補缺的機會。

參考文獻

[1] 楊小來. 基於ZigBee技術的家居智能化環境狀態數據檢測系統設計[J]. 通訊世界, 2015(23):263.

[2] 姚遠, 唐亞華. 基於C#的OTP存儲器燒錄器上位機軟件的設計與實現[J]. 電子設計工程, 2016, 24(13):30-33.

[3] 劉蘊. LED智能照明控制系統的研究與設計[D]. 西安:陝西科技大學, 2013.

[4] 曾寶國. Z-STACK協議棧應用開發分析[J]. 物聯網技術, 2011(3):71-73.

[5] 孫九瑞, 孫曉晨. 基於ZigBee的圖書館環境監控系統設計[J]. 應用科技, 2015,42(3):49-54.

[6] 崔妮. 基於無線傳感器網絡的採煤機狀態監測系統設計與實現[D]. 太原:中北大學, 2016.

[7] 張久強, 施仁政, 陳遠知. 基於ZigBee的WSN節點嵌入式軟件研究與開發[C]// 全國信號和智能信息處理與應用學術會議會刊, 2014.

[8] 王建風, 師曉紅. 城市軌道交通CBTC無線干擾及防護措施[J]. 城市建設理論研究(電子版), 2014(13): 12236-12238.

[9] 王超. 基於ZigBee技術的無縫鋼軌爬行監測系統研究與設計[D]. 長沙:中南大學, 2014.

[10] 鍾小磊, 陳賾, 代祖浩,等. ZigBee自組網的網間串擾和通信解決方案[J]. 光通信研究, 2017(4):70-73.

[11] 喬磊. 基於ZigBee技術的無線點餐系統設計[J]. 現代電子技術, 2011, 34(3):68-71.

(收稿日期:2018-03-19)

陳科(1993-),男,碩士研究生,主要研究方向:嵌入式單片機、氣象設備儀器。

蘇魯陽(1992-),男,碩士研究生,主要研究方向:圖像拼接技術研究。

楊筆鋒(1980-),男,碩士,副教授,主要研究方向:氣象探測技術及應用、信號獲取技術及應用。


分享到:


相關文章: