新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于CyFi的无线传感器网络组建与通信设计

基于CyFi的无线传感器网络组建与通信设计

作者:时间:2009-11-10来源:网络收藏

3 硬件结构

由于使用的是星型广播式协议,所有消息需要经过中心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将接收到的消息再转发出去。每个收发器有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样例,主函数中需修改调用SNP_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()函数如下:

程序

程序



评论


相关推荐

技术专区

关闭