当前位置:文档之家› zigbee设备启动分析资料

zigbee设备启动分析资料

设备启动准备

一、设备类型选择:

通过Workspace下拉框选择设备的类型:

图1:协调器

图2:路由器

图3:终端节点

协议栈设备类型:

#define ZG_DEVICETYPE_COORDINATOR 0x00

#define ZG_DEVICETYPE_ROUTER 0x01

#define ZG_DEVICETYPE_ENDDEVICE 0x02

#define ZG_DEVICETYPE_SOFT 0x03

ZG_DEVICETYPE_SOFT说明:可选设备类型。可以成为路由器、也可以成为协调器,由后面的程序决定。

初始化:

对于DEVICE_LOGICAL_TYPE的值各逻辑类型设备初始化如下:

// Device Logical Type

//zgDeviceLogicalType = DEVICE_LOGICAL_TYPE

在ZGlobals.h文件中设备逻辑类型进行了初始化:

#if defined ( SOFT_START )

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_SOFT //可选择类型

#elif defined( ZDO_COORDINATOR )

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR //协调器

#elif defined (RTR_NWK)

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ROUTER //路由器

#else

#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ENDDEVICE //终端

#endif

说明:如果编译了SOFT_START,则初始化设备逻辑类型(DEVICE_LOGICAL_TYPE)为可选择

类型(ZG_DEVICETYPE_SOFT)即设备可以作为协调器启动创建一个网络或者作为路由器加入一个已经存在的网络。如果没有编译SOFT_START但编译了ZDO_COORDINATOR,则初始化设备逻辑类型(DEVICE_LOGICAL_TYPE)为协调器(ZG_DEVICETYPE_COORDINATOR),即设备作为路由器启动并创建一个网络。如果没有编译SOFT_START和ZDO_COORDINATOR,但编译了RTR_NWK,则初始化设备的逻辑类型为路由器,即设备作为路由器启动并加入网络。其他情况则初始化为终端节点并加入网络。

SOFT-START说明:

SOFT_START is a compile option that allows the device to start as a coordinator if one isn't found.

设备启动模式(devStartMode)、设备状态(devState)

启动模式:表示了设备是以何种方式启动

typedef enum

{

MODE_JOIN, //加入

MODE_RESUME, //恢复

//MODE_SOFT, //暂不支持

MODE_HARD, //创建网络

MODE_REJOIN //重新加入

} devStartModes_t;

说明:MODE_JOIN和MODE_REJOIN 是路由器和终端使用的选项,用来加入或者重新

加入网络。而MODE_HARD是协调器使用的选项。用来创建一个网络。而MODE_RESUME 是恢复设备原来的状态。

设备状态标识了设备此时的状态:

typedef enum

{

DEV_HOLD, // Initialized - not started automatically

DEV_INIT, // Initialized - not connected to anything

DEV_NWK_DISC, // Discovering PAN's to join

DEV_NWK_JOINING, // Joining a PAN

DEV_NWK_REJOIN, // ReJoining a PAN, only for end devices

DEV_END_DEVICE_UNAUTH, // Joined but not yet authenticated by trust center

DEV_END_DEVICE, // Started as device after authentication

DEV_ROUTER, // Device joined, authenticated and is a router

DEV_COORD_STARTING, // Started as Zigbee Coordinator

DEV_ZB_COORD, // Started as Zigbee Coordinator

DEV_NWK_ORPHAN // Device has lost information about its parent..

} devStates_t;

初始化(以协调器为例)

devStartMode和devState的初始化,ZDApp.c中

启动模式(devStartModes_t)

#if defined( ZDO_COORDINATOR ) && !defined( SOFT_START )

// Set the default to coodinator

devStartModes_t devStartMode = MODE_HARD;

#else

// Assume joining

devStartModes_t devStartMode = MODE_JOIN;

#endif

说明:如果编译了ZDO_COORDINATOR并且没有编译SOFT_START,则初始化设备启

动模式(devStartMode)为MODE_HARD,即协调器创建网络。其他情况初始化设备启动模式(devStartMode)为MODE_JOIN,即设备加入网络。.

以上可以看出,如果编译了SOFT_START。首先并不是创建网络,而是先加入网络。如果网络加入失败,则考虑创建一个网络。

设备状态(devState):

#if defined( HOLD_AUTO_START )

devStates_t devState = DEV_HOLD;// Initialized - not started automatically

#else

devStates_t devState = DEV_INIT;// Initialized - not connected to anything

#endif

说明:如果编译了HOLD_AUTO_START,则设备状态(devState)为DEV_HOLD;否则设备状态(devState)为DEV_INIT。

Hold Auto Start说明:

A device will automatically start trying to form or join a network . If the device should wait on a timer or other external event before joining, then

HOLD_AUTO_START must be defined. In order to manually start the join process at a later time.

3、有两种方式来设置非自动启动模式:Hold Auto Start

(1)、手工方式:

在ZDApp_Init()函数中有个ZDAppCheckForHoldKey();(// Check for manual(手工的) "Hold Auto Start").

void ZDAppCheckForHoldKey( void )

{

//如果检测到按键SW_BYPASS_START被按下,则将设备的状态置为DEV_HOLD

#if (defined HAL_KEY) && (HAL_KEY == TRUE)

if ( HalKeyRead () == SW_BYPASS_START)

{

devState = DEV_HOLD;

}

#endif

}

(2)、预编译方式:

project->options->c/c++compiler->preprocessor->defined symbols下编译选项:

HOLD_AUTO_START

在ZDApp.c中:

#if defined( HOLD_AUTO_START )

devStates_t devState = DEV_HOLD;

#else

devStates_t devState = DEV_INIT;

#endif

把devState初始化为DEV_HOLD.

以上两种方式最终都会设置devState = DEV_HOLD // Initialized - not started automatically

预编译选项:

什么是预编译选项:

Compile options are used to select between features that are provided in the source files. Most compile options act as on/off switches for specific sections within source programs. Some options are used to provide a user-defined

编译选项是将源程序里提供的特性选择应用。大多数编译选项是充当“开关”作用。直接通过编译选项来决定是否应用某一特性。

编译选项配置的两种方式:

A:TOOL文件夹下的三个配置文件

在Tools文件夹下查看f8wCoord.cfg、f8wRouter.cfg、f8wEdev.cfg三个配置文件信息。

协调器:f8wCoord.cfg配置文件中同时编译了路由功能RTR_NWK和协调器功能

ZDO_COORDINATOR

/* Coordinator Settings */

-DZDO_COORDINATOR // Coordinator Functions

-DRTR_NWK // Router Functions

路由器:f8wRouter.cfg配置文件中编译了路由功能RTR_NWK

/* Router Settings */

-DRTR_NWK // Router Functions

终端:f8wEdev.cfg配置文件中没有编译这两个功能.

/* */

通过配置文件我们也可以看出协调器不仅具有协调器的作用还可以充当路由器,这就是我们所说的如果当协调器创建完网络后就可以认为协调器就变成了路由器了。路由器只有路由的功能,而终端设备没有路由的功能,更没有协调器的功能。

B: 通过Option选项下的配置条目进行配置

常用配置选项:

NV_RESTORE

SOFT_START

LCD_SUPPORTED=DEBUG

POWER_SAVING

REFLECTOR

RTR_NWK

ZDO_COORDINATOR

HOLD_AUTO_START

网络状态

// ZDOInitDevice return values

#define ZDO_INITDEV_RESTORED_NETWORK_STATE 0x00

#define ZDO_INITDEV_NEW_NETWORK_STATE 0x01

#define ZDO_INITDEV_LEAVE_NOT_STARTED 0x02

说明:ZDO_INITDEV_RESTORED_NETWORK_STATE 网络状态为恢复状态,即如果编译了NV-RESTORE,则设备将恢复为上次的状态。

ZDO_INITDEV_RESTORED_NETWORK_STATE 网络状态为新状态或者没有可以恢复的状态,此时设备将直接创建或者加入一个网络。ZDO_INITDEV_LEAVE_NOT_STARTED 为离开下次启动

网络恢复NV_RESTORE

Devices that have successfully joined a network can “restore the network” (instead of reforming by OTA messages) even after losing power or battery. This automatic restoration can be enabled by defining NV_RESTORE and/or NV_INIT.

地址结构体说明:

typedef struct

{

union

{

uint16 shortAddr;

ZLongAddr_t extAddr;

} addr;

byte addrMode;

} zAddrType_t;

包括有地址模式和地址。

地址模式有:

typedef enum

{

afAddrNotPresent = AddrNotPresent,

afAddr16Bit = Addr16Bit,

afAddrGroup = AddrGroup,

afAddrBroadcast = AddrBroadcast

} afAddrMode_t

特殊地址:

0xFFFF-------向所有设备广播信息

0xFFFE-------绑定时使用该地址

0xFFFD------向所有非睡眠的节点广播

0xFFFC------向所有路由器广播(包括协调器)

实例:

ZDAppNwkAddr.addrMode = Addr16Bit;

ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;

注册机制说明:

为什么要注册?

协议栈三大注册机制:端点endpoint的注册、按键KEY的注册和ZDOMsg消息注册。这里我们看endpoint的注册。

Endpoint的注册最终调用了函数*afRegisterExtended();

epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn )

