无线传感器网络实验

上传人:软*** 文档编号:171109355 上传时间:2022-11-24 格式:DOCX 页数:8 大小:121.12KB
返回 下载 相关 举报
无线传感器网络实验_第1页
第1页 / 共8页
无线传感器网络实验_第2页
第2页 / 共8页
无线传感器网络实验_第3页
第3页 / 共8页
点击查看更多>>
资源描述
实验报告( 2016 / 2017 学年 第 1 学期)课程名称计算机通信与网络实验实验名称无线传感器网络单播、组播和广播实验实验时间2016年10月24日指导单位计算机学院实验教学中心指导教师李洋学生姓名 高明珠 班级学号 B13040907学院(系)计算机学院专 业软件工程实验报告实验名称无线传感器网络单播、组播和广播实验指导教师李洋实验类型综合实验学时4实验时间2016.10.24一、实验目的和要求掌握Z-stack协议栈的运行过程,掌握单播、组播、广播的方法及原理。 要求:1、成功运行CC2530广播实验;2、掌握Z-Stack协议栈每部分功能;3、小组完成组播实验,实现LED灯的分组闪烁;二、实验环境(实验设备)PC、 IAR、 CC2530三、实验原理及内容1、成功运行CC2530广播实验;(1)、广播的代码APP层为Z-Stack协议栈的应用层,是面向用户开发的。在这一层用户可以根据自 己的需求建立所需要的项目,添加用户任务,并通过调用API函数实现项目所需要的功 能。Broadcasts代码的结构是先调用初始化函数再调用任务处理函数,其中,任务处 理函数中调用的各个功能函数在源代码后部分给出实现。初始化函数:void Broadcast_Init( uint8 task_id )/任务初始化函数/任务ID号赋值SampleApp_TaskID = task_id;/网络状态为初始化状态SampleApp_NwkState = DEV_INIT;/传输序列号赋值SampleApp_TransID = 0;SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;SampleApp Periodic DstAddr.endPoint=SAMPLEAPP ENDPOINT;Broadcast_DstAddr.addr.shortAddr = 0x0000;SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;/设置任务IDSampleApp_epDesc.task_id = &SampleApp_TaskID;SampleApp_epDesc.simpleDesc=(SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;SampleApp_epDesc.latencyReq = noLatencyReqs;afRegister( &Broadcast_epDesc );RegisterForKeys( Broadcast_TaskID );/Init usarthalUARTCfg_t uartConfig;uartConfig.configured = TRUE; / 2x30 dont care - see uart driver.uartConfig.baudRate= HAL_UART_BR_9600;uartConfig.flowControl= FALSE;2x30 dont care - see uart driver./ 2x30 dont care - see uart driver./ 2x30 dont care 一 see uart driver.uartConfig.flowControlThreshold = 64; /=128;=128;=6;/ 2x30 dont care - see uart driver.=TRUE; / 2x30 dont care - see uart driver.=NULL;uartConfig.rx.maxBufSizeuartConfig.tx.maxBufSizeuartConfig.idleTimeoutuartConfig.intEnableuartConfig.callBackFuncHalUARTOpen (0, & uartConfig);#if defined ( LCD_SUPPORTED )HalLcdWriteString( Broadcast, HAL_LCD_LINE_1 );#endifZDO_RegisterForZDOMsg( Broadcast_TaskID, End_Device_Bind_rsp );ZDO_RegisterForZDOMsg( Broadcast_TaskID, Match_Desc_rsp );#if defined( IAR_ARMCM3_LM )/ Register this task with RTOS task initiator RTOS_RegisterApp( task_id, BROADCAST_RTOS_MSG_EVT );#endif 任务处理函数:uint16 Broadcast_ProcessEvent( uint8 task_id, uint16 events )/ 消息处理函数 /定义接收到的消息afIncomingMSGPacket_t *MSGpkt;afDataConfirm_t *afDataConfirm;/ Data Confirmation message fieldsbyte sentEP;ZStatus_t sentStatus;byte sentTransID;/ This should match the value sent(void)task id; / Intentionally unreferenced parameter/如果事件为系统消息事件if ( events & SYS_EVENT_MSG )/接收来自SampleApp_TaskID任务的消息MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );while ( MSGpkt )/当接收的消息有事件发生时,判断事件的类型switch ( MSGpkt-hdr.event )case ZDO_CB_MSG:Broadcast_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt );break;case KEY_CHANGE:Broadcast_HandleKeys( (keyChange_t *)MSGpkt)-state, (keyChange_t *)MSGpkt)-keys );break;case AF_DATA_CONFIRM_CMD:afDataConfirm = (afDataConfirm_t *)MSGpkt;sentEP = afDataConfirm-endpoint;sentStatus = afDataConfirm-hdr.status;sentTransID = afDataConfirm-transID;(void)sentEP;(void)sentTransID;/ Action taken when confirmation is received.if ( sentStatus != ZSuccess )/ The data wasnt delivered 一 Do somethingbreak;case AF_INCOMING_MSG_CMD:Broadcast_MessageMSGCB( MSGpkt );break;case ZDO_STATE_CHANGE:Broadcast_NwkState = (devStates_t)(MSGpkt-hdr.status);if (Broadcast_NwkState = DEV_ZB_COORD)osal_start_timerEx(Broadcast_TaskID,BROADCAST_SEND_MSG_EVT,BROADCAST_SEND_MSG_TIMEO UT );break;default:break;osal_msg_deallocate( (uint8 */-DZDAFFJCONFIS_FAN_ID=0x20FF /* Minimum, number of milliseconds to hold off the start of the dev in the network and the minimum delay between j Dining cycles )MSGpkt );/释放消息占据的存储空间/ NextMSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( Broadcast_TaskID );/ 轮循 查找消息队列里的消息知道消息队列为空return (events A SYS_EVENT_MSG);if ( events & BROADCAST_SEND_MSG_EVT )/判断发送超时/发送数据函数 Broadcast_SendTheMessage();osal_start_timerEx( Broadcast_TaskID,BROADCAST_SEND_MSG_EVT, BROADCAST_SEND_MSG_TIMEOUT );return (events A BROADCAST_SEND_MSG_EVT);#if defined( IAR_ARMCM3_LM )/ Receive a message from the RTOS queueif ( events & BROADCAST_RTOS_MSG_EVT )/ Process message from RTOS queue Broadcast_ProcessRtosMessage();/ return unprocessed eventsreturn (events A BROADCAST_RTOS_MSG_EVT);#endif/ Discard unknown events return 0;修改部分:|11 LJ Tools| f8v/253llxcl1 |D fSwC-oif i g .cfg| |闔 fSwCoo rd. cfg| |甌 fSvvEndp.v.cfg|1 D fEivvR.oiJter.cfq庄口 ZDO|11 口 ZMac|11 口 ZMa.inM+l 口 Output.修改函数中要发送的内容:/-DDEFAULT_0x00100000/20-0x14/-DDEFAULICHI-ILIST=0x00080000/19-0x13/-DDEFAULICHI-ILIST=0x00040000/18-0x127/-DDEFAULICHi-ILIST=0x00020000/17-0x117/-DDEFAULICHi-ILIST=0x00010000/16-0x10/-DDEFAULICHI-ILISI=0x00008000/15-0x0F/-DDEFAULICH-ILIST=0x00004000/14-0x0E/-DEFAULTCHAi-ILIST=0x00002000/13-0x0D/-DDEFAULTCHJii-ILIST=0x00001000/12-0x0Cf i L/U1L.1:iiu J-iX丄J丄 J 丄UA_IU.UUUUUf / W 丄 -丄-DDEFAULI_CHAt-ILIST=0x00000800/ 11 - OxOB修改 f8wConfig.cfg 文件中的-DZDAPP_CONFIG_PAN_ID 属性为自定义 PANID。/* Define the default FMI ID.* Setting this 匸o a value other than OxFFFF causes* ZDO_C0ORD to use this value as its FAN ID and* Routers and end devices 匸o join FAN with this ID(2Hfllpl-HQI-W. |H匸叱 l-BOWT |-0Dh*A# l-BOWLN. |-ElLliPia? I-HOSmwM l-HDSer-XJW I-BOTmIsI rig闊冋I 1听kHOZOT |-BlD2Ww |-HlD2W -BOCMpir曲 El N AWtarlmn-广播实验结果:Rbi.u戎ECOM串口助手V2.60STATUS : COM4 OPENED,9600,8丄无可 啤叫玄彳匚门81R;341SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;SampleApp_Periodic_DstAddr.addr.shortAddr = OxFFFF;上面这部分代码改为下方的代码:/设置寻址方式为组寻址方式SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;并在注册按键事件RegisterForKeys( SampleApp_TaskID )后加上代码:/设置组寻址的组ID号SampleApp_Group.ID = 0x0001;osal memcpy( SampleApp Group.name, Group 1, 7);/在APS层添加组 aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );2、掌握Z-Stack协议栈每部分功能;ZigBee协议栈结构包括物理层、MAC层、NWK (网络层)、APL (应用层)、应用支持 子层APS、应用程序框架AF、设备对象ZDO层。ZigBee的HAL层提供了开发板所有硬件设备(例如LED、LCD、KEY、UART等)的驱 动函数及接口。HAL文件夹为硬件平台的抽象层,包含commo n、in elude和target三个 文件夹。Z-Staek的NWK层负责的功能有:节点地址类型的分配、协议栈模板、网络拓扑结 构、网络地址的分配的选择等。ZDO (The ZigBee Device Objects,即 ZigBee 设备对象)层提供了 ZigBee 设备管理 功能,包括:网络建立,发现网络、加入网络、应用端点的绑定和安全管理服务。ZDP (ZigBee Device Profile,即ZigBee设备规范)描述了 ZDO内部一般性的ZigBee设备 功能是如何实现的。其定义了相关的命令和相应的函数。ZDP为ZDO和应用程序提供如 下功能:设备网络启动、设备和服务发现、终端设备绑定、绑定和取消绑定服务、网络 管理服务。四、实验小结(包括问题和解决方法、心得体会、意见与建议等)通过对本次实验内容的学习,我了解了 ZigBee是一种新兴的高可靠的、短距离的无 线数传网络。伴随着物联网技术的发展,ZigBee作为无线传感网络的一种重要技术标准, ZigBee在物联网中所占据的位置日益重要,较多的物联网应用都采用ZigBee技术。ZigBee安全、低功耗、低成本、短时延、网络容量大、可靠的特点,网络中的设备 按照各自作用的不同可以分为协调器节点、路由器节点和终端节点。ZigBee技术是一种 低数据传输速率的无线个域网,网络的基本成员称为设备。网络中的设备按照各自作用 的不同可以分为协调器节点、路由器节点和终端节点。其中,协调器是整个网络的中心,它的功能包括建立、维持和管理网络,分配网络 地址等;路由器主要负责路由发现、消息传输、允许其他节点通过它接入到网络;终端 节点通过ZigBee协调器或者ZigBee路由器接入到网络中,ZigBee终端节点主要负责数 据采集或控制功能,但不允许其他节点通过它加入到网络中。ZigBee网络分为4层,从 下向上分别为物理层、媒体访问控制层(MAC)、网络层(NWK )和应用层,协议栈的层与层 之间通过服务接入点(SAP)进行通信。Z-Stack协议栈是一个半开源的协议栈,其中MAC层和ZMAC层的源码没有全部开 源,关于他们的具体内容,在实际的工程开发中也不需要详细了解。“特定网络”模板的ID标识符被定义为“NETWORK_SPECIFIC”,且模板ID标识符为 0。 “ZigBee协议栈”模板的ID标识符被定义为“HOME_SPECIFIC”,且模板ID标识符 为1。其中“ZigBee协议栈”模板常用在智能家居的控制。“ZigBeePRO协议栈”模板的 ID标识符被定义为“ZigBeePRO_SPECIFIC”,且模板ID标识符为2。实验时,最好先设置自己网络的PANID号,否则新接入的节点会随机匹配网络,接 入不是自己建立的位置网络中(会出现自己的网络未打开,节点却已经因为接入网络而 亮绿灯的情况)。成绩批阅人日期
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!