新聞中心

        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()函數如下:

        程序

        程序



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鹤岗市| 如皋市| 额济纳旗| 遵义县| 东乡族自治县| 双江| 东至县| 巴青县| 青浦区| 化州市| 红原县| 西青区| 昌黎县| 松溪县| 漳州市| 绥滨县| 宁波市| 新民市| 富阳市| 杭锦后旗| 滦平县| 府谷县| 武城县| 白城市| 墨脱县| 泗水县| 社会| 贡嘎县| 松江区| 大渡口区| 济宁市| 甘洛县| 宁晋县| 南丰县| 尖扎县| 彰化县| 安图县| 福安市| 桓台县| 巩义市| 明光市|