版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录任务目标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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版一下数学找规律讲授获奖公开课课件
- 冀教版八年级下册《Lesson 46 Protect Our Environment》同步练习
- Unit1TeenageLifeReadingandThinking课件高中英语人教版
- 十五校教育集团2025届高三鄂豫皖五十三校8月联考数学试题(原卷版)
- 山东省A7联盟2024-2025学年高三上学期开学考试数学试题(解析)
- 护理带教老师素质能力
- 云南省昭通市(2024年-2025年小学四年级语文)人教版综合练习(上学期)试卷及答案
- 护理毕业论文汇报
- 骨科治疗仪器护理
- 《 基于动态防碰撞算法的动态RFID系统》范文
- 2024年江苏省扬州市中考英语试卷附答案
- 医学检验技术专业《有机化学》课程标准
- 小学语文课堂教学研究现状
- PCBA品质控制计划
- 苏教版科学一年级上册教学计划及进度表
- 小美满合唱五线谱总谱
- 高考作文标准方格纸-A4-可直接打印
- 中药学实训课教案及反思总结
- 产品设计风险分析报告
- 2024-2029年中国健康医疗大数据行业市场发展分析及发展前景与投资研究报告
- 2024三年级奥数计算综合数阵图与幻方(A级)含答案
评论
0/150
提交评论