希望微控工作室_第1页
希望微控工作室_第2页
希望微控工作室_第3页
希望微控工作室_第4页
希望微控工作室_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XWWK-CC2530AZigbee组网实验说明书 /2012511、ZigBee2007/PRO协 Zigbee的节点类 ZigBee2007/PRO协 2、Zigbee协议组网试验准 协议及软件的安 协议栈概 编译与连 3、组网试 试验1:协调器与终端节点组网试 试验2:协调器、路由器和终端节点组网试 试验3:路由功能测试实验 4、程序解 传感器终端节点 协调器、路由器节点 5、程序修改流 修改 修改 修改 修改SensorEB(传感器终端节点 Zigbee的节点类ZigBee中介使协调器节点和终端节点通信,实现路由通信功能,同时路由器具有传感ZigBee2007/PRO无线传感器网络是基于最新IEEE802.15.4技术标准和有关于ZigBee2007/PRO的信息,请参考相关书籍和网上资料本店提供的Zigbee协议版本为ZStack-CC2530-2.3.0-1.4.0。该版本协议栈为用户平台的硬件设计修改程序,从而完成Zigbee协议测试和学习的目的。下面以传感器组网试验为例,详细说明Zigbee2007协议栈的初始化、组网、绑Zigbee协调器、路由器以及终端节点的概念。同时,通过对协议及软件1:可以将本店提供的协议栈(XWWK-CC2530A平台直接使用)在C:\TexasInstruments即可。2ZStack-CC2530-2.3.0-1.4.0.exe,安装协议文件,所有步骤采用默体修改方法参考第5部分。2双击Setup_ZigBee_Sensor_Monitor_1.2.0.exe,安装传感器监视软件,所有步骤采用默认设置。安装完成后,桌面上有“Z-SensorMonitor”的快捷方式。协议栈概.doc, APP。DemoCollector.c和DemoSensor.c是传感器组配置,主要包括按键、指示灯、通信、显示、定时器以及驱动等文件。其中MAC-Zmac:ZigbeeMAC:MediumAccessControl(控制层)MT:MonitorTestEventLoop(监视事件循环)NWK:NetWork(网络层)OSAL:OperatingSystem ionLayer.(OS抽象层)Profile:ApplicationFramework(应用框架,用于描述设备)Security:SecurityServiceProvider(SSP)interface(安全服务接口)Service:Zigbeeand802.15.4deviceaddressutilityfunctions(设备地址通用函数)Tools:配置文件,用于配置Zigbee设备ZDO:ZigbeeDeviceObject(Zigbee设备对象Zmac:ZStackMACPortingLayer(MAC层端口层ZmainMain文件和评估板接口文件,如按键处理、Output:输出文件夹,主要是编译后生成的.r51编译与连选择Project->RebuildAll重新编译所有文件,等待编译完成,需要十几秒的时1次后,灭掉,随后,两个指示灯开始闪烁,等待加拔掉仿真器USB线,断开仿真器与模块的连接,将模块插入电池板,并关掉电点击APP-〉DemoCollector.c-〉设置设备类型,这里选择 Project->RebuildAll重新编译所有文件,等待编译完成,需要十几秒的时间。按下Debug,程序写入CC2530,按下“Go”程序运行。1

1按按按协调仅在协调器模式时可用,按K1后,协调器打GatewayK3路由若设置为路由器,不能按K1,当然,如果路由器由电池板供电,则K1K3后,打开报先不要按下按键,拔掉仿真器USB线,断开仿真器与模块的连接,将模块插入CC2530主板,使用USB线连接主板和计算机(主板串口为虚拟USB串口,若没有安装驱动,请参考XWWK-CC2530A模块使用说明书)试验1:协调器与终端节点组网试Z-SensorMonitorCollectorEB的协调器节点插入主板,连接主板和计算机,等待电脑识别设备后,选择虚拟USB串口。打开主板电源开关(USB一侧,待模块两个指示K3K1GateWay模式,并允指示灯闪烁1次后,两个指示灯快速闪烁,说明节点已经加入网络。Key按键,打开终端节点的发送报告功能,等待几秒钟,温度试验2:协调器、路由器和终端节1CollectorEB。并更改节点击APP-〉DemoCollector.c-〉设置设备类型,这里选择 选择Project->RebuildAll重新编译所有文件,等待编译完成,需要十几秒的时间。按下Debug,程序写入CC2530,按下“Go”程序运行。路由器程序执行结果:程序首次执行后,模块被设置为路由器,红灯闪烁1次具体按键设置参考表1试验3:路由功能测2的基础上,断开其中一个终端节点的电源,并卸掉其天线(为了测试5m左右的距离,终端节点放在2(3个节点2.2ZMain.cDemoCollector.cDemoSensor.chal_key.c、hal_led.cOnBoard.c等。//Turnoffinterruptsosal_int_disable(INTS_ALL);//InitializationforboardrelatedstuffsuchasLEDsHAL_BOARD_INIT();//HAL_BOARD_CC2530EB_REV17版本初始化硬件Makesuresupplyvoltageishighenoughtorunzmain_vdd_check();//电压检测//InitializeboardI/OInitBoard(OB_COLD);//InitialzeHALdrivers//InitializeNVSystemosal_nv_init(NULL//InitializetheMAC//Determinetheextendedaddress//InitializebasicNVitems#ifndef//SincetheAFisn'tatask,callit'sinitializationroutine//Initializetheoperatingsystem//Allowinterruptsosal_int_enable(INTS_ALL);//FinalboardinitializationInitBoard(OB_READY//Displayinformationaboutthisdevice/*DisplaythedeviceinfoontheLCD*/#ifdefLCD_SUPPORTED#ifdef/*IfWDTisused,thisisagoodplacetoenableit.*/WatchDogEnable(WDTIMX);P1SEL&=0xFB;//P1.2,1.3P1DIR&=0xFB;CorrFlag=osal_start_system();//NoReturnfrom传感器终端节点DemoSensor.c,按键处理函数,承担了发送数据报告的功voidzb_HandleKeys(uint8shift,uint8keys{//Shiftisusedtomakeeachbutton/switchdualpurpose.if(shift){if(keys&HAL_KEY_SW_1{}if(keys&HAL_KEY_SW_2{}if(keys&HAL_KEY_SW_3{}if(keys&HAL_KEY_SW_4{}}{if(keys&HAL_KEY_SW_1{}if(keys&HAL_KEY_SW_2{}//if(keys&HAL_KEY_SW_3ifkeys&HAL_KEY_SW_7{//Startreporting,按下按键后,开始发送报告osal_set_eventsapi_TaskIDMY_REPORT_EVTreportState=TRUE;}if(keys&HAL_KEY_SW_4{}}}hal_key.c中的voidHalKeyPollvoid)voidHalKeyPoll{uint8keys=if((HAL_KEY_JOY_MOVE_PORT&HAL_KEY_JOY_MOVE_BIT)) /*KeyisactiveHIGH*/{keys=}if //对应主板的{keys|=}if(HAL_PUSH_BUTTON3对应主板的K3Key{keys|=}/*Ifinterruptsarenotenabled,previouskeystatusandcurrentkey*arecomparedtofindoutifakeyhaschangedif{if(keys=={/*Exit-sincenokeyshavechanged*/}/*Storethecurrentkeysforcomparationnexttime*/halKeySavedKeys=keys;}{/*Keyinterrupthandledhere}/*InvokeCallbackifnewkeysweredepressedif(keys&&(pHalKeyProcessFunction)){(pHalKeyProcessFunction)(keys,}}消息由Onboard.cvoidOnBoard_KeyCallbackuint8keysuint8state发送,若协调器、路由器节点对于协调器或者路由器节点主要在文件DemoCollector.c,按键处理函数,承担voidzb_HandleKeys(uint8shift,uint8keys{staticuint8allowBind=FALSE;staticuint8allowJoin=TRUE;uint8logicalType;//staticuint8RouterFlag=TRUE;//默认为路由器,主板设置了跳线,可以在调整软件的基础上进行路由器和协调器的选择,这里了代码,主要考虑路由器使用时//RouterFlag=HAL_TX_SET读跳线设置,C为协调器,R//Shiftisusedtomakeeachbutton/switchdualif(shift){if(keys&HAL_KEY_SW_1{}if(keys&HAL_KEY_SW_2{}if(keys&HAL_KEY_SW_3{}if(keys&HAL_KEY_SW_4{}}{#ifdefifkeys&HAL_KEY_SW_7K3后,设置为协调器,#ifdefROUTER if(keys&HAL_KEY_SW_1){if(appState== {//Key1startsdeviceasalogicalType=ZG_DEVICETYPE_COORDINATOR; //Resetthedevicewithnewconfiguration}}//if(keys&HAL_KEY_SW_2ifkeys&HAL_KEY_SW_6)//K1Gateway{allowBind^=1;if(allowBind){//TurnONAllowBindmodeinfinitlyzb_AllowBind(0xFF);HalLedSet(HAL_LED_2,HAL_LED_MODE_ON//ThisnodeisthegatewaynodeisGateWay=TRUE;//Updatethe#ifdefined(LCD_SUPPORTEDHalLcdWriteString("GatewayMode",HAL_LCD_LINE_2);}{//TurnOFFAllowBindmodeinfinitlyzb_AllowBind(0x00);HalLedSet(HAL_LED_2,HAL_LED_MODE_OFFisGateWay=//Updatethe#ifdefined(LCD_SUPPORTEDHalLcdWriteString("Collector",HAL_LCD_LINE_2}}#ifdefCOORDINATOR若设置为协调器,则相当于什么也没做。if(keys&HAL_KEY_SW_3)#ifdefifkeys&HAL_KEY_SW_7K3{//Startosal_set_event(sapi_TaskID,MY_REPORT_EVT}if(keys&HAL_KEY_SW_4{//Key4isusedtocontrolwhich//thatcanacceptjoinrequestsallowJoin^=1;{}else}}}}/*1-Green/*1-#define #define #define #define #ifdefined/*2-Red/*2-红色指示灯#define #define #define #define /*3-黄色指示灯#define #define #define //#defineLED3_POLARITY #defineLED3_POLARITY ACTIVE_LOW修改/*S1/*对应主板按键K1#ifdefined//#definePUSH1_POLARITY #definePUSH1_POLARITY /*JoystickCenterPress/*对应主板按键K2#define #define //#definePUSH2_POLARITY #definePUSH2_POLARITY /*自定义按键/*主板按键K3#define #define #define /*自定义跳线/*主板跳线#define #define #define #define (PUSH3_POLARITY(PUSH3_SBIT))//键#define (PUSH3_POLARITY(if{keys|=}//returnreturn0;//因为主板没有采用Joy键,所以该按增加P1SEL&=0xFB;P1DIR&=0xFB;P1.2//P1.3osal_start_system();//NoReturnfrom修改SensorEB(传感器终端节点1Onboard.c的函数voidOnBoard_KeyCallback(uint8keys,uint8state//shift((keys&HAL_KEY_SW_6)truefalseshift=0;//替换2、修改DemoSensor.c的函数voidzb_HandleKeysuint8shift,uint8keys//if(keys&HAL_KEY_SW_3)if(keys&HAL_KEY_SW_7)//替换,实际就是电池板的Key修改CollectorEB(协调器节点1DemoCollector.cvoidzb_HandleKeys(uint8shift,uint8keys voidzb_HandleKeys(uint8shift,uint8keys{staticuint8allowBind=FALSE;staticuint8allowJoin=TRUE;uint8logicalType;//staticuint8RouterFlag=TRUE//RouterFlagHAL_TX_SET读跳线设置,C为协调器,R//Shiftisusedtomakeeachbutton/switchdualpurpose.if(shift){if(keys&HAL_KEY_SW_1{}if(keys&HAL_KEY_SW_2{}if(keys&HAL_KEY_SW_3{}if(keys&HAL_KEY_SW_4{}}{#ifdefifkeys&HAL_KEY_SW_7当按下K3后,设置为协调器,#ifdefif(keys&HAL_KEY_SW_1){if(appState== {//Key1startsdeviceasalogicalType=ZG_DEVICETYPE_COORDINATOR;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论