鄭群
目前國內基于ZigBee的實驗開發裝置及其配套的實驗資料基本上都是單個傳感器加入ZigBee網的功能驗證實驗,讓中職學生自行編寫多個傳感的程序代碼是不現實的。筆者針對中職學校的培養目標和中職學生的特點,進行了技術的改進和處理,對項目工程里用到的多個傳感器部分的代碼采用了模塊化編寫和數據處理,成功應用于實訓教學,大大簡便了學生組建無線智能監控系統的過程,激發了學生的學習興趣和成就感,并大大提升了無線傳感器的組網效率。
一、基于ZigBee的實驗開發裝置應用背景
1.ZigBee技術簡介
ZigBee技術的設計目標是保證在低電耗的前提下,開發一種易部署、低復雜度、低成本、短距離、低速率的自組織無線網絡,在工業控制、家庭智能化、無線傳感器網絡等領域有廣泛的應用前景。簡而言之,ZigBee是一種便宜的低功耗的近距離無線組網技術。
2.ZigBee實驗開發裝置及開發環境
ZigBee無線傳感器網絡的開發環境需要有三要素:一是要有支持ZigBee協議棧的硬件;二是要有支持ZigBee協議的軟件協議棧;三是要有下載器將程序下載到相應的硬件。
我校實訓教學設備采用飛比科技公司的實驗開發裝置,包括FB2530EB板搭載CC2530射頻核心模塊、液晶顯示屏做協調器;FB2530BB板搭載CC2530射頻核心模塊、傳感模塊做終端節點;以及20多種各式傳感模塊。整個實驗開發裝置組成的工作系統如下圖所示,軟件部分采用的是IAR EW開發軟件,通過CC Debugger下載器進行調試和編程,并可在PC機上用飛比瀏覽器進行系統監控。
3.ZigBee無線網絡組網過程
ZigBee無線網絡組網過程包括兩個步驟:網絡初始化和節點加入網絡。
網絡初始化的過程包括:確定網絡協調器、進行信道掃描、設置網絡ID,成功初始化了ZigBee無線網絡,之后就等待其他節點的加入。
節點通過協調器加入網絡的過程包括:查找網絡協調器、發送關聯請求命令、等待協調器處理、發送數據請求命令、確認回復。
4.實驗開發裝置的應用現狀
筆者在ZigBee行業里面做了一些咨詢和調查,目前國內可用于教學的ZigBee實驗開發裝置品牌為數不多,其中做得比較好的有飛比科技公司、佳杰科技公司等。其實驗開發裝置大部分應用于高校物聯網專業,以培養學生程序開發為主要目標,配套的實驗資料基本上都是單個傳感器加入ZigBee網的功能驗證實驗。對于高?;蚋呗氃盒碚f,學生在掌握了功能驗證實驗的原理后可自行編寫程序開發新的應用,可以說目前的實驗開發裝置及其配套資源是能夠適合高校教學的需求的。
二、中職實訓教學的技術現狀
中職教學現狀:《無線數據傳輸》課程是我校物聯網通信應用專業的核心課程,中職學校教學的培養目標主要是讓學生具備ZigBee無線傳感網絡的搭建、使用和維護的職業能力,重點是對技術的了解和模塊的應用上,而不是程序的開發能力。該課程的實訓教學時間為一周。
學生狀況:學生在課程前期對ZigBee技術有了一定的了解,學會了使用CC2530實驗開發裝置進行無線網絡的組網,初步懂得了單個無線傳感器的數據發送和接收流程,并能在電腦終端的瀏覽器上實現遠程監控。
存在問題:由于實驗開發裝置現有配套的實驗都是單個傳感模塊的功能驗證,每換一個傳感模塊就需要換一個新的程序進行燒寫和調試,只能同一時間實現單個傳感網絡的功能;而我們實訓教學是要求在某一個具體的生活或工作情境中去實現整個無線智能監控系統的搭建,這需要多個傳感模塊同時加入網絡并協調工作,中職學生無法直接動手搭建并調試系統,因此,目前國內現有的實驗技術與配套資源不能滿足中等職業學校教學的需求,急需教師在實訓教學前做好技術上的改進和處理。
三、技術的改進思路和方法
思路一是在原來單個傳感模塊的程序上增加編寫與新傳感器相關的代碼,重新編譯調試。
思路二是采用模塊化編程思維,事先把每個傳感器相關的代碼編寫成獨立的程序模塊,全部放在同一個項目工程里面,需要的時候直接調用。
以上兩種思路都可以實現多個傳感模塊同時加入ZigBee網絡并協調工作,但是第一種思路需要學生對ZigBee技術有深入的了解,并且有較高的編程技巧,中職學生普遍缺乏編程思維,編寫新代碼對他們來說難度相當的高,而且不符合中職學校教學的培養目標;而第二種思路可以讓中職學生在需要用到某個傳感器的時候,簡便地選擇和調用相關的程序代碼,從而快速地搭建系統實現功能,因此筆者決定采用第二種思路。
筆者在實訓之前先做好了技術上的改進和處理,對項目工程里用到的與傳感器相關的代碼采用了模塊化編寫,并做好相關的數據處理。編寫和處理的方法如下:
(1)為每個傳感器模塊單獨編寫驅動文件;
(2)在發送端進行傳感數據的匯集和區分;
(3)在接收端進行傳感數據的讀取和識別。
四、具體的技術處理過程
下面以在原有的基礎上添加溫濕度傳感模塊、3D加速度傳感模塊、RFID讀卡器傳感模塊為例,詳細介紹技術處理的過程。
ZigBee實驗開發裝置在中職實訓教學中的技術處理
1.編寫驅動文件以備使用
①在hal_sensor.h中定義傳感器模塊驅動接口,每次只允許選擇一個傳感模塊,如下:
溫濕度傳感模塊: #define SENSOR_SHT1X
3D加速度傳感模塊: #define SENSOR_ADXL3D
RFID讀卡器傳感模塊:#define SENSOR_RC632
……
② 每個傳感器模塊單獨編寫驅動文件,并配備相應的頭文件以供調用,如下:
halSHT1X.c——halSHT1X.h
halADXL3D.c——halADXL3D.h
hal RC632.c——hal RC632.h
……
2.發送端數據的匯集和區分
在hal_sensor.c中編寫sendReportRB函數代碼,進行傳感數據的匯集和區分,比如溫度的數據用0x56區分、濕度的數據用0x17區分、3D加速度的數據用0x1a區分、RFID的數據用0x31區分,其具體代碼如下:
//溫濕度傳感模塊
#ifdefSENSORSHT1X
pData[(*index)++]=SNRDATATYPE2BSIGND|SENSORUSERINDEXTEMP; //0x56
……
pData[(*index)++]=SNRDATATYPE1BUNSIGN|SENSORUSERINDEXHUMI; //0x17
……
#endif
//3D加速度傳感模塊
#ifdefSENSORADXL3D
halUpdateADXL3D();
pData[(*index)++]=SNRDATATYPE1BUNSIGN|SENSORUSERINDEX3DY;
//0x1a;
……
#endif
//RFID讀卡器傳感模塊
#ifdefSENSORRC632
pData[(*index)++]=SNRDATATYPE2BUNSIGN|1;//0x31
osalmemcpy(pData+(*index),RFID_IEEEAddr,2); //RFID
……
#endif
3.接收端數據的讀取和識別
在DemoCollector.c中編寫ShowSensorData函數代碼,對接收到的數據進行讀取和識別,具體代碼如下:(為節省篇幅,讀取識別后的數據處理和顯示部分的代碼用省略號……代替)
else if(pData[addr]==0x56){
//溫濕度傳感模塊
……
}
else if(pData[addr]==0x1a){
//3D加速度傳感模塊
……
}
else if(pData[addr]==0x31){
//RFID讀卡器傳感模塊
……
}
五、實訓教學中的技術實現
下面以圖書館無線智能監控系統為例,介紹在實訓教學中添加溫濕度傳感模塊、3D加速度傳感模塊、RFID讀卡器等傳感模塊的操作步驟。
1.搭建傳感器的硬件連接
采用一個FB2530BB板,按電路要求連接溫濕度傳感模塊。
2.添加傳感器的程序并燒寫
①選擇溫濕度傳感器模塊宏定義;
②添加溫濕度傳感驅動文件hal_SHT1X.c;
③修改溫濕度傳感器的userID的值為01;
④燒寫程序進FB2530BB板;
⑤與FB2530EB板聯網并調試數據的發送和接收。
3.修改瀏覽器的節點配置
FB2530EB板通過串口連接電腦,在電腦上打開飛比瀏覽器,能夠成功連接,并出現新節點,此時通過修改節點的配置,就能夠成功在圖書館的場景圖上實現該節點的遠程監控。
4.重復以上步驟添加3D加速度傳感模塊、RFID讀卡器等其他傳感模塊
六、技術處理后的實訓教學效果
筆者在2016學年的《無線數據傳輸》課程實訓中采用了上述的技術處理方法,并在實訓過程中指導學生應用的步驟,學生們按上述方法步驟,在實訓中調試成功的圖書館無線智能監控系統如下圖所示,該系統已成功匯集了溫濕度傳感模塊、3D加速度傳感模塊、RFID讀卡器傳感模塊、人體紅外傳感模塊、車位傳感模塊、火焰傳感模塊等多種傳感模塊,其各自傳感器的數據發送和接收互不影響,并最終在系統中整體協調工作。
以下三方面體現了該技術處理的優勢:
1.簡便直觀地進行傳感器的搭建和調試
當需要添加一種新的傳感器進入系統的時候,學生只需要按操作指引選擇傳感器的宏定義、選擇添加傳感器的驅動文件、修改傳感器userID等幾個步驟,就能夠做好新傳感器的程序編譯和燒寫工作,問卷調查結果顯示:88%的學生都覺得非常簡便直觀。
2.激發對高新技術的學習興趣
高新技術往往意味著學習難度大,需要具備的知識技能要深厚,大多數中職學生由于畏難情緒,對高新技術的相關知識點學習興趣不大。現在采用了技術處理之后,學生把重點放在傳感器的搭建、調試和控制上,而不用太關注代碼的編寫方法,當多個傳感器組網成功并協調工作的時候,學生的成就感便由此得到大幅提升。問卷調查結果顯示:實訓前大部分學生的學習興趣一般,而實訓后學生的學習興趣大增。具體數據如下:
學習興趣非常大比較大一般幾乎無
實訓前6%26%48%20%
實訓后34%56%10%0
3.快速高效地實現不同情境下的系統組網
不同情境下的無線傳感系統需要連接多種不同的傳感器,據15屆畢業考入高職院校的學生黃某反饋,高職院校采用自行修改程序代碼的方法,搭建和調試8種以上傳感器的組網,學生通常要花三、四周的時間才能完成,且成功率不高。而我校學生在采用了技術處理之后,不管何種應用情境,不論需要多少種傳感器組網,都能快速地選擇和搭建,花費的時間和成功率具體數據如下:
組網時間
班別情景1∶4種
傳感器系統情景2∶8種
傳感器系統成功率
14級2班平均10個課時平均17個課時96%
14級3班平均12個課時平均20個課時93%
綜上所述,筆者針對中職學校的培養目標和中職學生的特點,進行了基于CC2530的實驗開發裝置編程技術的改進和處理,對項目工程里用到的多個傳感器部分的代碼采用了模塊化編寫,并成功應用于實訓教學,大大簡便了學生組建無線智能監控系統的過程,激發了學生的學習興趣和成就感,并大大提升了無線傳感器的組網效率。
責任編輯何麗華