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