{

if ( ep )//成功分配空间

{

// Fill in the new list entry

ep->epDesc = epDesc;

ep->flags = eEP_AllowMatch;

ep->pfnDescCB = descFn;

ep->nextDesc = NULL;

if ( epList == NULL )

epList = ep; // Make this the first entry

else

{

epSearch = epList;

while( epSearch->nextDesc != NULL )

epSearch = epSearch->nextDesc;

//循环到最后,就是依次“下一个”,直到最后一个,在最后把新的加上

epSearch->nextDesc = ep;

}

……

}

协调器创建网络规范说明

在一个zigbee网络中,只有协调器(coordinator)才可以建立网络,建立网络的过程是通过原语实现的。

首先协调器的应用层调用NLME_NETWORK_FORMATION.request原语发出建立网络

请求,网络层(NWK)收到这个原语,向MAC层发送MLME_SCAN.request原语执行信道能量扫描(energy scan)和活动情况扫描(active scan),(在IEEEE802.15.4协议中规定,在2.4G 频段,共有16个信道,每个信道的带宽为5M)。

信道能量(energy scan)扫描是为了找到规定信道中那一个最安静,并标注为可用信道。每扫描一个信道持续约半秒,如果配置为16个信道全部扫描共需约八秒。当MAC层执行完信道能量扫描(energy scan)后,由MAC层向NWK层发送MLME_SCAN.confirm确认原语。当信道能量扫描(energy scan)完成后下一步就在可用信道中执行活动情况扫描(active scan), 活动情况扫描(active scan)是MAC层通过发送MAC帧,检测是否有回应判断信道是否有其他网络存在,活动情况扫描(active scan)的目的在于防止在同一个信道上建立两个具有相同PANID的网络。当MAC层执行活动情况扫描(active scan)后,由MAC层向NWK层发送MLME_SCAN.confirm确认原语。并将可用的可用的PANID和信道发送给上层。

当执行完上述扫描后,如果获得了可用的信道和PANID,则网络层(NWK)向MAC发送MLME_START.request原语请求启动创建网络,当网络创建成功MAC层向网络层(NWK)发送MLME_START.confirm原语告知结果。网络层(NWK)向应用层(APS)发送

NLME_NETWORK_FORMATION.confirm原语告知结果。

协调器启动协议栈代码说明

1、协调器预编译信息

在Tools文件夹下查看f8wCoord.cfg编译ZDO_COORDINATOR和RTR_NWK.

在Option选项卡编译:CC2430EB;ZTOOL_P1;MT_TASK;MANAGED_SCAN

2、具体流程

首先协议栈以主函数为入口点启动协议栈。在主函数中调用了osal_init_system()进行了OS的初始化

ZSEG int main( void )

{

osal_int_disable( INTS_ALL );

HAL_BOARD_INIT();

zmain_vdd_check();

……

osal_init_system()

……

}

OS 初始化系统,初始化了内存、定时器、电源管理以及系统任务等。

byte osal_init_system( void )

{

osal_mem_init();

osal_qHead = NULL;

osalTimerInit();

osal_pwrmgr_init();

// Initialize the system tasks.初始化任务系统

osalInitTasks();

}

在任务初始化osalInitTasks()函数中,OS为每一层分配一个任务ID,使得协议栈成为一个多任务的系统

void osalInitTasks( void )

{

uint8 taskID = 0;

tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));

macTaskInit( taskID++ );

nwk_init( taskID++ );

Hal_Init( taskID++ );

#if defined( MT_TASK )

MT_TaskInit( taskID++ );

#endif

APS_Init( taskID++ );

ZDApp_Init( taskID++ );

SampleApp_Init( taskID );

}

函数说明:

1、void *osal_mem_alloc( uint16 size )

说明:该函数在内存中开辟了size大小的一块内存

参数说明:size-----------------------要开辟内存的大小

返回值:指针

2、void *osal_memset( void *dest, byte value, int len )

说明:该函数将起始地址为dest,长度为len的一块内存的值设置为value

参数说明:*dest--------------------起始地址

value-------------------要设置成的值

len----------------------设置内存块的大小

返回值:指针

其他说明:

由编译选项可知MT_TASK编译了,可以知道函数中

#if defined( MT_TASK )

MT_TaskInit( taskID++ );

#endif

将被执行。

即最后ZDApp_Init(byte task_id)

传递的任务id的值为5,而SampleApp_Init( taskID )传递的任务id为6.

void ZDApp_Init(byte task_id)

{

uint8 capabilities;

//保存下了OS分配的任务id。即ZDAppTaskID=5

ZDAppTaskID=task_id;

……

//如果程序运行到这里正好SW_1被按下,则会设置设备的状态(devState)为DEV_HOLD,从而避开网络初始化

ZDAppCheckForHoldKey();

//Initialize ZDO items and setup the device – type of device to create.

ZDO_Init();

AfRegister( (endPointDesc_t *)&ZDApp_epDesc );

……

// Start the device

if ( devState != DEV_HOLD )

{

ZDOInitDevice( 0 );

}

else

{

// Blink LED to indicate HOLD_START

HalLedBlink ( HAL_LED_4, 0, 50, 500 );

}

ZDApp_RegisterCBs();

}

函数说明:

1、void ZDAppCheckForHoldKey( void )

说明:如果在设备启动的时候手动将SW_1按下,则将设备状体置为DEV_HOLD,从而避开网络初始化。

参数说明:无

返回值:无

2、void ZDO_Init( void )

说明:该函数是ZDObject 和ZDProfile 初始化函数,在该函数中调用了ZDODeviceSetup()根据编译选项的不同进行了相关的初始化。

参数说明:无

返回值:无

3、afStatus_t afRegister( endPointDesc_t *epDesc )

说明:该函数为zigbee设备注册一个新的端口。应用程序的每一个端口都必须使用该函数

进行注册。

参数说明:epDesc -----------------------指向端口描述符的指针

返回值:afStatus_t-------------------------在ZcomDef.h的Zstatus_t结构体中定义的状态值4、uint8 ZDOInitDevice(uint16 startDelay)

说明:该函数为ZDO设备初始化函数,该函数会检查系统是否需要恢复,如果需要恢复则恢复,否则启动设备。

参数说明:startDelay----------------------------------------------------------------设备启动延时

返回值:ZDO_INITDEV_RESTORED_NETWORK_STATE-------------设备恢复成功

ZDO_INITDEV_NEW_NETWORK_STATE----------------------设备为新状态

ZDO_INITDEV_LEA VE_NOT_STARTED-------------------------离开下次启动

uint8 ZDOInitDevice( uint16 startDelay )

{

//初始化设备网络状态为ZDO_INITDEV_NEW_NETWORK_STATE:新的网络状态.

uint8 networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;

uint16 extendedDelay = 0;

devState = DEV_INIT; // Remove the Hold state/设备的状态为:设备初始化

……

#if defined ( NV_RESTORE )

if ( HalKeyRead() == SW_BYPASS_NV )

//如果SW_BYPASS_NV按键此时被按下则会避开NV-RSTORE,将网络状态置为新状态networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;

else//决定NV是否需要恢复

{

//函数返回的设备网络状态是新的网络状态或者是恢复的网络状态;以此

//来确定要不要读取NV里相应条目来恢复网络先前状态

networkStateNV = ZDApp_ReadNetworkRestoreState();

//通过函数ZDApp_ReadNetworkRestoreState的返回值决定NV是否需要恢复。

}

//函数ZDApp_ReadNetworkRestoreState()用来检测是否需要恢复,如果返回值为//ZDO_INITDEV_RESTORED_NETWORK_STATE则恢复网络先前的状态

if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE )

