首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于CyFi的无线传感器网络组建与通信设计
来源:本站整理  作者:佚名  2009-11-10 13:10:56



3 硬件结构

  由于CyFi使用的是星型广播式网络协议,所有消息需要经过中心Hub,故实现节点A到节点B数据通信的过程如下:节点A通过I2C协议采集多功能板A的CapSense触摸滑块的位置、3个LED灯的亮灭情况等数据,并与目标节点B的ID号一起通过RF发送出去;Hub检测到网络中有消息后,再根据消息中的目标节点ID将消息转发出去,同时将数据保存到缓存中等待PC机读取;节点B接收到消息之后根据消息中的数据,同样通过I2C协议控制多功能板B上的3个LED灯的亮灭。其中Hub所在设备FTPC有2个PSoC内核:主内核实现USB—I2C转换和各个板卡(包括从内核)的编程功能;从内核实现Hub功能,同时通过I2C与主内核连接。系统功能框图如图3所示。

系统功能框图

4 软件设计

4.1 PSoC软件设计

   CY3271套件的光盘中提供了各个PSoC的设计样例,本文中PSoC部分的设计就是在这些样例的基础上修改而成的。为了实现上述功能,需要在节点A发送的消息中添加目的节点B的ID信息,以便Hub将接收到的消息再转发出去。每个CyFi收发器有2种ID;一种为6字节的Radio ID,此ID在收发器出厂时烧入,不可更改且全球唯一;另一种为1字节的Node ID,此ID在节点绑定时确定,可以事先指定也可以由Hub动态分配。由于Ra-dio ID较复杂,开发人员在开发过程中可以忽略RadioID,而只关注Node ID。

   对于多功能板A可直接使用光盘上的MF_CS_SLIDE样例,不需要修改。对于节点A使用的RF_12C_BRIDGE样例,主函数中需修改调用CyFiSNP_BindStart()函数时的参数,如下:

程序

  其中,采集并发送消息的函数sendNewTxMsg()中发送的消息类型必须修改为CYFISNP_API_TYPE_CONF_BCDR,且应在调用的loadTxData()函数中添加如下一句以添加节点B的ID信息:

txApiPkt.payload[I2C_PAYLOAD_MAX]=DEV_ID_RX;

  对于Hub使用的RF_HUB样例,首先需要将用户模块CYFISNP的Device ID assignment属性设置为Preas-signed Device ID,以便节点A、B使用指定的ID绑定成功。重新编译后,在ServeSNPPackets()函数中接收到CYFISNP_API_TYPE_CONF_BCDR类型的消息之后,添加如下代码:

程序

程序

  对于节点B使用的RF_I2C_BRIDGE样例,其主函数同样需要修改CYFISNP_BindStart()函数的参数,同时还需暂存接收到的消息。核心代码如下:

程序


其中,负责接收消息并且控制多功能板B的函数receiveNewRxMsg()中必须与节点A对应的将消息类型修改为CYFISNP_API_TYPE_CONF_BCDR,且在其中调用的SetI2CData()函数如下:

程序

程序

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:323,320.30000 毫秒