版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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( taskjd,sys_event_msg
2、, 5000 );/设置闹钟uintl6 hello_processevent(uint8 task_id,uintl6 events)!if(events & sys_event_msg)haluartwrite ( hal_uart_port_0, ”hellornn,7);/串 口发送osai_start_timerex( taskjd,sys_event_msg,5000 );/设置闹钟return(events a sys_event_msg);2、将任务添加到osal操作系统(1) 添加任务头文件:#include”hello.h”(2) 添加任务的事件处理函数到tasks
3、arrf数组:hello_processevent(3) 添加任务初始化函数到 osallnittaskso;hello_init(task_id) ddd3、单击一编译4、进行硬件连接:5、单击_download下载6、打开串口调试助手查看运行结果:实验二:zigbee任务间通信一实验目的:1、掌握在zstack协议栈中创建多任务的方法2、掌握闹钟设置方法3、掌握任务间通信方法二实验内容:在协议栈中创建任务1和任务2。任务1给任务2发送字符串“zigbee消息,任务2收到消息后将收到的内容串口输出。实施过程:1、创建任务:study.c#include "study.h"
4、uint8 studytaskid = 0;void study_init( uint8 task_id )studytaskid = task一id;osal_set_event (studytaskid, sys_event_msg);/没置系统事件uintl6 study_processevent( uint8 task_id, uintl6 events )uint8 message;if(events & sys一event_msg)message = osal_msg_allocate( 10 );/开辟空间osal_memcpy( message, ”zigbeenn,
5、7 );osal_msg_send( zigbeetaskid, message );/发送消息osal_start_timerex( taskjd, sys_event_msg, 5000 );设置闹钟return(events 八 sys_event_msg);zigbee.c:include zigbee.h”uint8 zigbeetaskid = 0;void zigbee_init( uint8 task_id )zigbeetaskid = taskd;osal_set_event (zigbeetaskid, sys_event_msg);/设置事件uintl6 zigbee_
6、processevent( uint8 task_id, uintl6 events )uint8 message;if(events & sys_event_msg)message = osal_msg_receive( zigbeetaskid );/接收消息haluartwrite ( hal_uart_port_0, message, 7);/串 u 发送该消息osal_msg_deallocate( message );/释放交间retum(events a sys_event_msg);2、将任务添加到osal操作系统(1)添加任务头文件:#include”study.h”
7、#include”zigbee.h”(2)添加任务的事件处理函数到tasksarr数组:study_processevent,zigbee_ processevent添加任务初始化函数到 osalinittasks();study_init(taskid);zigbee_init(taskid);> ddd3、单击编译4、进行硬件连接:5、单击jjdownload 下载6、打开串口调试助手查看运行结果:实验三:基于cc2530的光照采集系统一实验目的:1、掌握zstack协议栈传感器驱动开发2、掌握星状网络拓扑结构的组建3、掌握zigbee无线通信原理及实现方法二实验内容:实现一终端节点
8、采集光照信息并将信息发送给协调器,协调器将采集数据通过申u发给pc机。1、将 sampleapp.c 和 samplcapp.h 文件添加到 workspace,修改 samplcapp.c 文件代码如下: uintl6 sampleapp_processevent( uint8 task一id, uintl6 events )afincomingmsgpacket_t *msgpkt;(void)taskd; / intentionally unreferenced parameter if ( events & sysevent一msg )msgpkt = (aflnconiing
9、msgpacket_t *)osal_msg_receive( sampleapp_taskid ); while (msgpkt)switch ( msgpkt->hdr.event)#if defined(zdo_coordinator) case cmd_ser1al_msg:sampleapp一uartmessage(uint8 *)msgpkt);halledblink( hal_led_1,2, 5(), 90 ); break;#endif#if defined(zdo_coordinator) | defined(control)/ received when a mes
10、sages is received (ota) for this endpoint case af_incoming_msg_cmd:samplcapp_mcssagcmsgcb( msgpkt); break;#endif/ received whenever the device changes state in the network case zdo_state_change:sampleapp一nwkstate = (dcvstatcs_t)(msgpkt->hdr.$tatus); if (sampleapp_nwkstate = dev_zb_coord)| (sample
11、app一nwkstate = dev_router)| (samplcapp_nwkstatc = dev一end一device)#ifdefined( zdo.coordinator)zigbeenode.nodemessage.headloj = sync;zigbccnodc.nodcmcssagc.hcadl = sync; /填 xj 数抛包同步炙 zigbeenode.nodemessage.saddr = nlme_getshortaddr();/获取 m 络地址zigbeenode.nodemessage.paddr = nlme_getcoordshortaddr();/获取
12、网络地址memcpy(zigbeenode.nodemessage.ieee,nlme_getextaddr(),8);/获取物理地 址zigbccnodc.nodcmcssagc.scndcyclc = 1;zigbeenode.nodemessage.nodedesc = coordinator;haluartwrite ( hal_uart_port_0, zigbeenode.txbuf, 17);halledblink( hal_led_2, 4, 5(), 250 ); /协调器逑立m络成功,led 灯闪烁 4次。#clifdcfincd( rtr_nwk ) &&
13、 (!dcfincd(zdo_coordinator) zigbeenode.nodemessage.head0 = sync;zigbeenode.nodemessage.headll j = sync; /填写数据 tild 步头 zigbeenode.nodemessage.saddr = nlme_getshortaddr(); /获取网络地址 zigbeenode.nodemessage.paddr = nlme_getcoordshortaddr(); /获取网络地址memcpy(zigbeenode.nodemessage.ieee,nlme_getextaddr(),8); /
14、获収物理地 址zigbeenode.nodemessage.sendcycle = i;zigbeenode.nodemessage.nodedesc = router;scnddata(zigbccnodc.txbuf, 0x0000, 18); /节点向协调器发送采集数据 hallcdblink( hal_led_2, 4, 50, 250 );#elsezigbeenode.nodemessage.headloj = sync;zigbeenode.nodemessage.headl = sync; /±真写数掘tli 同步火 zigbeenode.nodemessage.sa
15、ddr = nlme_gctshortaddr(); /获取 m 络地址 zigbeenode.nodemessage.paddr = nlme_getcoordshortaddr();/萩取网络地址memcpy(zigbeenode.nodemessage.ieee,nlme_getextaddr(),8);/获取物理地 址zigbeenode.nodemessage.sendcycle = 1;hallcdblink( hal_led_2, 4, 50, 250 ); osal_start_timerex( sampleapp_taskid,sampleapp_send_period1c_
16、msg_evt,sampleapp_send_periodic_msg_timeout);#endifelse/ device is no longer in the networkbreak;default:break;/ release the memory osal_msg_deallocate( (uint8 *)msgpkt);/ next - if one is availablemsgpkt = (aflncomingmsgpacket_t *)osal_msg_receive( sampleapp_taskid );/ return unprocessed events ret
17、urn (events 八 sys_event_msg);/ send a message out - this event is generated by a timer / (setup in samplcapp_init().#if !dcfincd(zdo_coordinator) if ( events & samfleapp_send_periodic_msg_evt)/ send the periodic message sampleapp_sendperiodicmessage();/scnddata(hxingh,0x0000,4);/xhx / setup to s
18、end message again in normal period (+ a little jitter)osal_start_timerex( samp1eapp_taskld, sampleapp_send_period1c_msg_evt, sampleapp-send_periodic_msg_timeout);/ return unprocessed eventsreturn (events a sampleapp_send_periodic_msg_evt);#endif/ discard unknown events return 0;2、每一组设置不同信道:打开fsconfi
19、g.cfg里面定义了 16个信道打开协调器配置文件fscoord.cfg,宏定义协调器节点-dzdo_coordinator3、编写光照传感器驱动代码:如下:/光照度信息采集uint8 lightlnfo(void)unsigned char light = 0;adccfg = 0x01;adccon1 = 0x33;adccon2 = 0xb7;adccon1 |= 0x40; light = adcl;light = adch;while(!(adcconl & 0x80); light = adcl; light = adch; return(light);4、编译5、连接硬件
20、:w个节点一个终端节点一个协调器节点,终端节点采集信息发送给协调器7、8、下载9、打开串丨1调试助手杏看结果:串口波特率校验位数裾位倡止位|c0m4 i1152c none5久5久00 00 仙 12 5a be 00 4b 5a be 00 4b 5a be 00 4b 5a be9d129d129d129d00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 0000 cl 0d 08 14 7b 0d 08 14 7b 0d 08 14 7b 0d 08 14 7b7d 2e 00 5a 2e 02 00 5a 2e 02 00 5a 2e
21、 02 00 5a 2e 0202 00 5a be 00 4b 5a be 00 4b 5a be 00 4b 5a be 00 4b4b 12 9d 00 12 00 9d 00 12 00 9d 00 12 00 9d 00 12 0000 01 00 14 01 0d 00 14 01 0d 00 14 01 0d 00 14 01 0dfc 00 7b 2e 08 00 7b 2e 08 00 7b 2e 08 00 7b 2e 08 005a 5a 02 00 5a 5a 02 00 5a 5a 02 00 5a 5a 02 00be4bbe4bbe4bbe4b9d 00 12 0
22、0 9d 00 12 00 9d 00 12 00 9d 00 12 0000 14 01 0d00010001140d140d00 14 01 0d7b 2e 02 08 00 5a 7b 2e 02 08 00 5a 7b 2e 02 08 00 5a 7b 2e 02 08 00 5a串口调试助孚 scomassistant v2.2 for win9x/nt/2000status: com4 opened?rx:233计数演零mail web宥空掊收区信i卜显不p自动演空 v十六进制显示i保存显示教据:c0mdata薄空重填发送的字吞/教椐 |http:/www. gjwtech. c
23、om-|-+六进制发送i手动发送|自动发送凋期改变后重迭)h,动发送周期:瓷秒i迭择发送文件11 a没有选择文件i发送文件实验四:无线路由一实验目的:1、掌握zstack协议栈传感器驱动开发2、掌握树状网络拓扑结构的组建3、掌握zigbee三种节点配置方法二实验内容:实现一终端节点采集光照信息并将信息发送给路由器节点,路由器节点再转发给协调器,协调器将采集到的数据通过申u发给pc机。1、实验代码:uintl6 sampleapp一processevent( uint8 task一id,uintl6 events )afincomingmsgpacket_t *msgpkt;(void)task
24、_id; / intentionally unreferenced parameter if( events & sys_event_msg )msgpkt = (aflncomingmsgpacket_t *)osal_msg_receive( sampleapp_taskid ); while (msgpkt)switch (msgpkt->hdr.cvcnt)#if defi ned(zdo_coor d in ator) case cmd_serial_msg:sampleapp_uartmessage(uint8 *)msgpkt);hallcdblink( hal_l
25、ed_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:sampleapp_messagemsgcb( msgpkt); break;#endif/ received whenever the device changes state in the network case zdo_state一change:sample a
26、pp一nwkstate = (devstates_t)(msgpkt->hdr.status); if (sampleapp_nwkstate = dev_zb_coord)| (samplcapp_nwkstatc = dev_router)| (sampleapp_nwkstate = dev_end_device)#if defined( zdo_coordinator )zigbeenode.nodemessage.head()l = sync;zigbeenode.nodemessage.headl = sync; /填写数据包同.步头 zigbeenode.nodemessa
27、ge.saddr = nlme_getshortaddr();/获取网络地址zigbeenode.nodemessage.paddr = nlme_getcoordshortaddr();/获取网络地址memc、py(zigbeenode.nodemessage.ieee,nlme_getextaddr(),8);/d:z*fljl!i址zigbeenode.nodemessage.sendcycle = 1;zigbeenode.nodemessage.nodedesc = coordinator;haluartwrite ( hal_uart_port_0, zigbeenode.txbu
28、f, 17 );halledblink( hal_led_2, 4, 50, 250 ); /协调器建立m络成功,led 灯闪烁 4次。#elifdefmed( rtr_nwk ) && (!defined(zdo_coordinator) zigbeenode.nodemessage.head0 = sync;zigbeenode.nodemessage.head f 11 = sync; /填写数据包 m 步义 zigbeenode.nodemessage.saddr = nlme_getshortaddr();/获取网络地址zigbeenode.nodemessage.p
29、addr = nlme_getcoordshortaddr(); /获取网络地址memcpy(zigbeenode.nodemessage.leee,nlme_getextaddr(),8); /获取物理地 址zigbeenode.nodemessage.sendcycle = 1;zigbeenode.nodemessage.nodedesc = router;senddata(zigbeenode.txbuf,0x0000, 18); /节点向协调器发送采集数据 halledblink( hal_led_2, 4, 50, 250 );#elsezigbeenode.nodemessage
30、.headloj = sync;zigbccnodc.nodcmcssagc.hcadl = sync; /填 xj 数抛包同步炙 zigbeenode.nodemessage.saddr = nlme_getshortaddr(); /戏収 m 络地址 zigbeenode.nodemessage.paddr = nlme_getcoordshortaddr();/获取网络地址memcpy(zigbeenode.nodemessage.ieee,nlme_getextaddr(),8);/获取物理地 址zigbccnodc.nodcmcssagc.scndcyclc = 1;halledbl
31、ink( haljled一2,4, 50, 250 ); osal_start_timerex( sampleapp_taskld,sampleapp send periodic msg evt, sampleapp_send_periodic_msg_timeout);#cndifelse/ device is no longer in the networkbreak;default:break;/ release the memoryosalmsg_deallocate( (uint8 *)msgpkt);/ next - if one is availablemsgpkt = (afi
32、ncomingmsgpackct_t *)osal_msg_rcccivc( samplcapp_taskid );/ return unprocessed events return (events a 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 perio
33、dic 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, samfleapf_send_periodic_msg_timeout);/ return unprocessed eventsreturn (event
34、s a sampleapp_send_periodic_msg_evt);#endif/ discard unknown events return 0; 2、硬件连接:设置三个节点3、打幵路巾器配s文件:fsrouter.cfg,宏定义路巾器节点-drtr_nwk4、分别将终端节点、路由节点、协调器节点程序下载到三块zigbee板中。运行结果如下:cc2x30 实验箱调试劻手 for hit (build 2011081002)kj端口 com4 z3s=i 关10调试窗口传感器数裾传感器名称距 外贞度则 红节照宿外体雰焰釋音行甶光雨红气烟火热语汍路>传感器值 3.125000%节点i
35、d 0xfb310xf874nr父节点idq0x00000x0000t汍行器控制汍行器输出节点wj汍行器输出节点bu汍行器输出节点ad汍行器输出节点bd iauthor:leajian接收:1799c:om4,115200<8<l<n 已打实验五:温度采集一实验目的:1、掌握zstack协议桟传感器驱动开发2、掌握树状网络拓扑结构的组建3、熟练掌握zigbee三种节点配置方法二实验内容:实现一终端节点采集温度信息并将信息发送协调器,协调器将采集到的数据通过串u发给pc机。温度传感器代码:void read_data(uint8 * psensorvalue)uint8 a,b,c;intj=o;init_1820();"复位 18b20write_1820(0xcc);/发出转换命令搜索器件w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理实践中的护理措施
- 康复辅助技术咨询师安全生产能力考核试卷含答案
- 水上起重工保密测试考核试卷含答案
- 高压成套设备装配配线工操作安全模拟考核试卷含答案
- 2026年新科教版高中高一历史上册第一单元先秦政治文化特征卷含答案
- 汽车装调工安全宣传测试考核试卷含答案
- 食品安全管理师班组协作能力考核试卷含答案
- 汽轮机总装配调试工变更管理水平考核试卷含答案
- 2026年新科教版初中七年级科学上册第三单元地球运动昼夜四季卷含答案
- 柔性版制版员改进考核试卷含答案
- 2026恒丰理财有限责任公司社会招聘备考题库含答案详解(完整版)
- 2026重庆两山建设投资集团有限公司招聘8人考试备考试题及答案解析
- 2026年学校教辅岗位考试试题
- 2026年民航货运员技能考试试题及答案
- 2026年西医医师定期考核能力提升B卷题库附答案详解(B卷)
- 2026浙江杭州市属监狱警务辅助人员招聘85人笔试备考试题及答案详解
- 2026年度哈尔滨“丁香人才周”(春季)松北区乡镇卫生院招聘医学毕业生12人笔试备考试题及答案详解
- 2026年电气工程及其自动化试题预测试卷含答案详解【研优卷】
- 2026海南三亚市崖州区社会招聘事业单位工作人员(含教师)77人(第1号)笔试备考题库及答案解析
- 2026安徽滁州全椒县人民法院招聘政府购买服务工作人员12人考试参考题库及答案解析
- 部编版四年级语文下册期中试卷+ 答题卡(含答案)
评论
0/150
提交评论