{

//恢复设备先前的网络状态参数并且

//设置devStartMode = MODE_RESUME

networkStateNV = ZDApp_RestoreNetworkState();

//通过函数ZDApp_RestoreNetworkState()恢复网络先前的状态

}

else //如果没有可以恢复的则执行下面代码

{

// Wipe out the network state in NV

NLME_InitNV();

NLME_SetDefaultNV(); //设置默认NV条目

}

#endif

//以下为没有定义NV_RESTORE,即不恢复网路状态或者恢复失败。如果网络状态为//ZDO_INITDEV_NEW_NETWORK_STATE则执行以下代码

if ( networkStateNV == ZDO_INITDEV_NEW_NETWORK_STATE )

{

//根据编译选项决定设备的类型,但仅在编译了SOFT_START 才起作用

ZDAppDetermineDeviceType();

// Only delay if joining network - not restoring network st ate

extendedDelay = (uint16)((NWK_START_DELAY + startDelay)

+ (osal_rand() & EXTENDED_JOINING_RANDOM_MASK));

}

// Initialize device security

ZDApp_SecInit( networkStateNV );

// Trigger the network start

ZDApp_NetworkInit( extendedDelay );

return ( networkStateNV );

}

函数说明:

1 、uint8 ZDApp_ReadNetworkRestoreState( void )

说明:通过该函数读取NV 中ZCD_NV_STARTUP_OPTION的值决定是否需要恢复先前的网络状态。

参数说明:无

返回值:ZDO_INITDEV_NEW_NETWORK_STATE-------------新网络状态,无需恢复

ZDO_INITDEV_RESTORED_NETWORK_STATE-----------恢复先前网络状态

2、uint8 ZDApp_RestoreNetworkState( void )

说明:通过该函数可以恢复先前的网络状态

参数说明:无

返回值:ZDO_INITDEV_RESTORED_NETWORK_STATE-------网络状态恢复成功

ZDO_INITDEV_NEW_NETWORK_STATE----------------网络状态恢复失败

3、void ZDAppDetermineDeviceType( void )

说明:通过该函数决定启动时设备的逻辑类型及启动模式,但仅在编译了SOFT_START 才起作用

参数说明:无

返回值:无

4、void ZDApp_NetworkInit( uint16 delay )

说明:通过该函数触发设备启动函数,该函数触发了ZDO_NETWORK_INIT事件。

参数说明:delay--------------------------- 触发ZDO_NETWORK_INIT的延时

返回值:无

其他说明:

在函数ZDApp_NetworkInit()的参数值的大小,这里extendedDelay的大小足够协议栈初始化其它层。因为该参数在传递给函数后定时触发事件ZDO_NETWORK_INIT,而溢出时间正是extendedDelay。在协议栈提供的SampleApp实例中,编译了SOFT_START,当执行到这里的时候,设备类型为可选类型(ZG_DEVICETYPE_SOFT)。延时extendedDelay确保了当设备开始创建网络的时候已经初始化了SampleApp的应用层,在应用层通过跳线决定了设备的类型是协调器或是路由器。

通过上面函数的分析我们可以看出设备在启动的时候可以利用NV恢复上次的网络状态,也可以不恢复直接开始创建或加入网络,恢复与否取决于是否编译了NV_RESTORE。ZDOInitDevice( uint16 startDelay )函数的最后触发了事件ZDO层的ZDO_NETWORK_INIT。ZDO层事件处理函数为ZDApp_event_loop()。

UINT16 ZDApp_event_loop( byte task_id, UINT16 events )

{

……

if ( events & ZDO_NETWORK_INIT )

{

// Initialize apps and start the network

devState = DEV_INIT; //此时设备状态为“初始化”

ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType,

devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );

return (events ^ ZDO_NETWORK_INIT);

}

……

}

函数说明:

1 、void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )

说明:通过该函数根据设备类型及设备启动方式的不同启动设备。

参数说明:logicalType-----------------------------设备的逻辑类型

startMode------------------------------设备的启动模式

beaconOrder---------------------------信标时间

superframeOrder---------------------超帧长度

返回值:无

在ZDApp_event_loop()中处理ZDO_NETWORK_INIT前,即设备启动之前设备的状态设置为设备初始化(DEV_INIT)。然后调用了ZDO_StartDevice()启动设备。下面仔细分析设备的启动函数ZDO_StartDevice()

void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )

{

#if defined(ZDO_COORDINATOR) //如果定义了协调器

if ( logicalType == NODETYPE_COORDINATOR ) //node type coordinator

{

//协调器的两种启动方式:

if ( startMode == MODE_HARD )//普通的启动,直接创建网络

{

devState = DEV_COORD_STARTING;//设备状态为协调器正在启动

// NLME_NetworkFormationRequest为系统函数,用于协调器创建网络

ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,

gDefaultStartingScanDuration,beaconOrder, superframeOrder, false );

}

else if ( startMode == MODE_RESUME )//网络恢复

{

// Just start the coordinator

devState = DEV_COORD_STARTING; //设备状态为协调器正在启动

//如果是协调器恢复则会以路由器启动

ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );

}

……

}

#endif // !ZDO_COORDINATOR

//路由器和终端加入网络的过程是一样的,但是两个设备在恢复时是不一样的

#if !defined ( ZDO_COORDINATOR ) || defined( SOFT_START )

if ( logicalType == NODETYPE_ROUTER || logicalType == NODETYPE_DEVICE )

{

if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )//要加入网络

{

devState = DEV_NWK_DISC; //此时设备状态为“发现网络”

#if defined( MANAGED_SCAN )

//如果编译了MANAGED_SCAN将会会扫描所有信道

ZDOManagedScan_Next(); //进行信道扫描

//选择扫描到的网络加入

ret=NLME_NetworkDiscoveryRequest(managedScanChannelMask,

BEACON_ORDER_15_MSEC ); #else

//加入到默认信道上的网络

ret=NLME_NetworkDiscoveryRequest(zgDefaultChannelList,

zgDefaultStartingScanDuration ); #endif

}

else if ( startMode == MODE_RESUME )//下面是设备恢复代码

{

if ( logicalType == NODETYPE_ROUTER )//路由器的恢复

{

……

nwk_ScanJoiningOrphan(&scanCnf);//路由器以孤点方式加入网络

ret = ZSuccess;

}

else//终端节点的恢复

{

devState = DEV_NWK_ORPHAN;

ret = NLME_OrphanJoinRequest( zgDefaultChannelList,

zgDefaultStartingScanDuration );

}

}

……

}

#endif //!ZDO COORDINATOR || SOFT_START

if ( ret != ZSuccess )//如果没有启动,则重新再来一次!

osal_start_timerEx(ZDAppTaskID,ZDO_NETWORK_INIT, NWK_RETRY_DELAY );

}

函数说明:

1 、ZStatus_t NLME_NetworkFormationRequest( uint16 PanId, uint3

2 ScanChannels,

byte ScanDuration, byte BeaconOrder,

byte SuperframeOrder, byte BatteryLifeExtension )

说明:通过该函数协调器可以创建一个网络。该函数会触发其对应的回调函数

void ZDO_NetworkFormationConfirmCB( ZStatus_t Status )。

2、ZStatus_t NLME_StartRouterRequest( byte BeaconOrder, byte SuperframeOrder,

byte BatteryLifeExtension )

说明:通过该函数可以启动一个路由器或者完成协调器的恢复。该函数会触发其对应的回调函数void ZDO_StartRouterConfirmCB( ZStatus_t Status )。

3、ZStatus_t NLME_NetworkDiscoveryRequest( uint32 ScanChannels,

byte scanDuration)

说明:通过该函数请求网络层发现邻居路由器节点。该函数会触发其对应的回调函数

ZStatus_t ZDO_NetworkDiscoveryConfirmCB( byte ResultCount,

networkDesc_t *NetworkList )

4、void nwk_ScanJoiningOrphan( ZMacScanCnf_t *param )

