




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ZigBee无线开发试讲试做课堂内容计算机与通信工程学院邢海霞实验一:ZigBee任务创建与添加一 实验目的:1、 掌握OSAL操作系统运行机制2、 掌握任务创建步骤及添加方式二 实验内容:创建一任务实现串口输出 “hello”字符串到PC机,并将该任务添加到OSAL操作系统。任务实施过程1、创建任务:新建一hello.c文件#include "hello.h"uint8 HelloID;void Hello_Init(uint8 task_id) HelloID = task_id;/获取任务ID号 osal_start_timerEx( task_id, SYS_EVE
2、NT_MSG, 5000 );/设置闹钟uint16 Hello_ProcessEvent(uint8 task_id, uint16 events) if(events & SYS_EVENT_MSG) HalUARTWrite ( HAL_UART_PORT_0, "Hellorn", 7);/串口发送 osal_start_timerEx( task_id, SYS_EVENT_MSG, 5000 );/设置闹钟 return(events SYS_EVENT_MSG);2、 将任务添加到OSAL操作系统(1) 添加任务头文件:#include”hello.h
3、”(2) 添加任务的事件处理函数到tasksArr数组:Hello_ProcessEvent(3) 添加任务初始化函数到osalInitTasks();Hello_Init(task_id)3、 单击编译4、 进行硬件连接: 5、 单击download下载6、 打开串口调试助手查看运行结果: 实验二:ZigBee任务间通信一 实验目的:1、 掌握在zStack协议栈中创建多任务的方法2、 掌握闹钟设置方法3、 掌握任务间通信方法二 实验内容:在协议栈中创建任务1和任务2。任务1给任务2发送字符串“ZigBee”消息,任务2收到消息后将收到的内容串口输出。实施过程:1、创建任务:Study.c#
4、include "study.h"uint8 StudyTaskID = 0;void Study_Init( uint8 task_id ) StudyTaskID = task_id; osal_set_event (StudyTaskID, SYS_EVENT_MSG);/设置系统事件uint16 Study_ProcessEvent( uint8 task_id, uint16 events ) uint8 *message; if(events & SYS_EVENT_MSG) message = osal_msg_allocate(10 );/开辟空间
5、osal_memcpy( message, "ZigBeen", 7 ); osal_msg_send( ZigBeeTaskID, message );/发送消息 osal_start_timerEx( task_id, SYS_EVENT_MSG, 5000 );设置闹钟 return(events SYS_EVENT_MSG);ZigBee.c:#include "ZigBee.h"uint8 ZigBeeTaskID = 0;void ZigBee_Init( uint8 task_id ) ZigBeeTaskID = task_id; osa
6、l_set_event (ZigBeeTaskID, SYS_EVENT_MSG);/设置事件uint16 ZigBee_ProcessEvent( uint8 task_id, uint16 events ) uint8 *message; if(events & SYS_EVENT_MSG) message = osal_msg_receive( ZigBeeTaskID );/接收消息 HalUARTWrite ( HAL_UART_PORT_0, message, 7);/串口发送该消息 osal_msg_deallocate( message );/释放空间 return(e
7、vents SYS_EVENT_MSG);2、 将任务添加到OSAL操作系统(1)添加任务头文件:#include”study.h”#include”ZigBee.h”(2)添加任务的事件处理函数到tasksArr数组:Study_ProcessEvent,ZigBee_ ProcessEvent(3)添加任务初始化函数到osalInitTasks();Study_Init(taskID); ZigBee_Init(taskID);3、 单击编译4、进行硬件连接:5、单击download下载6、打开串口调试助手查看运行结果:实验三:基于CC2530的光照采集系统一 实验目的:1、 掌握zSta
8、ck协议栈传感器驱动开发2、 掌握星状网络拓扑结构的组建3、 掌握ZigBee无线通信原理及实现方法二 实验内容:实现一终端节点采集光照信息并将信息发送给协调器,协调器将采集数据通过串口发给PC机。1、 将SampleApp.c和SampleApp.h文件添加到workspace,修改SampleApp.c文件代码如下:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; (void)task_id; / Intentionally unreferenced pa
9、rameter if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt->hdr.event ) #if defined(ZDO_COORDINATOR) case CMD_SERIAL_MSG: SampleApp_UartMessage(uint8 *)MSGpkt); HalLedBlink( HAL_LED_1, 2, 50, 90 ); break;#endi
10、f#if defined(ZDO_COORDINATOR) | defined(CONTROL) / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break;#endif / Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_
11、t)(MSGpkt->hdr.status); if ( (SampleApp_NwkState = DEV_ZB_COORD) | (SampleApp_NwkState = DEV_ROUTER) | (SampleApp_NwkState = DEV_END_DEVICE) ) #if defined( ZDO_COORDINATOR ) ZigBeeNode.NodeMessage.head0 = SYNC; ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_Get
12、ShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_GetCoordShortAddr();/获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8);/获取物理地址 ZigBeeNode.NodeMessage.SendCycle = 1; ZigBeeNode.NodeMessage.NodeDesc = COORDINATOR; HalUARTWrite ( HAL_UART_PORT_0, ZigBeeNode.TxBuf, 17 ); HalLedBlin
13、k( HAL_LED_2, 4, 50, 250 ); /协调器建立网络成功,LED灯闪烁4次。 #elif defined( RTR_NWK ) && (!defined(ZDO_COORDINATOR) ZigBeeNode.NodeMessage.head0 = SYNC; ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_GetShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_GetCoord
14、ShortAddr(); /获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8); /获取物理地址 ZigBeeNode.NodeMessage.SendCycle = 1; ZigBeeNode.NodeMessage.NodeDesc = ROUTER; SendData(ZigBeeNode.TxBuf, 0x0000, 18); /节点向协调器发送采集数据 HalLedBlink( HAL_LED_2, 4, 50, 250 ); #else ZigBeeNode.NodeMessage.head0 = SYNC;
15、 ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_GetShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_GetCoordShortAddr();/获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8); /获取物理地址 ZigBeeNode.NodeMessage.SendCycle = 1; HalLedBlink( HAL_LED_2, 4
16、, 50, 250 ); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); #endif 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 = (afInc
17、omingMSGPacket_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 !defined(ZDO_COORDINATOR) if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) / Send the peri
18、odic message SampleApp_SendPeriodicMessage(); /SendData("xing",0x0000,4);/xhx / 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 ); / return unprocessed events return
19、(events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); #endif / Discard unknown events return 0;2、每一组设置不同信道:打开f8config.cfg里面定义了16个信道 打开协调器配置文件f8coord.cfg,宏定义协调器节点-DZDO_COORDINATOR3、编写光照传感器驱动代码:如下:/光照度信息采集uint8 LightInfo(void) unsigned char light = 0; ADCCFG = 0x01; ADCCON1 = 0x33; ADCCON2 = 0xB7; ADCCON1 |= 0x40
20、; light = ADCL; light = ADCH; while(!(ADCCON1 & 0x80); light = ADCL; light = ADCH; return(light);4、 编译5、 连接硬件:两个节点一个终端节点一个协调器节点,终端节点采集信息发送给协调器6、7、8、 下载9、 打开串口调试助手查看结果:实验四:无线路由一 实验目的:1、 掌握zStack协议栈传感器驱动开发2、 掌握树状网络拓扑结构的组建3、 掌握ZigBee三种节点配置方法二 实验内容:实现一终端节点采集光照信息并将信息发送给路由器节点,路由器节点再转发给协调器,协调器将采集到的数据通过
21、串口发给PC机。1、 实验代码:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; (void)task_id; / Intentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) switch ( MSGpk
22、t->hdr.event ) #if defined(ZDO_COORDINATOR) case CMD_SERIAL_MSG: SampleApp_UartMessage(uint8 *)MSGpkt); HalLedBlink( HAL_LED_1, 2, 50, 90 ); break;#endif#if defined(ZDO_COORDINATOR) | defined(CONTROL) / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleA
23、pp_MessageMSGCB( MSGpkt ); break;#endif / 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) )
24、 #if defined( ZDO_COORDINATOR ) ZigBeeNode.NodeMessage.head0 = SYNC; ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_GetShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_GetCoordShortAddr();/获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8);/获取物
25、理地址 ZigBeeNode.NodeMessage.SendCycle = 1; ZigBeeNode.NodeMessage.NodeDesc = COORDINATOR; HalUARTWrite ( HAL_UART_PORT_0, ZigBeeNode.TxBuf, 17 ); HalLedBlink( HAL_LED_2, 4, 50, 250 ); /协调器建立网络成功,LED灯闪烁4次。 #elif defined( RTR_NWK ) && (!defined(ZDO_COORDINATOR) ZigBeeNode.NodeMessage.head0 = SY
26、NC; ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_GetShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_GetCoordShortAddr(); /获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8); /获取物理地址 ZigBeeNode.NodeMessage.SendCycle = 1; ZigBeeNode.NodeMessag
27、e.NodeDesc = ROUTER; SendData(ZigBeeNode.TxBuf, 0x0000, 18); /节点向协调器发送采集数据 HalLedBlink( HAL_LED_2, 4, 50, 250 ); #else ZigBeeNode.NodeMessage.head0 = SYNC; ZigBeeNode.NodeMessage.head1 = SYNC; /填写数据包同步头 ZigBeeNode.NodeMessage.SAddr = NLME_GetShortAddr(); /获取网络地址 ZigBeeNode.NodeMessage.PAddr = NLME_G
28、etCoordShortAddr();/获取网络地址 memcpy(ZigBeeNode.NodeMessage.IEEE,NLME_GetExtAddr(),8); /获取物理地址 ZigBeeNode.NodeMessage.SendCycle = 1; HalLedBlink( HAL_LED_2, 4, 50, 250 ); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); #endif else / Device i
29、s 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 e
30、vent is generated by a timer / (setup in SampleApp_Init().#if !defined(ZDO_COORDINATOR) if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) / Send the periodic message SampleApp_SendPeriodicMessage(); /SendData("xing",0x0000,4);/xhx / Setup to send message again in normal period (+ a littl
31、e jitter) osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); / return unprocessed events return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); #endif / Discard unknown events return 0;2、硬件连接:设置三个节点3、打开路由器配置文件:f8Router.cfg,宏定义路由器节点-DRTR_NWK4、分别将终端
32、节点、路由节点、协调器节点程序下载到三块ZigBee板中。运行结果如下:实验五:温度采集一 实验目的:1、 掌握zStack协议栈传感器驱动开发2、 掌握树状网络拓扑结构的组建3、 熟练掌握ZigBee三种节点配置方法二 实验内容:实现一终端节点采集温度信息并将信息发送协调器,协调器将采集到的数据通过串口发给PC机。温度传感器代码:void read_data(UINT8 * pSensorValue) UINT8 temh,teml; UINT8 a,b,c; int j=0; init_1820(); /复位18b20 write_1820(0xcc); / 发出转换命令 搜索器件 write_1820(0x44); /启动 /Delay_nus(50000); for(j=20;j>1;j-) Delay_nus(500); init_1820(); write_1820(0xcc); write_1820(0xbe); teml=read_1820(); /读数据 temh=read_1820(); if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸浆筛选与净化设备的运行与维护考核试卷
- 海洋油气开采中的海洋生物多样性保护考核试卷
- 纸板容器生命周期分析考核试卷
- 终端设备在水下通信技术考核试卷
- 林业与地方特色农产品的区域品牌营销考核试卷
- 纤维素纤维在声学材料中的应用考核试卷
- 种子种苗在气候变化适应中的作用考核试卷
- 玻璃纤维增强型塑料水处理设备的制备考核试卷
- 畜禽智能养殖环境监测与调控系统考核试卷
- 南京旅游职业学院《交通运输工程前沿讲座》2023-2024学年第二学期期末试卷
- 行政管理本科毕业论文-乡镇政府公共政策执行力存在的问题及对策研究
- 政治薪火相传的传统美德教学设计 2024-2025学年七年级道德与法治下册(统编版2024)
- 2024年度企业所得税汇算清缴最 新税收政策解析及操作规范专题培训(洛阳税务局)
- 2024-2025学年七年级数学北师大版(2024)下学期期中考试模拟卷A卷(含解析)
- 附件6工贸高风险企业高危领域较大以上安全风险管控清单
- 关于台球的课件
- 2025年武汉二调数学试题及答案
- 2025年保安证考试答题技巧与试题答案
- 2025年食品安全员试题及答案
- 中级宏观经济学知到课后答案智慧树章节测试答案2025年春浙江大学
- 第19课《十里长街送总理》 统编版语文(五四学制)六年级上册
评论
0/150
提交评论