学习zigbee入门-9
来源:互联网 发布:透视手机照相机软件 编辑:程序博客网 时间:2024/06/09 23:02
【转】学习zigbee入门-9
SimpleApp 例子解读 1 :
1、实验目的 --设置这些设备自动的进入网络 -- 创建从每一个开关到一个或多个灯的绑定 --从开关设备发送一个改变灯状态的命令 --为某个开关到不同的灯从新指派绑定 -- 之后增加新的灯或开关到该网络
2、实验原理
关于详细的程序清单见 SAPI.C 文件。
初始化 ZB 系统复位(zb_SystemReset) ZB 启动请求(zb_StartRequest)
配 置 ZB 读配置(zb_ReadConfiguration) ZB 写配置(zb_ WriteConfiguration)
ZB 获得设备信息(zb_GetDeviceInfo)
发现(设备,网络和服务发现) ZB 发现设备请求(zb_FindDeviceRequest) ZB 绑定设备请求(zb_BindDeviceRequest) ZB 允许绑定请求(zb_AllowBindRequert) ZB 许可加入请求(zb_PermitJoinRequest)
数据传输 ZB 发送数据请求(zb_SendDataRequest) ZB 接收数据指示(zb_ReceiveDataIndication)
2.1、网络形成
协调器将扫描所有被ZCD_NV_CHANLIST 参数指定的通道和选择一个最少能量的通道。如果有两个及以上的最小能量通道,协调器选择在 ZB网络中存在的序号最小的通道。协调器将选择用 ZCD_NV_PANID 参数指定的网络 ID。路由器和终端设备将扫描用ZCD_NV_CHANLIST 配置参数制定的通道和试图发现 ID为 ZCD_NV_PANID 参数指定的网络。
协调器格式化网络
可以调用下面函数来格式化网络:
NLME_NetworkFormationRequest(
zgConfigPANID,
zgDefaltChannelList,
zgDefaultStartingScanDuration,
beaconOrder,
superframeOrder,
false );
一般不直接调用上面的函数形成网络,ZDO_StartDevice()函数来启动一个设备
路由器和终端设备加入网络
发现一个网络将调用下面函数:
NLME_NetworkDiscoveryRequest(
uint32 ScanChannels,
byte scanDuration );
发现网络存在后,就调用下面函数加入该网络:
NLME_OrphanJoinRequest(
uint32 ScanChannels,
byte ScanDuration );
ZDO_StartDevice()启动该设备。
最好也不要用这两个函数去发现/加入网络,而是用ZDO_StartDevice()启动该设备。
ZDO_StartDevice
功能描述:在该,在网络中启动设备,协调器、路由器、终端设备都可以用该函数启动,启动之后,
设备根据自身的类型去建立或发现和加入网络。
函数原型:
ZDO_StartDevice(
byte logicalType, //--设备逻辑类型
devStartModes_t startMode, //--启动模式
byte beaconOrder, //--信标时间
byte superframeOrder ); //--超帧长度
注意其模式如下:
typedef enum
{
MODE_JOIN, //--加入
MODE_RESUME, //--恢复
//MODE_SOFT, // Not supported yet 注意了,在我得到的无线龙的协议栈,该句话被标示为目前尚不支持
MODE_HARD, //--硬件启动
MODE_REJOIN //--在加入
} devStartModes_t;
2.2、绑定
绑定是控制信息从一个应用层到另一个应用层流动的一种机制。在 ZigBee 06 版本中,绑定机制在所有的设备中被执行。
绑定建立-----这里可以直接调用函数 zb_BindDeviceRequest()发起绑定请求:
zb_BindDevice (
uint8 create, //是否创建绑定,TRUE 创建,FALSH解除
uint16 commandId, //命令 ID,基于某命令的绑定
uint8 *pDestination //指向扩展地址指针 );
函数 APSME_BindRequest 函数创建绑定。
绑定解除 ----解除绑定和建立绑定请求函数都是 zb_ BindDeviceRequest(),但是参数不一样(第一个参数为 FALSH)
2.3 命令
命令就是为了实现某中特定的通信,而指定的一种强制性的通信方式。
3 实验介绍
设备(Devices)
该示范例子有两种应用设备类型----开关和灯。
应用例子工程有作为终端设备(end-device)的简单开关配置和作为协调器或路由器设备的简单管理器配置。
当这个设备第一次开启的时候,它进入一个保持状态 ,LEDx 闪烁。
对于灯管理器设备,在该状态下,按下 UP它将使该设备作为协调器启动,期间要是按下RIGHT 她将使该设备作为路由器启动。
对于开关设备而言,在该状态下,无论是按下 UP还是 RIGHT 都将作为终端设备启动。
命令:有一个单一的应用命令----一个“ (TOGGLE)命令。对于开关该命令作为输
出被定义,对于管理器却作为输入别定义。该命令信息除了命令标志符之外没有其他参数。
绑定:“按钮”绑定被使 用。
在一个开关和一个管理器间绑定被创建,首先是这个管理器要进入允许绑定模式。接着是开关(在一定时间内)发出一个绑定请求。这就将从开关到管理器之间创建一个绑定。
重复上面的过程,一个开关可以与多个管理器绑定。
为某个开关重新分配绑定,这个绑定请求与同一个删除参数被发出。这就将该开关的所有绑定移除。现在就可以用上面的绑定方法重新与其他的管理器进行绑定操作。
针对简单管理器和简单开关的配置编程有详细的描述。确保只能有一个管理器作为协调器,其他都作为路由器。
设备自动加入网络之后(R 闪亮---开关设备,协调器建立网络 R 点亮,路由器加入网络 R 闪烁),采用下面的控制方式来创建绑定:
---通过按某个管理器的 UP使它进入允许绑定模式。---在某个灯开关上按下 UP(10 秒之内)发出绑定请求。----- 这就将使该开关设备绑定到该(处于绑定模式下的)管理器设备上。---当开关绑定成功时,(开关设备上的)G闪亮。---之后,开关设备上的 RIGHT 被按下就将发送“切换”命令,设备上的 G状态切换。--- 如果开关设备上的 DOWN按下,它将移除该设备上所有的绑定。
4.实验操作:
1)、用两个模块选择管理器编译,下载SimpleController EB程序(作为选择管理器灯)
2)、在选一个模块选择开关设备编译,SimpleSwitch EB
3)、选择适当的类型启动,这里三个模块,管理器两个分别作为协调器和路由器启动,开关设备作为终端设备启动。
4)、 建立绑定。可以在协调器和终端设备之间建立绑定,或可以在路由器和终端设备间建立绑定,开关也可以同时绑定所有的管理器设备,其绑定方法如前介绍。
5)、 绑定之后,就可以在建立绑定之间的设备发送命令,可以观察管理设备灯 G的显示状态的变化。
6)、 按下 DOWN 可以解除开关上的所有绑定,从而可以按照 4~5 步从新绑定和传输命令。
5、API 开发一个应用的方法
1)、确定应用中的所有的设备
– 如:温度传感器,占有传感器,自动调温器,加热单元和遥控
– 为他们中的每一个设备都分配一个设备ID(唯一的16位ID)
2)、 确定“ 16位命令ID,为每个设备在设备之间交互信息分配的的16位命令ID 例如:
– 读温度
– 读自动调温器设置
– 加热/制冷单元的控制
3)、为每个“ 命令”,确定设备“引起”(输出)和“吸引”(输入)的命令。
– 温度读是“ 输出”从占有传感器设备到“输入”自动调温器
– 等等
4)、为每个设备创建简单描述符结构。这个包括:
– 为每个设备分配设备ID和版本
– 为设备指定“输出”“输入”的 命令列表
– 指定一个模式(profile)ID。这个是唯一的应用模式16位的身份识别码,由ZB联盟分配。
5)、 为每一个“命令”
– 定义信息交换格式和它的解释
– 例如:温度值能被交换作为
( 格式 ) “一个8位值”
( 解释 ) “0 指示0C 和 255指示 64 C 步长为 0.25 C ”
- 学习zigbee入门-9
- zigbee学习笔记---入门
- 学习zigbee入门-3
- 学习zigbee入门-4
- 学习zigbee入门-5
- 学习zigbee入门-6
- 学习zigbee入门-7
- 学习zigbee入门-8
- 学习zigbee入门-10
- 学习zigbee入门-11
- ZigBee 入门学习
- 转】学习ZigBee入门-2
- zigbee入门 z-stack学习入门
- 转】[Zigbee]如何学习zigbee -- 无线单片机怎样入门
- Zigbee入门
- Zigbee深入浅出之Zigbee入门
- ZigBee学习
- zigbee 学习
- HDU 1031
- HDU 2049
- HDU 1257
- HDU 1878
- HDU 1097
- 学习zigbee入门-9
- HDU 2546
- HDU 2602
- HDU 2191
- HDU 1028
- HDU 1029
- HDU 1102
- 大学感想
- HDU 1049