说明:通过该函数路由器会以孤点的方式加入网络。该函数会触发其回调函数

void ZDO_JoinConfirmCB( uint16 PanId, ZStatus_t Status )

5、ZStatus_t NLME_OrphanJoinRequest( uint32 ScanChannels, byte ScanDuration )

说明:通过该函数终端节点以孤点的方式加入网络。该函数会触发其回调函数

void ZDO_JoinConfirmCB( uint16 PanId, ZStatus_t Status )

我们这里是协调器的启动,并且没有用到网络恢复,所以在该函数中会调用

NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,

zgDefaultStartingScanDuration, beaconOrder, superframeOrder, false )

来创建一个新的网络。调用NLME_NetworkFormationRequest()触发了其对应的回调函数

ZDO_NetworkFormationConfirmCB()。

void ZDO_NetworkFormationConfirmCB( ZStatus_t Status )

{

#if defined(ZDO_COORDINATOR)

nwkStatus = (byte)Status; //将状态保存到nwkStatus中

if ( Status == ZSUCCESS ) //网络创建成功

{

//点亮LED_3标识协调器已经创建网络成功

HalLedSet ( HAL_LED_3, HAL_LED_MODE_ON );

// LED off forgets HOLD_AUTO_START

HalLedSet (HAL_LED_4, HAL_LED_MODE_OFF);

……

}

#if defined(BLINK_LEDS)

else //没有成功创建网络将闪烁LED提示用户

HalLedSet ( HAL_LED_3, HAL_LED_MODE_FLASH );

#endif

//触发网络已经启动事件 ZDO_NETWORK_START

osal_set_event( ZDAppTaskID, ZDO_NETWORK_START );

#endif //ZDO_COORDINATOR

}

不论是否创建了网络,函数最后触发事件ZDO_NETWORK_START,同样在ZDApp_event_loop()中处理ZDO_NETWORK_START事件。注意:每一层处理每一层的事件,不允许越权处理也不允许不处理,两种情况系统都是无法运行的。

UINT16 ZDApp_event_loop( byte task_id, UINT16 events )

{

……

#if defined (RTR_NWK)

if ( events & ZDO_NETWORK_START )

{

ZDApp_NetworkStartEvt();

// Return unprocessed events

return (events ^ ZDO_NETWORK_START);

}

#endif //RTR_NWK

……

}

函数中调用了函数ZDApp_NetworkStartEvt()对ZDO_NETWORK_START进行处理void ZDApp_NetworkStartEvt( void )

