ZigBee TI ZStack CC2530 4.15 组播通信

简介: (配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 上一节中,我们详细介绍了ZigBee的第二种无线通信方式——广播;本节中,我们将介绍ZigBee的第三种无线通信方式——组播。

(配套源码软件开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911


上一节中,我们详细介绍了ZigBee的第二种无线通信方式——广播;本节中,我们将介绍ZigBee的第三种无线通信方式——组播。


(仅描述不同之处)

本节中实现的功能为:两个以上ZigBee设备组网成功后,默认都在同一个分组中,网络中任意一个设备按下KEY1,网络中其余属于该分组的ZigBee设备上的LED1状态均会取反,同时串口也会打印出接收到的组播数据;网络中任意一个设备按下KEY2,该设备的组状态就会取反(进入该组<—>离开该组)。

1、组播函数

与组播通信相关的函数,都存在于aps_groups.h文件中,所以我们一开始就应先在ProjectApp.c文件中将该头文件包含进来:

#include "aps_groups.h"

我们只能看到相关函数声明,而看不到具体的函数实现(半开源)。本节中需要使用的三个函数aps_AddGroup( )、aps_FindGroup( )、aps_RemoveGroup( )的函数声明及说明如下:

/*
 * Add a group for an endpoint
 */
extern ZStatus_t aps_AddGroup( uint8 endpoint, aps_Group_t *group );

/*
 * Find a group with endpoint and groupID
 *  - returns a pointer to the group information, NULL if not found
 */
extern aps_Group_t *aps_FindGroup( uint8 endpoint, uint16 groupID );

/*
 * Remove a group with endpoint and groupID
 *  - returns TRUE if removed, FALSE if not found
 */
extern uint8 aps_RemoveGroup( uint8 endpoint, uint16 groupID );

2、定义“组号”

为了进行组播通信,我们必然需要定义一个“组号”,我们将定义放在ProjectApp.h文件中:

......
#define PROJECTAPP_TEST_GROUP         0x0001
......

3、定义及初始化“分组”

“分组”的类似于无线通信的地址,我们将其定义为全局变量:

......
aps_Group_t    ProjectApp_Group;
......
“分组”的初始化放在ProjectApp_Init( )函数中:

......
  // By default, all devices start out in Group 1
  ProjectApp_Group.ID = 0x0001;
  osal_memcpy( ProjectApp_Group.name, "Group 1", 7  );
  aps_AddGroup( PROJECTAPP_ENDPOINT, &ProjectApp_Group );
......

4、组播发送函数,声明及定义如下:

......
static void ProjectApp_SendGroup( void );
......
static void ProjectApp_SendGroup( void )
{
  char theMessageData[ ] = "Group data\r\n";

  ProjectApp_DstAddr.addrMode       = (afAddrMode_t)AddrGroup;
  ProjectApp_DstAddr.endPoint       = PROJECTAPP_ENDPOINT;
  ProjectApp_DstAddr.addr.shortAddr = PROJECTAPP_TEST_GROUP;  

  AF_DataRequest( &ProjectApp_DstAddr,
                  &ProjectApp_epDesc,
                  PROJECTAPP_CLUSTERID,
                  (byte)osal_strlen( theMessageData ) + 1,
                  (byte *)&theMessageData,
                  &ProjectApp_TransID,
                  AF_DISCV_ROUTE,
                  AF_DEFAULT_RADIUS
                );
}
其中需要注意的是,目的地址的短地址(ProjectApp_DstAddr.addr.shortAddr)部分,需要指定为对应的“组号”;相信这个函数的定义大家也是一眼就能看明白~
5、实验验证

(1)调用组播发送函数

static void ProjectApp_HandleKeys( uint8 shift, uint8 keys )
{
......
  if ( keys & HAL_KEY_SW_1 )
  {
    ......
    ProjectApp_SendGroup();
  }
......
}
(2)取反设备在组状态
static void ProjectApp_HandleKeys( uint8 shift, uint8 keys )
{
  ......
  if ( keys & HAL_KEY_SW_2 )
  {
    ......
    aps_Group_t *grp;
    grp = aps_FindGroup( PROJECTAPP_ENDPOINT, PROJECTAPP_TEST_GROUP );
    if ( grp )
    {
      // Remove from the group
      aps_RemoveGroup( PROJECTAPP_ENDPOINT, PROJECTAPP_TEST_GROUP );
    }
    else
    {
      // Add to the group
      aps_AddGroup( PROJECTAPP_ENDPOINT, &ProjectApp_Group );
    }
  }
}

(3)编译下载

在IAR左侧的Workspace中,一个ZigBee设备选择CoordinatorEB编译下载,其余所有的ZigBee设备任意选择RouterEB或EndDeviceEB编译下载,如下图所示进行选择;

(4)实验现象

所有的ZigBee设备上电后,任意ZigBee设备上的KEY2可以取反该设备的“在组状态”(进入该组<—>离开该组);任意ZigBee设备上的KEY1可以触发组播发送;凡是属于同一个分组下的ZigBee设备,都能收到该组播数据包,该设备上的LED1状态会取反,同时串口每次都会打印出“Group data”:



(配套源码软件开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911

相关文章
|
传感器 物联网
( zigbee)CC2530+BH1750光敏传感器获取光照强度
( zigbee)CC2530+BH1750光敏传感器获取光照强度
778 0
( zigbee)CC2530+BH1750光敏传感器获取光照强度
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
525 0
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的自动照明系统
基于ZigBee的自动照明系统设计,上面连接了光感传感器,ESP8266WIFI模块。通过ESP8266与手机APP之间通信,ESP8266创建热点,配置为TCP服务器模式; 手机APP连接上ESP8266的热点之后,再连接ESP8266创建的服务器,完成通信。 手机APP上通过按钮可以控制B,C开发板上LED灯的开关。
529 0
|
传感器 物联网 Linux
基于CC2530(ZigBee设计)的温度报警器
这是基于CC2530设计的远程温度报警器,通过CC2530终端检测环境温度上传给手机APP实时显示。 一共有两块CC2530开发板,这里就分别称为A板(当做协调器)、B板(当做温度节点),A板上接了ESP8266 WIF模块,用于与手机APP之间通信。B板上接了DS18B20 温度传感器模块,用于给A板传递检测的温度,A板收到DS18B20的温度之后,发送给手机APP显示。APP上位机采用Qt框架设计,支持跨平台,Android、windows、IOS、Linux都可以编译运行安装。
815 0
|
物联网
ZigBee(CC2530)最小系统PCB设计(AD18开发软件)
ZigBee(CC2530)最小系统PCB设计(AD18开发软件
ZigBee(CC2530)最小系统PCB设计(AD18开发软件)
|
物联网
ZigBee TI ZStack CC2530 2.3 协议栈版本
(配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 一、协议栈发展历史 TI的ZigBee 协议栈Z-Stack,从最开始的Z-Stack 0.1到大家熟悉的ZStack-CC2530-2.5.1a,再到几个月前刚刚发布的最新版本——Z-Stack 3.0.1,历经了非常多的版本。
3225 0
|
移动开发 物联网 流计算
ZigBee TI ZStack CC2530 3.12 LED驱动移植及使用
(配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 一、前言 关于Z-Stack协议栈中的LED控制,如果使用协议栈中自带的驱动,很简单就可以实现非常丰富的功能。
2023 0
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件Adobe XD 2023版本软件下载安装教程(内含所有版本)
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件,全新的桌面端UX原型工具,这是新一代网页与移动应用的UX设计工具。xd能够帮助设计者快速有效的设计图形、建立手机APP以及网站原型等等设计制作,支持设备的尺寸多样。集原型、设计和交互等功能于一体,从网站和移动应用程序到语音交互都可轻松实现,Adobe XD CC带来了响应调整大小、自动动画、语音原型、插件和应用程序集成等新功能,
Adobe Photoshop CC 2019下载中文永久安装和破解教程
Adobe Photoshop CC 2019下载中文永久安装和破解教程
49924 0
Animate CC 2019免费下载丨Adobe Animate CC 2019下载中文完整版永久安装教程
Adobe 提供了一整套可互相配合使用的动画应用程序,助您实现所有创意。使用 Animate CC 创建适用于游戏、应用程序和 Web 的交互式矢量动画。利用 Character Animator CC 将人物实时制成动画。
8380 0