《物联网系统设计与应用开发》课件5-6 任务6 智能LED控制_第1页
《物联网系统设计与应用开发》课件5-6 任务6 智能LED控制_第2页
《物联网系统设计与应用开发》课件5-6 任务6 智能LED控制_第3页
《物联网系统设计与应用开发》课件5-6 任务6 智能LED控制_第4页
《物联网系统设计与应用开发》课件5-6 任务6 智能LED控制_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

目录任务目标01任务要求02任务实施03任务目标(1)掌握ZigBee无线通信。(2)掌握信息采集与设备控制的智能联动。任务要求本任务实现光照传感器和灯的智能联动功能,当采集的光照值低于设定的阈值,自动开灯,否则关灯。灯做为负载接在继电器上,通过控制继电器的吸合和断开控制灯的通断。我们采用星型网络,使用节点1连接光照传感器,节点2连接LED灯模块,协调器负责转发信息,功能设置如图5-37所示。协调器节点

2节点

1图5-37智能灯具控制结构图(1)协调器编程:关键代码如下:/*消息处理函数*/voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){

uint16lightval=0;if(!memcmp(pkt->cmd.Data,"light",5)){lightval=pkt->cmd.Data[5];//保存光强度值

lightval|=((uint16)pkt->cmd.Data[6])<<8;if(lightval<20){Senddata_MSG(ledon);}else{Senddata_MSG(ledoff);}}elseif(!memcmp(pkt->cmd.Data,"Eaddr",5)){//保存LED灯设备节点信息

endAddr=pkt->cmd.Data[5];endAddr|=((uint16)pkt->cmd.Data[6])<<8;}}任务实施(1)协调器编程:/*无线发送数据给终端节点2*/voidSenddata_MSG(uint8*coding){afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=endAddr;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,6,coding,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);}任务实施上述代码实现功能:协调器收到无线数据后,判断光照值,如果小于设定好的阈值,就以单播方式发送关灯命令“ledon”给终端节点2,否则发送“ledoff”。任务实施(2)终端节点1编程。首先将光照传感器BH1750驱动模块light.c和light.h文件复制到工程Source文件夹下,在协议栈的APP目录树下点击右键—Add,添加light.c和light.h文件。在终端节点1EndDevice1.c文件中,找到任务初始化函数,函数后面添加红色部分代码:

/*任务初始化函数*/voidGenericApp_Init(bytetask_id)

{。。。afRegister(&GenericApp_epDesc);

P0SEL&=~(1<<5);//光照传感器此管脚应置1才能正常工作,但在协议栈中此处被拉低P0DIR|=1<<5;//所以需要手动重新置1APCFG&=~(1<<5);P0_5=1;}/*事件处理函数*/UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){。。。caseZDO_STATE_CHANGE:GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if(GenericApp_NwkState==DEV_END_DEVICE){osal_set_event(GenericApp_TaskID,SEND_MSG_CODING);//入网成功后注册发送数据事件P1_0=1;P1_1=1;

。。。

}}任务实施/*事件处理函数*/UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){if(events&SEND_MSG_CODING){uint16light;light=get_light();lightval[5]=(uint8)light;lightval[6]=(uint8)(light>>8);GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_MSG_CODING,1000);//一秒后再次采集光照强度并发给协调器return(events^SEND_MSG_CODING);}return0;}任务实施/*无线发送数据*/voidGenericApp_SendTheMessage(void){afAddrType_tmy_DstAddr;//单播模式发送给协调器

my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,7,lightval,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);}任务实施(3)终端节点2编程:在任务初始化函数后面添加LED灯控制的管脚的初始化代码/*任务初始化函数*/voidGenericApp_Init(bytetask_id){

。。。

APCFG&=~(1<<5);

P0SEL&=~(1<<5);//初始化LED灯控制的管脚

P0DIR|=1<<5;}任务实施终端节点2:事件处理函数中,节点收到无线数据后,根据相应的命令执行开灯和关灯动作。/*事件处理函数*/UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){。。。 caseAF_INCOMING_MSG_CMD:

if(!memcmp(MSGpkt->cmd.Data,"ledon",6))//判断接收到的命令 P0_5=1; if(!memcmp(MSGpkt->cmd.Data,"ledoff",6)) P0_5=0;

break;default:break;}osal_msg_deallocate((uint8*)MSGpkt);MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(GenericApp_TaskID);}return(events^SYS_EVENT_MSG);}return0;}任务实施终端节点2:发送消息函数将自身的网络地址以单播的方式无线发送给协调器/*将网络地址无线发送给协调器*/voidGenericApp_SendTheMessage(void){uint16myNwk;myNwk=NLME_GetShortAddr();myAddr[5]=(uint8)myNwk;myAddr[6]=(uint8)(myNwk>>8);//单播模式发送给协调器

afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,7,myAddr,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);}任务实施任务结果分别将协调器程序、节点1程序和节点2程序下载到三个开发板中,用手遮挡住光照传感器,观察现象。感谢观看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyou

温馨提示

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

评论

0/150

提交评论