{

if ( nwkStatus == ZSuccess )//如果创建网络成功

{

// Successfully started a ZigBee network

if ( devState == DEV_COORD_STARTING )

{

devState = DEV_ZB_COORD;//将设备的状态修改为DEV_ZB_COORD }

//设置电源,因为是协调器所以需要PWRMGR_ALWAYS_ON 而不能电池供电

osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

//触发ZDAppTaskID的事件ZDO_STATE_CHANGE_EVT

osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );

}

else//如果协调器没有创建成功

{

// Try again with a higher energy threshold !!

//将能量增大再尝试一次,前提是能量没有达到最大

if ( ( NLME_GetEnergyThreshold() + ENERGY_SCAN_INCREMENT ) < 0xff ) {

NLME_SetEnergyThreshold((uint8)(NLME_GetEnergyThreshold()+

ENERGY_SCAN_INCREMENT) );

osal_set_event( ZDAppTaskID, ZDO_NETWORK_INIT );

}

else//如果能量最大也没有成功进入dormant状态

{

zigbee技术的原理及应用

Zigbee技术的原理及应用 1. 引言 Zigbee是一种低功耗、近距离无线通信协议,被广泛应用于物联网领域。本文将介绍Zigbee技术的原理,并探讨它在各个领域的应用。 2. Zigbee技术的原理 •Zigbee协议:Zigbee是一种基于IEEE 802.15.4标准的通信协议。它使用2.4GHz、900 MHz和868 MHz无线频段进行通信。 •网络拓扑:Zigbee网络采用星状、网状和树状等多种拓扑结构。其中,星状拓扑最常见,由一个中心设备(协调器)和若干个终端设备组成。 •网络通信:Zigbee采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)的通信方式,确保数据的可靠传输。 •低功耗:Zigbee设备的功耗非常低,可以通过休眠和睡眠模式来降低能耗,在电池供电的应用中具有较长的使用寿命。 3. Zigbee技术的应用 3.1 智能家居 •环境监测:通过Zigbee传感器可以实时监测室内温度、湿度、光照等环境指标,实现智能调控。 •安防系统:Zigbee技术可以用于家庭安防系统,包括智能门锁、烟雾报警器和入侵检测器等。 •能源管理:通过智能插座和用电监控装置,实现对家电的远程控制和能源使用的监测。 3.2 工业控制 •无线传感网络:Zigbee技术可以应用于工业领域的无线传感网络,实现对设备状态的监测和控制。 •远程监控:利用Zigbee传感器,可以实现对工业设备的远程监控和故障诊断。 •自动化控制:Zigbee网络可用于自动化控制系统,实现对设备的自动控制和优化。 3.3 医疗健康 •远程监护:Zigbee技术可以用于监测和传输患者的生理参数,如心率、血压和血氧饱和度等。

zigBee实验报告

ZIgBee学习心得 实验报告 项目名称基于无线传感器网络的采温实验专业班级软件1105 学号 姓名

目录 《计算机网络》............................................................................................... 错误!未定义书签。实验报告. (1) 一、实验目的 (3) 二、实验内容和报告简介 (3) 三、实验相关设备环境 (3) 四、实验内容 (6) 4.1.内容简介 (6) 4.2. 无线传感器网络采温系统实验 (7) 实验简介 (7) 4.2.2 工程结构简介 (8) 4.2.3 设备功能及网络拓扑结构介绍 (9) 4.2.4 main()函数和OSAL (9) 4.2.5 设备相关功能主要函数介绍 (13) 4.3 ZigBee协议和ZStack分析 (24) 4.3.1 ZigBee协议和ZStack简介 (24) 4.3.2 OSAL原理分析和实现 (25) IEEE 802.15.规定的PHY层 (31) IEEE 802.15.规定的MAC层 (34) 4.3.5 ZigBee2007的网络层。 (37) 4.3.6 ZigBee2007的应用层 (41) 五、实验结果 (42) 六、实验结论 (43) 七、实验小结 (43) 7.1 短距离无线通信网络的现状和发展 (43) 7.2 ZigBee通信技术的应用 (44) 7.3 学习ZigBee开发的心得体会 (44) 7.4 下一步可能的学习计划 (44) 实验《基于无线传感器网络的采温实验》

构建zigbee网络总结

构建 ZigBee 网络总结 概述 ZigBee 是一种基于 IEEE 802.15.4 标准的无线通信协议,旨在提供低功耗、低 数据率的短距离无线通信解决方案。ZigBee 网络由一个或多个 ZigBee 设备组成, 这些设备通过 ZigBee 协调器进行协调和管理。本文将探讨构建 ZigBee 网络的关键 步骤和注意事项。 步骤一:选择合适的硬件设备 构建 ZigBee 网络的第一步是选择合适的硬件设备。ZigBee 网络的设备分为三类:协调器(Coordinator)、路由器(Router)和终端设备(End Device)。协调器是网络的主节点,负责组织和管理整个网络。路由器允许设备之间进行中继和转发数据。终端设备是网络中的最终节点,负责与其他设备进行通信。 在选择硬件设备时,需要考虑以下因素: - 功耗:如果是低功耗应用,选择低 功耗的设备非常重要。 - 通信范围:根据项目需求选择合适的通信范围。 - 可靠性:确保设备的稳定性和可靠性。 - 成本:根据项目预算选择合适的硬件设备。 步骤二:设计网络拓扑结构 在ZigBee 网络中,网络拓扑结构的设计非常重要。常见的拓扑结构包括星型、网状和链状。不同的拓扑结构适用于不同的应用场景。 星型拓扑结构 星型拓扑结构是最简单和最常见的ZigBee 网络拓扑结构。在星型拓扑结构中,所有设备都通过协调器进行通信。该拓扑结构适用于需要集中管理的应用,例如家庭自动化系统。 网状拓扑结构 网状拓扑结构允许设备之间进行多跳通信,提供了更强大的网络覆盖能力。在 网状拓扑结构中,路由器负责转发数据,并确保数据能够可靠地从源设备传输到目标设备。该拓扑结构适用于需要大范围通信的应用,例如智能城市和工业自动化系统。 链状拓扑结构 链状拓扑结构是一种特殊的网状拓扑结构,它只允许设备之间进行单向通信。 链状拓扑结构适用于需要按序传输数据的应用,例如传感器网络。

ZIGBEE技术规范与协议栈分析

ZIGBEE技术规范与协议栈分析 篇一:ZigBee知识无线龙 1.协议栈工作流程和无线收发控制 LED 实验内容: 1. ZigBee 协议栈简介 2. 如何使用 ZigBee 协议栈 3. ZigBee 协议栈的安装、编译与下载 4. 协议栈无线收发控制 LED 5. 协议栈工作流程实现现象: 协调器、终端上电,组网成功后 D1 灯闪烁 1. ZigBee 协议栈简介 什么是 ZigBee 协议栈呢?它和 ZigBee 协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。图 1 展示了 ZigBee 无线网络协议层的架构图。ZigBee 的协议分为两部分,IEEE 802.15.4 定义了 PHY(物理层)和 MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供 API(应用层),用户可以直接调用。 图 1 ZigBee 无线网络协议层 2. 如何使用 ZigBee 协议栈 协议栈是协议的实现,可以理解为代码,函数库,供上层应用调用,协议较底下的层与应用是相互独立的。商业化的协议

栈就是给你写好了底层的代码,符合协议标准,提供给你一个功能模块给你调用。你需要关心的就是你的应用逻辑,数据从哪里到哪里,怎么存储,处理;还有系统里的设备之间的通信顺序什么的,当你的应用需要数据通信时,调用组网函数给你组建你想要的网络;当你想从一个设备发数据到另一个设备时,调用无线数据发送函数;当然,接收端就调用接收函数;当你的设备没事干的时候,你就调用睡眠函数;要干活的时候就调用唤醒函数。所以当你做具体应用时,不需要关心协议栈是怎么写的,里面的每条代码是什么意思。除非你要做协议研究。每个厂商的协议栈有区别,也就是函数名称和参数可能有区别,这个要看具体的例子、说明文档。 怎么使用 ZigBee 协议栈?举个例子,用户实现一个简单的无线数据通信时的一般步骤: 1、组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入。 2、发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。 3、接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。 是不是看上去很简单啊,其实协议栈很多都封装好了,下面我们大概看看无线发送函数: 1. afStatus_t AF_DataRequest( afAddrType_t *dstAddr, 2. afStatus_t AF_DataRequest( afAddrType_t *dstAddr, 2. endPointDesc_t *srcEP, 3. endPointDesc_t *srcEP, 3. uint16 cID, 4. uint16 cID, 4. uint16 len, 5. uint16 len, 5. uint8 *buf, 6. uint8 *buf,

ZigBee协议架构

ZigBee协议架构 ZigBee协议是一种低功耗、近距离无线通信协议,主要应用在无线 传感器网络(WSN)中。它是由ZigBee联盟(ZigBee Alliance)所定 义和推广的,旨在为物联网设备之间的通信提供一个标准化的解决方案。本文将介绍ZigBee协议的架构和其主要组件,以及在物联网应用 中的应用场景。 一、ZigBee协议架构概述 ZigBee协议采用了分层的架构,以便于各个组件的模块化和扩展性。ZigBee协议架构一般可分为两个主要层次:应用层和网络层。下面将 详细介绍每个层次的主要组件和功能。 1. 应用层 应用层是ZigBee协议栈的顶层,负责实现各种应用的功能。它可 以与不同类型的传感器和执行器进行通信,并执行各种任务,如数据 采集、控制和管理等。应用层使用ZigBee Cluster Library(ZCL)定义 了一系列的应用框架和应用集群,以便开发人员可以方便地构建自己 的应用。 2. 网络层 网络层是ZigBee协议栈的中间层,负责实现节点之间的通信和路 由功能。它使用ZigBee网络堆栈协议(ZigBee Network Stack Protocol)来处理数据包的发送和接收,以及路由选择和网络管理等功能。网络

层的核心组件包括ZigBee协调器(ZigBee Coordinator)、路由器(Router)和终端设备(End Device)。 二、ZigBee协议架构组件 1. ZigBee协调器 ZigBee协调器是在ZigBee网络中的关键组件,它负责启动和管理 整个网络,以及分配网络地址和加密密钥等。协调器可以与多个路由 器和终端设备建立连接,并通过网络层协议进行数据传输和路由选择。此外,协调器还负责处理网络中的任何故障或冲突,并重新分配资源 以保持网络的可靠性和稳定性。 2. 路由器 路由器是ZigBee网络中的中间节点,它负责转发数据包并实现网 络层的路由选择功能。路由器可以与其他路由器和终端设备建立连接,并通过网络层协议将数据包从源节点传输到目标节点。它可以选择最 佳的路径来传输数据,并确保数据的安全性和可靠性。 3. 终端设备 终端设备是ZigBee网络中的最低层节点,通常是传感器或执行器。终端设备只能与一个父级设备(路由器或协调器)建立连接,通过该 父级设备来实现与其他节点的通信。终端设备通常具有较低的功耗要求,并且在不活动时可以进入睡眠模式以节省能源。 三、ZigBee协议在物联网中的应用场景

zigbee组网实验报告

zigbee组网实验报告 ZigBee组网实验报告 引言: ZigBee是一种低功耗、低速率、低成本的无线通信技术,被广泛应用于物联网 领域。本实验旨在通过搭建ZigBee网络,探索其组网原理和应用。 一、实验背景 随着物联网的快速发展,各种智能设备的出现使得人们的生活更加便捷和智能化。而ZigBee作为一种独特的无线通信技术,具有低功耗、低成本和可靠性强的特点,成为物联网领域的重要组成部分。 二、实验目的 1.了解ZigBee组网的基本原理和拓扑结构; 2.搭建ZigBee网络,实现设备之间的通信; 3.探索ZigBee在物联网领域的应用。 三、实验步骤 1.准备工作 在实验开始前,需要准备一些硬件设备,包括ZigBee模块、开发板、传感器等。同时,还需要安装相应的软件开发环境。 2.搭建ZigBee网络 首先,将ZigBee模块插入开发板,连接电源并进行初始化设置。然后,通过软件开发环境,配置网络参数,包括网络ID、信道等。接下来,将各个设备逐一 加入网络,形成一个完整的ZigBee网络。 3.通信测试

完成网络搭建后,进行通信测试。通过发送指令或传感器数据,验证设备之间的通信是否正常。同时,还可以进行数据传输速率测试,评估网络的性能。四、实验结果与分析 经过实验,成功搭建了一个ZigBee网络,并实现了设备之间的通信。通过测试发现,ZigBee网络具有较低的功耗和较高的可靠性,适用于物联网领域的各种应用场景。 五、实验总结 ZigBee作为一种重要的无线通信技术,具有广泛的应用前景。通过本次实验,我们深入了解了ZigBee组网的原理和应用,并通过实际操作掌握了搭建ZigBee网络的方法。这对我们进一步研究和应用物联网技术具有重要意义。六、展望 在未来,随着物联网的不断发展,ZigBee网络将在更多的领域得到应用。例如智能家居、智能医疗、智能交通等,ZigBee技术将为这些领域带来更多的便利和创新。 结语: 通过本次实验,我们对ZigBee组网技术有了更深入的了解,并体验了其在物联网领域的应用。随着科技的不断进步,我们相信ZigBee将在未来发挥更重要的作用,为人们的生活带来更多便利和智能化的体验。

zigbee资料

第一章绪论 1.1 ZigBee 定义 物联网的定义是:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现物体的智能化识别、定位、跟踪、监控和管理的一种网络。 无线传感网络的定义是:大规模,无线、自组织、多跳、无分区、无基础设施支持的网络。其中的节点是同构的、成本较低、体积较小,大部分节点不移动,被随意撒布在工作区域,求网络系统有尽可能长的工作时间。在通信方式上,虽然可以采用有线、无线、红外和光等多种形式,但一般认为短距离的无线低功率通信技术最适合传感器网络使用,为明确起见,一般称无线传感器网络(WSN.Wireless Sensor Network)。 Zigbee是IEEE 802.15.4协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。主要合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,ZigBee就是一种便宜的,功耗的近距离无线组网通讯技术。 无线传感网络的无线通信技术可以采用ZigBee技术、蓝牙、Wi-Fi和红外等技术。ZigBee 技术是一种短距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术或无线网络技术,是一组基于IEEE802.15.4无线标准研制开发的组网、安全和应用软件方面的通信技术。 协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL 等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI等),物理层。 ZigBee的技术特性决定它将是无线传感器网络的最好选择,广泛用于物联网,自动控制和监视等诸多领域。以美国德州仪器TI公司CC2430/CC2530芯片为代表的Zigbee SOC解决方案在国内高校企业掀起了一股Zigbee技术应用的热潮。CC2430/CC2530集成了51单片机内核,相比于众多的Zigbee芯片,CC2430/CC2530颇受青睐。 CC2530提供了101dB的链路质量,优秀的接收器灵敏度和健壮的抗干扰性,四种供电模式,多种闪存尺寸,以及一套广泛的外设集—包括2个USART、12位ADC和21个通用GPIO,以及更多。除了通过优秀的RF性能、选择性和业界标准增强8051MCU内核,支持一般的低功耗无线通信,CC2530还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack或SimpliciTI)来简化开发,使你更快的获得市场。CC2530可以用于的应用包括远程控制、消费型电子、家庭控制、计量和智能能源、楼宇自动化、医疗以及更多领域。 1.2 IEEE 80 2.15.4标准概述 IEEE 802.15.4是一个低速率无线个人局域网(Low Rate Wireless PersonalArea Networks,LR-WPAN)标准。该标准定义了物理层(PHY)和介质访问控制层(MAC)。这种低速率无线个人局域网的网络结构简单、成本低廉、具有有限的功率和灵活的吞吐量。低速率无线个人局域网的主要目标是实现安装容易、数据传输可靠、短距离通信、极低的成本、合理的电池寿命,并且拥有一个简单而且灵活的通信网络协议。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。

zigbee实验报告

zigbee实验报告 Zigbee实验报告 引言 无线通信技术的快速发展已经改变了我们的生活方式和工作方式。随着物联网的兴起,越来越多的设备需要无线通信来实现互联互通。Zigbee作为一种低功耗、短距离通信的无线技术,被广泛应用于家庭自动化、智能城市和工业控制等领域。本文将对Zigbee进行实验研究,探讨其在物联网应用中的优势和应用场景。 一、实验背景 在开始实验之前,我们需要了解Zigbee的基本原理和特点。Zigbee是一种基于IEEE 802.15.4标准的无线通信技术,它采用了低功耗、低数据速率和短距离传输的特点。Zigbee网络由一个协调器和多个终端节点组成,协调器负责网络的管理和控制,终端节点负责数据的传输和接收。 二、实验目的 本次实验的主要目的是通过搭建一个简单的Zigbee网络,了解其通信原理和网络拓扑结构。同时,我们还将探索Zigbee在家庭自动化中的应用,比如智能照明、温度监测等。 三、实验步骤 1. 实验器材准备:我们需要准备一台Zigbee协调器、多个Zigbee终端节点、一台电脑和相应的软件开发工具。 2. 网络搭建:首先,我们将协调器和终端节点连接到电脑上,并通过软件开发工具进行配置。然后,我们按照一定的拓扑结构将终端节点连接到协调器上,

形成一个Zigbee网络。 3. 通信测试:在网络搭建完成后,我们可以进行通信测试。通过发送和接收数 据包,我们可以验证网络的可靠性和稳定性。同时,我们还可以通过改变节点 之间的距离和障碍物的影响,来观察Zigbee网络的传输性能。 四、实验结果与分析 在实验过程中,我们成功搭建了一个Zigbee网络,并进行了通信测试。实验结果显示,Zigbee网络具有较高的可靠性和稳定性,即使在节点之间存在一定的 障碍物,数据传输的成功率也很高。此外,我们还观察到Zigbee网络的传输距离较短,适用于室内环境或者小范围的应用场景。 根据实验结果,我们可以得出以下结论: 1. Zigbee网络适用于低功耗、短距离传输的应用场景,比如家庭自动化、智能 城市等。 2. Zigbee网络具有较高的可靠性和稳定性,适用于对通信质量要求较高的应用。 3. Zigbee网络的传输距离较短,需要在设计网络拓扑结构时考虑节点之间的距 离和障碍物的影响。 五、应用展望 基于对Zigbee的实验研究,我们可以看到其在物联网应用中的广阔前景。随着智能家居的兴起,越来越多的家庭开始使用智能设备来实现远程控制和监测。Zigbee作为一种低功耗、短距离通信的技术,可以为智能家居提供可靠的通信 支持。此外,Zigbee还可以应用于工业控制、智能交通等领域,为物联网的发 展提供强有力的支持。 结论

zigbee协议发展现状及未来趋势分析

zigbee协议发展现状及未来趋势分析概述 Zigbee协议是一种无线通信协议,它被设计用于低功耗、低数据率以及向导向的无线网络。它在许多应用领域有着广泛的应用,包括智能家居、工业自动化、医疗保健等。本文将分析Zigbee协议的发展现状,并展望未来的趋势。 一、发展现状 1.1 标准化和推广 2003年,Zigbee联盟成立并发布了Zigbee 1.0标准。随着时间的推移,该协议得到了不断的改进和完善。目前,Zigbee联盟已经发布了多个版本的协议标准,包括Zigbee 2.0、Zigbee 3.0等。这些标准的发布使得Zigbee协议得到了更广泛的应用和推广。 1.2 应用领域 Zigbee协议在智能家居、工业自动化、医疗保健等领域有着广泛的应用。在智能家居领域,Zigbee协议被用来构建智能家居设备之间的无线连接,如智能灯泡、智能插座等。在工业自动化领域,Zigbee协议被使用在传感器网络中,实现对工业设备进行监测和控制。在医疗保健领域,Zigbee协议可以用于构建医疗设备之间的无线通信,如体温计、心率检测仪等。 1.3 优势和瓶颈 Zigbee协议相比于其他无线通信协议具有一些优势。首先,它低功耗,可长期使用电池供电。其次,它的网络拓扑结构灵活,可以支持多种网络结构。此外,Zigbee协议能够提供可靠的数据传输和安全的通信。然而,Zigbee协议也存在一些瓶颈。例如,传输速率相对较低,只适用于低数据率的应用。此外,与其他无线技术相比,Zigbee网络的覆盖范围较窄。

二、未来趋势 2.1 物联网的发展 随着物联网的发展和应用的增加,对Zigbee协议的需求也将继续增加。物联网需要大量的物联设备之间进行无线连接,并实现智能化和自动化的功能。Zigbee协议作为一种低功耗的无线通信协议,与物联网需求高度契合,因此在未来将有更广泛的应用。 2.2 Zigbee 3.0标准 Zigbee 3.0标准是Zigbee协议的最新版本,它对之前的版本进行了整合和优化。该版本致力于提供更好的互操作性,使得不同厂商的设备可以更好地兼容和协作。此外,Zigbee 3.0标准还增加了对IPv6和IP层安全的支持,进一步提高了协议的 可用性和安全性。 2.3 跨协议互通 随着物联网的发展,不同的无线通信协议之间的互通性已成为一个重要的问题。为了实现设备之间的无缝连接,跨协议互通是未来的一个趋势。可以预见,在未来几年中,Zigbee协议将与其他无线通信协议进行更深入的集成,实现设备间的互联互通。 2.4 安全性提升 随着应用的增加,对设备和网络的安全性要求也越来越高。未来,Zigbee协议 将继续提升对数据传输和通信的安全性。这包括更强大的加密算法、身份验证机制以及对潜在安全威胁的检测和防御能力的增强。 结论 Zigbee协议作为一种低功耗、低数据率的无线通信协议,在智能家居、工业自 动化和医疗保健等领域得到了广泛应用。未来,随着物联网的发展和对设备互联的

zigbee网络建立过程简介

星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个 先前指定的父设备直接加入网络。 一、协调器初始化网络 协调器建立一个新网络的流程如图1所示。 图1 协调器建立一个新网络 1、检测协调器 建立一个新的网络是通过原语NLME_NETWORK_FORMATION.request发起的,但发起 NLME_NETWORK_FORMATION.request原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUEST的 NLME_NETWORK_FORMATION.confirm的原语来通知上层这是一个非法请求。 2、信道扫描 协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。信道扫描包括能量扫描和主动扫描两个过程。首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内的信道等待进一步处理。接着在可允许能量值内的信道执行主动扫描,网络层管理实体通过审查返回的PAN描述符列表,确定一个用于建立新网络的信道,该信道中现有的网络数目是最少的,网络层管理实体将优先选择没有网络的信道。如果没有扫描到一

zigbee实训报告总结

zigbee实训报告总结 Introduction Zigbee是一种低功耗、低速率、低成本的无线通信技术,旨在提供简便的无线连接解决方案。本篇文章总结了我们参加的Zigbee实训的经验和成果。 1. 实训目的 本次实训旨在让我们了解Zigbee技术的基本原理和应用,培养我们在物联网领域的实践能力。通过进行实际操作和实验,我们可以更好地理解并掌握Zigbee协议栈的功能和使用方法。 2. 实训内容 2.1 硬件准备 在实训开始前,我们需要准备相应的硬件设备,其中包括Zigbee通信模块、开发板以及相应的传感器。这些硬件设备使我们能够建立起一个基于Zigbee的无线传感器网络。 2.2 Zigbee协议栈 在实训过程中,我们学习了Zigbee协议栈的结构和功能。它包括物理层、MAC层、网络层和应用层。我们在实验中使用TI的Z-Stack软件包进行协议栈的开发和调试。 2.3 网络拓扑建立

我们学习了如何建立Zigbee网络的拓扑结构,包括星型拓扑、树型拓扑和网状拓扑。同时,我们还了解了路由协议和网络子树的概念,以及如何使用网络层的路由表实现数据包的路由。 2.4 数据传输与处理 在实验中,我们学习了如何使用Zigbee传输数据。通过配置和使用Zigbee的数据帧,我们能够实现不同设备之间的数据传输,并在接收端对传输的数据进行处理和解析。 3. 实训成果 在实训的过程中,我们不仅仅是理论的学习,更是实际的操作。通过完成一系列的实验任务,我们熟悉了Zigbee技术的应用,掌握了Zigbee协议栈的开发和调试方法。 同时,我们还学会了使用Zigbee通信模块建立无线传感器网络,并成功实现了数据的传输和处理。这些实践经验对我们今后从事物联网相关工作具有很大的帮助。 4. 总结与展望 通过参加这次Zigbee实训,我们对物联网领域的Zigbee技术有了更深入的了解。我们学会了如何利用Zigbee协议栈搭建无线传感器网络,并实现了数据的传输和处理。 同时,我们也认识到目前Zigbee技术在物联网领域的广泛应用,并对其未来的发展前景充满期待。我们相信,在不久的将来,Zigbee技术将在各个领域中发挥更重要的作用。

zigbee应用

zigbee应用 ZigBee技术是一种低功耗、近距离、低速率无线通信技术,具有低功耗、低成本、简单易用等特点,广泛应用于智能家居、物联网、 能源管理、电力控制等领域。本文将从ZigBee技术的基本原理、应用 案例以及未来发展等方面进行介绍,旨在帮助读者更好地理解和了解ZigBee技术的应用。 一、ZigBee技术基本原理 ZigBee技术是一种基于IEEE802.15.4标准的无线通信技术,使 用全球2.4GHz频段,采用工作在低速率模式下的设备,适用于大范围 的低功耗应用。ZigBee技术主要包含三个基本组件:设备、协调器和 网络。 设备是指采用ZigBee技术的终端设备,如传感器、开关等,用 于感知环境信息,并将其通过ZigBee网络传输到协调器。 协调器是ZigBee网络的核心节点,负责组网、路由和管理网络 中的设备。它还可以与上层网络(如无线局域网)进行通信,实现设 备与互联网的连接。 网络是由协调器和多个设备组成的拓扑结构,通过ZigBee协议 进行通信。ZigBee网络分为星型、网状和混合三种结构,可以根据不 同应用需求选择不同的拓扑结构。 ZigBee技术通过低功耗的无线通信方式实现设备之间的数据传输。它采用短距离通信,通信距离一般在10-100米之间,适用于室内环境。同时,ZigBee技术在传输过程中对数据进行了优化,采用了低速率的 传输模式,降低了能耗。 二、ZigBee技术应用案例 1. 智能家居 智能家居是ZigBee技术最常见的应用领域之一。通过将传感器、开关、灯光等设备连接到ZigBee网络中,实现对家居环境的智能控制。用户可以通过智能手机、平板电脑等终端设备,远程控制家居设备的

Zigbee无线通信技术

Zigbee无线通信技术 摘要:是基于标准的低功耗局域网;根据国际标准规定,ZigBee技术是一种短距离、低功耗的技术;这一名称又称紫蜂协议来源于蜜蜂的八字舞,由于蜜蜂bee 是靠飞翔和“嗡嗡”zig地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络;其特点是近距离、低复杂度、自组织、低功耗、低数据速率;主要适合用于自动控制和远程控制领域,可以嵌入各种设备;简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网;ZigBee是一种低速短距离传输的协议;ZigBee协议从下到上分别为PHY、媒体访问控制层MAC、传输层TL、NWK、APL等;其中和访问控制层遵循标准的规定 关键词:ZigBee 技术特性标准协议应用系统 引言 ZigBee作为一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术,有效弥补了低成本、低功耗和低速率无线通信市场的空缺,其成功的关键在于丰富而便捷的应用,而不是技术本身;我们有理由相信在不远的将来,将有越来越多的内置式ZigBee功能的设备进入我们的生活,并将极大地改善我们的生活方式和体验; 一、Zigbee技术简介 什么是Zigbee Zigbee一词源自蜜蜂群在发现花粉位置时,通过跳ZigZag形舞蹈来告知同伴,达到交换信息的目的;可以说是一种小的动物通过简捷的方式实现“无线” 的沟通;人们借此称呼一种专注于低功耗、低成本、低复杂度、低速率的近程无线网络通信技术,亦包含此寓意;ZigBee联盟成立于2001年8月,2002年下半年,英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司等四大公司加盟ZigBee联盟,这一事件成为ZigBee技术的

ZigBee基础知识

ZigBee基础知识 一、ZigBee特点 ZigBee技术是一种新兴的短距离、低功耗、低成本、低数据传输率的无线通信技术。它的主要特点如下: 1)低功耗:在低功耗待机模式下,两节普通5号干电池可使用6~24个月。 2)低速率:数据传输速率只有10kb/s〜250kb/s,专注于低速数据传输应用。 3)低成本:因为ZigBee数据传输速率低,协议简单,降低了对通信控制器的要求,所以大大降低了成本。 4)短距离:传输距离一般介于10〜100m之间,在增加RF发射功率后,亦可增加到1〜3km。这指的是相邻节点间的距离,如果通过路由和节点间通信的接力,传输距离将可以更远。 5)短时延:Zigbee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。 6)容量大:Zigbee可采用星状、簇状和网状网络结构,一个主节点可管理254个子节点,同时主节点还可由上一层网络节点管理,这样可组成65000多个节点。 7)安全:ZigBee提供了数据完整性检查和鉴权功能,采用AES-128加密算法,各个应用可灵活确定其安全属性。 8)工作频段灵活:使用的频段分别为全球的2.4GHzISM频段(16个信道)、欧洲的868MHz频段(1个信道),以及美国的915MHz频段(10个信道),均为免执照频段。 二、ZigBee工作频率 三、ZigBee的设备类型

