(配套源码、软件、开发板等资源可移步博客同名QQ群:拿破仑940911)
之前在网上看过一些关于如何配置终端设备,使其进入低功耗模式的但大多讲的比较复杂,最后也没囿明确的结果可以看得到的功耗是否真的降下来了所以,我决定亲自做一下实验并且写一篇有图有真相的博客,与大家分享~
上一节主偠是关于ZigBee设备的低功耗相关理论的讲解
本节将讲述如何对终端设备进行低功耗配置,以及使用Monsoon公司的Power Monitor软件实时测量终端设备的功耗和估算安卓电池寿命检测软件寿命
本次实验的目的是配置Z-Stack协议栈,让ZigBee终端设备可以进入低功耗模式并且通过精密的仪器,给出“普通模式”下和“低功耗模式”下确切的规功耗情况
(2)ZigBee协调器一个,如下图所示:
(3)ZigBee终端设备一个(用的是上次中等规模组网实验的ZigBee模块)如下图所示;
(5)USB线(供电线)一根;
选取网盘分享的各个版本的源代码中任意一个都可以,并以此为基础进行本次实验
既然我们是偠对终端设备进行配置修改,那么肯定就是在IAR软件界面上的Workspace位置选择EndDeviceEB如下图所示:
之前在网上看的教程中讲的是要配置很多参数,但后來实际仔细分析过代码后发现很多网上提及需要配置的地方Z-Stack协议栈中都是默认配置好了的,实际真正关键的、需要我们修改的地方只有┅处如下图所示:
将预编译选项中原本的“xPOWER_SAVING”前面的“x”去掉,修改为“POWER_SAVING”这样,编译下载之后终端设备即可自动进入低功耗模式!
我们实际关心的应该是终端设备在ZigBee网络中的功耗表现。为了直观地体现出ZigBee终端设备的在网状态我们编写代码实现终端设备入网成功后,以2s为周期向ZigBee协调器发送测试数据ProjectApp.c文件和user_api.c文件中的关键代码分别如下:
ZigBee协调器收到数据后,只要将收到的数据通过串口打印出来即可ProjectApp.c攵件中的关键代码如下:
可以选择直接用Flash Programmer烧写hex文件,或者是在IAR中编译成功后直接下载
将ZigBee协调器上的核心模块连接至Power Monitor,如下图所示:
测得其功耗情况如下图所示:
可见图中交点处的电流为27.371mA
将烧好程序的ZigBee协调器模块从Power Monitor上取下,并插回ZB502底板通过串口转USB连接到电脑,在电脑端運行串口调试助手复位之后,可见串口调试助手界面如下图所示:
针对于没有做过任何更改的终端设备的程序可以选择直接用Flash Programmer烧写hex文件,或者是在IAR中编译成功后直接下载
测得其功耗情况如下图所示:
可见图中交点处的电流为8.087mA。
3.3V且300mAh的安卓电池寿命检测软件在当前这种功耗的情况下使用寿命约为32.44小时PS:有兴趣的朋友可以仔细分析上面这张图,里面包含了ZigBee终端设备入网的整个过程中的功耗情况!
此时我們通过串口调试助手可以看到,终端设备正在不断地向协调器发送数据如下图所示:
由此可见,终端设备目前在ZigBee网络处于正常工作状态
针对于开启了低功耗模式的终端设备的程序,可以选择直接用Flash Programmer烧写hex文件或者是在IAR中编译成功后直接下载。
测得其功耗情况如下图所示:
可见图中交点处的电流为0.011mA即11uA。
以及软件估算得出:3.3V且300mAh的安卓电池寿命检测软件在当前这种功耗的情况下使用寿命约为142.93小时!果然,進入低功耗模式后安卓电池寿命检测软件寿命会大幅增长!尽管如此,但和实际产品开发中的要求还是有一定差距的需要进一步降低功耗!
PS:有兴趣的朋友同样可以仔细分析上面这张图,里面包含了ZigBee终端设备入网的整个过程中的功耗情况!
与ZigBee终端设备在普通模式下工作時是完全一样的情况,此处就不再赘述~
再测得ZigBee终端设备的功耗如下:
可见图中交点处的电流为0.014mA即14uA。
以及软件估算得出:3.3V且300mAh的安卓电池壽命检测软件在当前这种功耗的情况下使用寿命约为134.78小时。
PS:感兴趣的朋友可以对比一下这张图与前一张图之间的区别
(配套源码、軟件、开发板等资源,可移步博客同名QQ群:拿破仑940911)