ZigBee TI ZStack CC2530 5.4 实例(二)终端设备低功耗与电池寿命02-实验

简介: (配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 之前在网上看过一些关于如何配置终端设备,使其进入低功耗模式的,但大多讲的比较复杂,最后也没有明确的结果可以看得到的功耗是否真的降下来了。

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


之前在网上看过一些关于如何配置终端设备,使其进入低功耗模式的,但大多讲的比较复杂,最后也没有明确的结果可以看得到的功耗是否真的降下来了。所以,我决定亲自做一下实验,并且写一篇有图有真相的博客,与大家分享~

上一节主要是关于ZigBee设备的低功耗相关理论的讲解。

本节将讲述如何对终端设备进行低功耗配置,以及使用Monsoon公司的Power Monitor软件实时测量终端设备的功耗和估算电池寿命。


一、实验目的

本次实验的目的是配置Z-Stack协议栈,让ZigBee终端设备可以进入低功耗模式。并且通过精密的仪器,给出“普通模式”下和“低功耗模式”下确切的规功耗情况。

二、实验准备

1、硬件准备

(1)Power Monitor仪器一台,如下图所示:

(2)ZigBee协调器一个,如下图所示:


(3)ZigBee终端设备一个(用的是上次中等规模组网实验的ZigBee模块),如下图所示;

(4)SmartRF04EB下载器一个;

(5)USB线(供电线)一根;

2、软件准备

(1)EW8051 8.10.3;

(2)SmartRF Flash Programmer 1.12.8;

(3)Power Tool 4.0.4.12,软件界面如下:


三、代码修改

1、选取模板工程

选取网盘分享的各个版本的源代码中任意一个都可以,并以此为基础进行本次实验。

2、ZigBee终端设备(EndDevice)修改

(1)选择终端设备

既然我们是要对终端设备进行配置修改,那么肯定就是在IAR软件界面上的Workspace位置选择EndDeviceEB,如下图所示:

(2)开启低功耗模式

之前在网上看的教程中讲的是要配置很多参数,但后来实际仔细分析过代码后发现,很多网上提及需要配置的地方Z-Stack协议栈中都是默认配置好了的,实际真正关键的、需要我们修改的地方只有一处,如下图所示:

将预编译选项中原本的“xPOWER_SAVING”前面的“x”去掉,修改为“POWER_SAVING”。这样,编译下载之后,终端设备即可自动进入低功耗模式!

(3)编写功能代码

我们实际关心的应该是终端设备在ZigBee网络中的功耗表现。为了直观地体现出ZigBee终端设备的在网状态,我们编写代码实现终端设备入网成功后,以2s为周期向ZigBee协调器发送测试数据。ProjectApp.c文件和user_api.c文件中的关键代码分别如下:

uint16 ProjectApp_ProcessEvent( uint8 task_id, uint16 events )
{
......
  if ( events & PROJECTAPP_SEND_MSG_EVT )
  {
    ProjectApp_SendUnicast16();
    return (events ^ PROJECTAPP_SEND_MSG_EVT);// return unprocessed events
  }
......
}
void user_state_change( afIncomingMSGPacket_t *pkt )
{
......
    if((devStates_t)(pkt->hdr.status) == DEV_END_DEVICE)
    {
      osal_start_reload_timer( ProjectApp_TaskID, PROJECTAPP_SEND_MSG_EVT, 2000);
    }
......
}

3、ZigBee协调器修改

(1)选择ZigBee协调器

按照上面同样的方法,在IAR软件界面上的Workspace位置选择CoordinatorEB即可。

(2)编写功能代码

ZigBee协调器收到数据后,只要将收到的数据通过串口打印出来即可。ProjectApp.c文件中的关键代码如下:

static void ProjectApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
  switch ( pkt->clusterId )
  {
    case PROJECTAPP_CLUSTERID:
      HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
      printf("%s",pkt->cmd.Data);
      break;
  }
}

四、实验验证

1、ZigBee协调器

(1)烧写固件

可以选择直接用Flash Programmer烧写hex文件,或者是在IAR中编译成功后直接下载。

(2)连接至Power Monitor

将ZigBee协调器上的核心模块连接至Power Monitor,如下图所示:

(3)功耗测试

测得其功耗情况如下图所示:

可见图中交点处的电流为27.371mA

(4)连接至电脑