ZigBee网络支持两种功能类型的网络节点:全功能器件(FullFunctionDevice, FFD)和精简功能器件(ReduceFunctionDevice,RFD)。 全功能器件拥有完整的协议功能,在网络中可以作为协调器(Coordinator),路由器(Router)和普通节点(Device);而精简功能器件旨在实现最简单的协议功能而设计,只能作为普通节点存在于网络中。全功能器件可以与精简功能器件或其他的全功能器件通信,而精简功能器件只能与全功能器件通信,精简功能器件之间不能直接通信。 四、ZigBee网络节点类型 ZigBee网络包含三种节点类型:ZigBee协调器(ZigBeeCoordinator,ZC)、ZigBee路由器(ZigBeeRouter,ZR)和终端设备(ZigBeeEndDevice,ZED)。 协调器只能是全功能器件FFD。一个PAN的网络中,至少要有一个全功能器件作为网络的协调器,它可以看作是一个PAN的网关节点(SINK节点)。它是网络建立的起点,负责PAN网络的初始化,确定PAN的ID号和PAN操作的物理信道并统筹短地址分配,充当信任中心和储存安全密钥,与其他网络的连接等。 在任何一个拓扑网络上,所有设备都有一个唯一的64位IEEE长地址,该地址可以在PAN中用于直接通信。协调器在加入网络之后获得一定的短地址空间,在这个空间内,他有能力允许其他节点加入网络,并分配16位短地址给节点。因此在设备发起连接时采用的是64位IEEE长地址,只有连接成功后,系统分配了PAN的标志符后,才能采用16位的短地址来通信。 路由器可以只运行一个存放有路由协议的精简协议栈,负责网络数据的路由,实现数据中转功能。在网络中最基本的节点就是终端节点ZED,一个终端节点可以是全功能器件FFD或者是精简功能器件RFD。 Zigbee网络拓扑结构比较流行的有三种:星型网络(Star)、簇状型网络(Cluster)、网状型网络(Mesh)。 五、ZigBee协议通信原语 在分层的通信协议中,层与层之间是通过服务接入点(ServiceAccessPoint,SAP)相连接的。每一层都可以通过本层与下一层的SAP调用下层所提供的服务,同时通过与上一层的SAP为上层提供相应服务。SAP是层与层之间的唯一接口,而具体的服务是以通信原语的形式供上层调用的。在调用下层服务时,只需要遵

