06 基于Z-Stack的无线数据(温湿度)传输实验.doc_第1页
06 基于Z-Stack的无线数据(温湿度)传输实验.doc_第2页
06 基于Z-Stack的无线数据(温湿度)传输实验.doc_第3页
06 基于Z-Stack的无线数据(温湿度)传输实验.doc_第4页
06 基于Z-Stack的无线数据(温湿度)传输实验.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于Zstack的无线数据(温湿度)传输实验1.实验环境v 硬件:UP-CUP IOT-6410-II 型嵌入式物联网综合实验系统,配套温湿度传感器,PC 机。 v 软件:IAR Embedded Workbench for MCS-51 2.实验内容v 学习TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程。学习基于Zstack协议栈的无线传感器网络数据传输方法。有关Zstack2007协议栈的具体内容,请参考附录中相关说明及TI官方文档。v 使用IAR开发环境设计程序,ZStack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上,实现无线组网及通讯。即协调器自动组网,终端节点(附带温湿度传感器)自动入网,并采集温湿度数据,协调器接收到信息后将温湿度数据通过串口发送给PC计算机显示。以此实现基于Zstack协议栈的数据无线透明传输。3.实验原理 ZIGBEE(CC2530)模块LED硬件接口图5.5.1 LED硬件接口ZIGBEE(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。分别连接CC2530的P1_0、P、1_1两个IO引脚。从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。 温湿度传感器模块硬件接口图5.5.2 温湿度传感器硬件接口图5.5.3 ZIGBEE模块主板J5接口系统配套的温湿度传感器,与ZIGBEE模块的J5排线相连,这样我们可以知道,温湿度传感器模块的时钟线与ZIGBEE模块的P0_0 IO引脚相连,温湿度传感器的数据线与P0_1 IO引脚相连。因此我们需要在代码中将相应引脚进行输入输出控制模拟该传感器时序,来监测温湿度传感器状态。此部分原理及代码可以参考文档前面实验有关温湿度传感器实验部分。v SampleApp实验简介SampleApp实验是协议栈自带的ZIGBEE无线网络自启动(组网)样例,该实验实现的功能主要是协调器自启动(组网),节点设备自动入网。之后两者建立无线通讯,数据的发送主要有2中方式,一种为周期定时发送信息(本次实验采用该方法测试),另一种需要通过按键事件触发发送FLASH信息。由于实验配套ZIGBEE模块硬件上与TI公司的ZIGBEE样板有差异,因此本次实验没有采用按键触发方式。而是采用周期定时广播的方式来发送ZIGBEE节点端采集到的温湿度数据。接下来我们分析发送periodic信息流程(发送按键事件flash流程略)Periodic消息是通过ZigBee在组建/加入网络成功后,开启定时器来完成的,因此在SampleApp_ProcessEvent事件处理函数中有如下定时器代码: case ZDO_STATE_CHANGE:SampleApp_NwkState = (devStates_t)(MSGpkt-hdr.status);if ( (SampleApp_NwkState = DEV_ZB_COORD)| (SampleApp_NwkState = DEV_ROUTER)| (SampleApp_NwkState = DEV_END_DEVICE) )/ Start sending the periodic message in a regular interval. if(SampleApp_NwkState = DEV_END_DEVICE) /终端节点开启定时器 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); else / Device is no longer in the networkbreak;当设备加入到网络后,其状态就会变化,对所有任务触发ZDO_STATE_CHANGE事件,开启一个定时器。当定时时间一到,就触发periodic消息事件,触发事件SAMPLEAPP_SEND_PERIODIC_MSG_EVT,相应任务为SampleApp_TaskID,于是再次调用SampleApp_ProcessEvent()处理SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件,该事件处理函数调用SampleApp_SendPeriodicMessage()来发送周期信息。 if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) SampleApp_SendPeriodicMessage(); / Send the periodic message / Setup to send message again in normal period (+ a little jitter) osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF) ); return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); / return unprocessed events 因此我们只需要在节点模块端的SampleApp_SendPeriodicMessage函数中,加入温湿度采集后的数据,并通过AF_DataRequest()函数接口发送出去,即可实现温湿度数据的无线发送功能。当然同样需要在协调器模块端的SampleApp_MessageMSGCB()接收数据事件处理函数中,将捕获的温湿度数据处理后,以字符串的形式通过串口显示在PC机的终端中。关于无线数据(温湿度)传输关键代码分析void SampleApp_SendPeriodicMessage( void ) char temp_buf7; char humi_buf7; char i; char buf14; float humi,temp; SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; SampleApp_Periodic_DstAddr.addr.shortAddr = 0x0000; if(GetHumiAndTemp(&humi,&temp) = 0) HalLedBlink( HAL_LED_1, 4, 50, 270 ); sprintf(humi_buf, (char *)%f, humi); sprintf(temp_buf, (char *)%f, temp); for(i=0; ihdr.event ) / Received when a key is pressed case KEY_CHANGE: SampleApp_HandleKeys( (keyChange_t *)MSGpkt)-state, (keyChange_t *)MSGpkt)-keys ); break;case SPI_INCOMING_ZAPP_DATA: SampleApp_ProcessMTMessage(MSGpkt); MT_UartAppFlowControl (MT_UART_ZAPP_RX_READY); break; / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; / Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_t)(MSGpkt-hdr.status); if ( (SampleApp_NwkState = DEV_ZB_COORD) | (SampleApp_NwkState = DEV_ROUTER) | (SampleApp_NwkState = DEV_END_DEVICE) ) / Start sending the periodic message in a regular interval. if(SampleApp_NwkState = DEV_END_DEVICE) osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); else / Device is no longer in the network break; default: break; / Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Next - if one is available MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); / return unprocessed events return (events SYS_EVENT_MSG); / Send a message out - This event is generated by a timer / (setup in SampleApp_Init(). if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) / Send the periodic message SampleApp_SendPeriodicMessage(); / Setup to send message again in normal period (+ a little jitter) osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF) ); / return unprocessed events return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); / Discard unknown events return 0;SampleApp_ProcessEvent() 函数为应用层事件处理函数,当接收到网络数据(即发生AF_INCOMING_MSG_CMD事件)时,会调用SampleApp_MessageMSGCB( MSGpkt );处理函数,现在来分析这个函数void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16 flashTime; unsigned char *buf; HalLedBlink( HAL_LED_1, 4, 50, 270 ); switch ( pkt-clusterId ) case SAMPLEAPP_PERIODIC_CLUSTERID: buf = pkt-cmd.Data; HalUARTWrite(MT_UART_DEFAULT_PORT,rnTemp:, 7); HalUARTWrite(MT_UART_DEFAULT_PORT, buf, 7); HalUARTWrite(MT_UART_DEFAULT_PORT, Humi:, 10); HalUARTWrite(MT_UART_DEFAULT_PORT, buf+7, 7); break; case SAMPLEAPP_FLASH_CLUSTERID: flashTime = BUILD_UINT16(pkt-cmd.Data1, pkt-cmd.Data2 ); HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) ); break; 这个函数是协调器要完成的工作,对终端温湿度采集节点发过来的数据进行格式转换后发给串口终端。4.实验步骤v 使用配套 USB 线连接 PC 机和 UP-CUP IOT-6410-II 型设备,设备上电,确保打开 ZIEBEE 模块开关供电。v 使用CCD_SETKEY按键选择ZIGBEE仿真器要连接的ZIGBEE设备模块(根据LED指示灯判断)。v 将系统配套串口线一端连接PC机,一端连接到平台上靠近USB串口(RS232-2)上。v 打开物联网无线传感网络部分expzstack基于ZStack的无线数据(温湿度)传输实验ProjectszstackSamplesSampleAppCC2530DB里的工程,编译下载协调器和终端节点工程。v 网络组建成功后,通过CCD_SETKEY按键将PC机串口线连接到ZIGBEE协调器模块对应的串口上,打开串口终端,设置波特率为115200、8位、无奇偶校验、无硬件流模式,即可在超级终端上看到终端节点发送过来的温湿度数据。实验截图图5.5.6 串口终端显

温馨提示

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

评论

0/150

提交评论