将烧好程序的ZigBee协调器模块从Power Monitor上取下,并插回ZB502底板。通过串口转USB连接到电脑,在电脑端运行串口调试助手。复位之后,可见串口调试助手界面如下图所示:

2、ZigBee终端设备

(1)普通模式测试

a、烧写固件

针对于没有做过任何更改的终端设备的程序,可以选择直接用Flash Programmer烧写hex文件,或者是在IAR中编译成功后直接下载。

b、连接至Power Monitor

将ZigBee终端设备连接至Power Monitor,如下图所示:

c、功耗测试

测得其功耗情况如下图所示:

可见图中交点处的电流为 8.087mA
以及软件估算得出: 3.3V300mAh的电池在当前这种功耗的情况下,使用寿命约为32.44小时
PS:有兴趣的朋友可以仔细分析上面这张图,里面包含了ZigBee终端设备入网的整个过程中的功耗情况!

d、ZigBee协调器情况

此时,我们通过串口调试助手可以看到,终端设备正在不断地向协调器发送数据。如下图所示:

由此可见,终端设备目前在ZigBee网络处于正常工作状态。

(2)低功耗模式测试

a、烧写固件
针对于开启了低功耗模式的终端设备的程序,可以选择直接用Flash Programmer烧写hex文件,或者是在IAR中编译成功后直接下载。
b、连接至Power Monitor
与前面相同。
c、功耗测试
测得其功耗情况如下图所示:
可见图中交点处的电流为 0.011mA,即 11uA
以及软件估算得出: 3.3V300mAh的电池在当前这种功耗的情况下,使用寿命约为142.93小时!果然,进入低功耗模式后,电池寿命会大幅增长!尽管如此,但和实际产品开发中的要求还是有一定差距的,需要进一步降低功耗!
PS:有兴趣的朋友同样可以仔细分析上面这张图,里面包含了ZigBee终端设备入网的整个过程中的功耗情况!
d、ZigBee协调器情况
与ZigBee终端设备在普通模式下工作时,是完全一样的情况,此处就不再赘述~
e、补充
进一步测试:将OnBoard.c文件中的InitBoard()函数中的这行代码(在Z-Stack协议栈最原始的代码里,此处是用的HAL_KEY_INTERRUPT_DISABLE,后来实验中改为了HAL_KEY_INTERRUPT_ENABLE):
    HalKeyConfig(HAL_KEY_INTERRUPT_ENABLE, OnBoard_KeyCallback);
修改成如下:
    HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback);
再测得ZigBee终端设备的功耗如下:
可见图中交点处的电流为 0.014mA,即 14uA
以及软件估算得出: 3.3V300mAh的电池在当前这种功耗的情况下,使用寿命约为134.78小时
PS:感兴趣的朋友可以对比一下这张图与前一张图之间的区别。


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

相关文章
|
传感器 物联网
( zigbee)CC2530+BH1750光敏传感器获取光照强度
( zigbee)CC2530+BH1750光敏传感器获取光照强度
803 0
( zigbee)CC2530+BH1750光敏传感器获取光照强度
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
548 0
基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP
|
传感器 网络协议 物联网
基于CC2530(ZigBee)设计的自动照明系统
基于ZigBee的自动照明系统设计,上面连接了光感传感器,ESP8266WIFI模块。通过ESP8266与手机APP之间通信,ESP8266创建热点,配置为TCP服务器模式; 手机APP连接上ESP8266的热点之后,再连接ESP8266创建的服务器,完成通信。 手机APP上通过按钮可以控制B,C开发板上LED灯的开关。
555 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都可以编译运行安装。
842 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,历经了非常多的版本。
3244 0
|
移动开发 物联网 流计算
ZigBee TI ZStack CC2530 3.12 LED驱动移植及使用
(配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 一、前言 关于Z-Stack协议栈中的LED控制,如果使用协议栈中自带的驱动,很简单就可以实现非常丰富的功能。
2061 0
|
物联网
ZigBee TI ZStack CC2530 3.14 按键驱动01-轮询模式
(配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 在Z-Stack协议栈中,对于按键的检测,分为两种不同的机制,分别称为“轮询模式”和“中断模式”,类比单片机中的按键检测,还是很好理解的。
1709 0
|
物联网
ZigBee TI ZStack CC2530 3.15 按键驱动02-中断模式
(配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) (配套源码、软件、开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911)
1308 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带来了响应调整大小、自动动画、语音原型、插件和应用程序集成等新功能,