解析Zigbee技术

1、Zigbee来源于蓝牙 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对家庭自动化控制和工业遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线数据通信的需求越来越强烈,这种无线数据传输必须是高可靠的,并能抵抗工业现场的各种电磁干扰。因此,经过人们长期的努力,Zigbee协议在2003年中通过后,于2004正式问世了。 2、Zigbee就是一个属于你自己的高可靠的无线数传网络 Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络不仅可以“无限”扩展开来,而且还可以与现有的其它各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。 不同的是,Zigbee网络主要是为工业现场自动化控制数据传输而建立,因而,它必须具有简单,使用方便,工作可靠,价格低的特点。而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个 Zigbee“基站”却不到几百元人民币;每个Zigbee网络节点不仅本身可以为监控对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。 每个Zigbee网络节点(FFD和RFD)可以支持多到31个传感器和受控设备,每一个传感器和受控设备中可以有8种不同的接口方式。可以采集和传输数字量和模拟量。 3、Zigbee技术的应用领域 Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。工业现场对无线数据传输的要求及Zigbee技术的特点:低功耗,低数据量(250KPS),低成本,使用免费的ISM频段(2.4G),高的抗干扰性能的直序扩频通信方式(DSSS),高保密性(64位出厂编号和支持AES-128加密),高集成度和高的可靠性;节点模块之间具有自动动态组网的功能,采用了包括网状网在内的拓扑结构,使用了碰撞避免机制,信息在整个Zigbee网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性。 4、Zigbee的发展前景 Zigbee技术和RFID技术在2004年就被列为当今世界发展最快,市场前景最广阔的十大最新技术中的两个。关于这方面的报道,你只需在百度,或GOOGLE搜

