郑群
目前国内基于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网的功能验证实验。对于高校或高职院校来说,学生在掌握了功能验证实验的原理后可自行编写程序开发新的应用,可以说目前的实验开发装置及其配套资源是能够适合高校教学的需求的。
二、中职实训教学的技术现状
中职教学现状:《无线数据传输》课程是我校物联网通信应用专业的核心课程,中职学校教学的培养目标主要是让学生具备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的实验开发装置编程技术的改进和处理,对项目工程里用到的多个传感器部分的代码采用了模块化编写,并成功应用于实训教学,大大简便了学生组建无线智能监控系统的过程,激发了学生的学习兴趣和成就感,并大大提升了无线传感器的组网效率。
责任编辑何丽华