天天看點

Zigbee在.Net Micro Framework系統中的應用

Zigbee是IEEE 802.15.4協定的代名詞。根據這個協定規定的技術是一種短距離、低功耗的無線通信技術。這一名稱來源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動翅膀的“舞蹈”來與同伴傳遞花粉所在方位資訊,也就是說蜜蜂依靠這樣的方式構成了群體中的通信網絡。其特點是近距離、低複雜度、自組織、低功耗、低資料速率、低成本。主要适合用于自動控制和遠端控制領域,可以嵌入各種裝置。簡而言之,ZigBee就是一種便宜的,低功耗的近距離無線組網通訊技術。詳情請參見百度百科《Zigbee》。

而.NET Micro Framework對存儲器和處理器的要求很低,開發人員可以在低功耗、低成本的ARM7、ARM9、Blackfin和Cortex-M3處理器上使用該架構(不需要MMU支援),所開發出來的軟體僅需要幾百Kbytes的RAM或Flash/ROM存儲空間。而Windows Embedded CE的托管代碼環境需要約10~12Mbytes的存儲空間,基于.NET的應用程式設計裝置隻需要較少的存儲空間,降低了産品成本。詳情請參見《.Net Micro Framework 快速入門》。

兩者都是低複雜度,低功耗,低成本(.Net MF開源且免費)的解決方案,二者結合對建構物聯網無線方案來說,真是珠聯璧合。

目前Zigbee有如下兩種方案供最終使用者使用,一是Zigbee晶片(擴充閱讀《Zigbee晶片廠家對比》),如Ti提供的晶片CC2420、CC2430及CC2530,其中CC2430和CC2530片上內建了C8051核心,并提供了Zigbee協定棧,通過SPI、I2C或序列槽和CPU通信;二是Zigbee子產品,如周立功公司的ZICM2410子產品(美國CEL公司的MeshConnectTM子產品,內建語音編碼解碼器)和赫立訊公司的IP-Link1223子產品,子產品內建C8051核心,支援多路GPIO/AD,通過序列槽或SPI和外圍裝置通信,使用雖然簡單,但價格較高,大概是前者的3~5倍。

目前.Net Micro Framework V4.0的源碼中已經提供了CC2420的驅動程式(源碼在/framework/core/drivers/802_15_4/stack/physical/cc2420),硬體通過SPI方式通路CC2420晶片,在酒窖存儲監控中已有相關應用,有興趣的朋友可以參考一下。

晶片級方案由于沒有合适的開發闆,是以暫且不作介紹,我今天僅介紹子產品級解決方案,其平台是赫立訊公司的IP-Link1223子產品。

IP-Link1223子產品提供三種組網模式:線性網絡、全Mesh網絡、星型拓撲,其中全Mesh網絡最為常用。三種指令模式:AT指令模式、透傳模式、二進制模式,AT指令模式隻能本地配置;透傳模式雖然好用,但是多點通信時并不靈活;二進制模式不僅本地可以配置,也可以透過網絡遠端配置,并且可以擷取路由表及相關鍊路通信品質。

軟體配置界面:

Zigbee在.Net Micro Framework系統中的應用
目前已經編寫出支援全部的二進制模式指令Helicomm_IPLink1223類,相關指令如下,詳細通信協定請參見赫立訊公司相關的說明文檔。

private static byte CMD_ReadADC = 0x81;              //讀模拟通道值

    private static byte CMD_ReadADC = 0x81;              //讀模拟通道值

    private static byte CMD_ReadRSSI = 0x82;             //讀發射頻率

    private static byte CMD_ReadTemperature = 0x83;      //讀溫度

    private static byte CMD_ReadSRegister = 0x86;        //讀S寄存器值

    private static byte CMD_WriteSRegister = 0x87;       //寫S寄存器值

    private static byte CMD_ReadMAC = 0x8B;              //讀MAC位址

    private static byte CMD_ReadVer = 0x8C;              //讀核心版本

    private static byte CMD_BatterySavingMode = 0x8D;    //節電(停機)

    private static byte CMD_Hibernation = 0x8E;          //休眠

    private static byte CMD_SoftReboot = 0x8F;           //軟重新開機

    private static byte CMD_HardwareReboot = 0xC0;       //硬重新開機

    private static byte CMD_Reset = 0x90;                //恢複出廠設定

    private static byte CMD_ReadRoute = 0x95;            //讀取路由表

    private static byte CMD_ReadBlacklist = 0x9C;        //讀取黑名單   

    private static byte CMD_WriteBlacklist = 0x9D;       //寫黑名單  

    private static byte CMD_TrackerRoute = 0xAA;         //跟蹤路由  

    private static byte CMD_TrackerLQIRoute = 0xBB;      //帶信号強度的跟蹤路由

    private static byte CMD_ReadIO = 0xAC;               //讀IO狀态

    private static byte CMD_WriteIO = 0xAD;              //寫IO狀态

    private static byte CMD_ScanNeighbour = 0xBC;        //掃描鄰居清單

    private static byte CMD_ReadDeviceType = 0xC3;       //獲得裝置類型    

private static byte CMD_LocalHibernation = 0xB1;     //本地休眠

    private static byte CMD_LocalAwaikening = 0xB2;      //本地喚醒           
Zigbee在.Net Micro Framework系統中的應用
Zigbee在.Net Micro Framework系統中的應用

繼續閱讀