TA的每日心情 | 开心 2013-7-2 13:29 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
|
前些天,不断地探索,和实践中,终于解决了TI公司的半开源Zstack协议栈,在解读官方例程和参考一些资料后后,自己写了一个小型的通讯协议。同时也初步手工制作出一些硬件。在此写下记录和一些问题的分享记录。
先贴上一些实物图吧。
那么对于这个项目的第一篇,首先解决核心组网的问题,这里先设计小型网络的组网和控制的主要问题。
一.zigbee组网的建立,加入,等等。
这里省略一下,毕竟如果细谈zigbee就很复杂了,本来也只是懂得一些皮毛,所以就不细谈,但是要提出一些重点注意的地方。
1,编译中,防止网络因为断电而丢失,那么在zigbee编译时要加上
ZTOOL_P1MT_TASK
MT_APP_FUNC
MT_SYS_FUNC
MT_ZDO_FUNC
NV_RESTORE
其中的NV_RESTORE是比较关键的,当断电重启,能够保持其参数,加入原来的网络中。
当然在Coordinator中,其底层函数还要将重启胡的PAN_IP++中的++去掉,这样重启后,不会再重新建一个,这个问题困扰了我几个月。现在解决了。
协议栈建网后,历程中已经有自动加入网络的,但是为了安全起见,还要或者可以加上手动设置入网控制。那么其核心关键就在于:
第一种,在广播中使用Group ,这样可以让需要的设备手动加入到群组内,那么这样就相对较为安全。(即在协调器中设置KEY事件,当按下时才准加入群中,然后才能共享网络的控制以及,信息)主要涉及下面的东西:
//--------------------------------------------//
// Group Table Element
typedef struct
{
uint16 ID; // Unique to this table
uint8 name[APS_GROUP_NAME_LEN]; // Human readable name of group
} aps_Group_t;
//--------------------------------------------//新建组结构体
aps_Group_t SampleApp_Group;//这里贴的是官方网站的例子的部分代码
//--------------------------------------------// 在任务初始化中的设置
SampleApp_Group.ID = 0x0001;
osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
aps_AddGroup( LightCtl_ENDPOINT, &SampleApp_Group );
//--------------------------------------------//
第二种,在协议栈中有BindingTable.c//BindingTable.h这两个文件中有专门的函数处理网络表的加入,退出,删除等
看图附件中,其函数有英文说明。
2,通过官方例程,合上述的几个关键点。那么就可以初步建立一个断电自己恢复的网络。
下面就是要解决,每一个节点(就是一个设备)的独有代号,这里叫地址。其实每一个zigbee都有唯一的16位长码。但是对于了解zigbee的人都知道网络里是使用short address的,所以在这里,就要知道每个设备的地方。
这里给出几个比较关键的东西:
short_ddr=NLME_GetShortAddr();//本地短地址获得
xad = NLME_GetExtAddr();//长地址获得
//_------------------------__//下面是根据短地址发消息
Lt_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
Lt_DstAddr.endPoint = LightCtl_ENDPOINT;
Lt_DstAddr.addr.shortAddr = 0x00;
if ( AF_DataRequest( &Lt _DstAddr,
(endPointDesc_t *)&Lt_epDesc,
Lt _CLUSTERID,
11, tmpBuf,
&Lt _TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
;
}
else
{
;
}
3.下面就是通信代码的协议的构成的问题。
4.就是传感器代码在zigbee中的移植,其实只要有c51代码很快就能将代码移植进去,只要注意,cc2530一般协议时38M速度,只要注意一下时序,就行。还有一点要注意:不要出现死循环判断。毕竟这个也是个小操作系统。会出现BUG。
那么zigbee的部分先说到这里,这篇只是短短的介绍一下,属于粗浅的认识,和简短的介绍。有什么说的不对的望见谅。
下一步,就是讲STM32的沟通协议完善。
|
-
其中带有温湿度,温度传感器,LED的一个小模块
-
带有RC522的
-
其中带有温湿度,温度传感器,LED的一个小模块2
-
|