ZIGBEE开源协议栈

ZIGBEE开源协议栈 篇一:ZigBee协议栈中文完整版 Zigbee协议栈中文说明 1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC 层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee 堆栈的余下部分,它们都是器件中可寻址的组件 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。

端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子: 图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象(ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。 APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868/915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。

ZigBee安全协议分析

ZigBee安全协议分析 摘要:ZigBee作为短距离无线通信的代表,其安全协议依然遵循现代密码学的基本原理,本文首先概述了Zigee安全协议,然后描述了ZigBee安全协议的 各个阶段,包括配对阶段、身份认证与协商阶段、通信安全保护阶段,最后描述 了ZigBee的设备安全。 关键字: ZigBee安全协议,认证与加密,设备安全 1.ZigBee安全协议概述 ZigBee 是一种安全的短距离无线通信系统,ZigBee安全协议提供了基本的 安全功能。包括安全密钥创建、安全密钥传输、对称加密帧保护和安全设备管理,ZigBee安全协议流程经历了三个阶段,包括配对阶段、身份认证与协商阶段、通信安全保护阶段。 1.ZigBee配对阶段 配对用于在协调器节点和路由器或者终端节点之间形成关联。ZigBee支持对称密码体系,支持以下几种配置[1]: (1)配置密钥:通过预配置的方法,将128bit共享密钥预配置在节点间。 (2)配置口令:用户在节点间上输入相同的口令。口令经过口令变换算法 变换为128bit的共享密钥。 (3)配置bootstrap:从bootstrap获取口令,节点获取到bootstrap发 送的口令,基于口令变换为128bit的共享密钥。 (4)不配置任何信息:节点间直接配对,无需输入。 第一种配置方式无需输入和输出设备,是最方便的配置方式,也是ZigBee 推荐的方式,第二种配置方式需要输入和输出设备,增加了成本,但可以证明用 户在现场以强化安全,第三种方式需要额外的节点信任的第三方bootstrap,使 网络更加复杂,但是若网络节点很多(ZigBee理论上支持4K的节点),则前两

ZigBee技术发展及其特点

第2章 ZigBee技术及协议分析 2.1 ZigBee技术的开展及其特点]1[ 长期以来,低本钱、短距离、低传输率、低功率的无线通讯市场一直存在着。蓝牙〔Bluetooth〕技术的出现曾让玩具制造商、家庭自动化控制以及工业控制等业界从业者兴奋不已,尽管蓝牙技术有很多优点,但是高昂的价格和其存在的技术缺陷严重影响了这些厂商的使用意愿。对于工业控制、家庭自动化控制等领域而言,蓝牙技术过于复杂、功耗过大、距离近、组网规模达不到应用要求等,而工业自动化等领域对无线通信的需求越来越大。因此,经过人们的努力,于2004年正式推出了ZigBee协议规。 ZigBee的开展根底是IEEE802.15.4标准,它是一种新型的短距、低速、低功耗的无线通信技术,其前身是INTEL、IBM等产业巨头发起的"HomeRF Lite〞无线技术。负责起草IEEE802.15.4标准的工作组于2000年成立,2002年美国摩托罗拉〔Motorola〕公司、荷兰菲利普斯〔Philips〕公司、英国Invensys公司、日本三菱电器公司等发起成立了ZigBee联盟,。到目前为止,ZigBee联盟已有200多家成员企业,而且还在迅速壮大中。这些企业包裹半导体生产商、IP效劳提供商以及消费类电子厂商等,而这些公司都参加了IEEE802.15.4工作组,为ZigBee物理和媒体控制层技术标准的建立做出了它们的奉献。 2004年ZigBee1.0〔又称ZigBee2004〕诞生,它是ZigBee的第一个规,这使得ZigBee有了自己的开展根本标准。但是由于推出仓促存在很多不完善的地方,因此在2006年进展了标准的修订,推出了ZigBee1.1〔又称ZigBee2006〕,但是该协议与ZigBee1.0是不兼容的。ZigBee1.1相较于ZigBee1.0做了很多修改,但是ZigBee1.1仍无法到达最初的设想,于是在2007年再次修订〔称为ZigBee2007/PRO〕,能够兼容之前的ZigBee2006,并且参加了ZigBee PRO局部,此时ZigBee联盟更专注于以下三种应用类型的拓展:家庭自动化〔HA〕、建筑/商业大楼自动化〔BA〕以及先进抄表根底建立〔AMI〕。 随着ZigBee标准的完善以及各软件以及硬件厂商的不断努力,用于ZigBee 开发的软硬件正趋于完善,ZigBee技术的实用化不断推进,其使用领域不断拓展。使ZigBee技术在2004年就被列为当今世界开展最快、市场前景最广阔的十大高新技术之一。

相关主题
文本预览
相关文档 最新文档