XBee zigbee 使用指南--- 低功耗和电池寿命

http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件)

目录

低功耗和电池寿命

低功耗设备和电池寿命

使用睡眠模式的应用程序的设计注意事项

睡眠模式

示例:启用睡眠模式


低功耗和电池寿命

本节介绍了利用XBee设备的节能功能所需了解的关键概念。它还提供了一个实验室,可让您将这些概念付诸实践并查看结果。

低功耗设备和电池寿命

无线连接的优点是设备不需要物理线进行通信,并且它们还使用电池代替市电交流电源。但是,电池寿命也可能是主要限制。根据设备的位置,更换电池可能很困难或昂贵。

XBee模块是低功耗设备。他们可以使自己进入暂时的睡眠状态,在此状态下,他们几乎不消耗任何电流。睡眠期间,设备几乎完全关闭,有时无法唤醒之前无法发送或接收数据。

             

真实场景

在许多现实世界中,延长电池寿命很重要。例如,如果您有多个温室,每个温室都将温度传感器连接到XBee模块,则电池寿命至关重要。充满电的电池只能为模块供电一天。

有几种方法可以最大程度地延长电池寿命。例如:

  • 将模块置于一个周期,使其休眠一秒钟,然后唤醒一秒钟,然后再次休眠,可以将电池寿命延长两倍,达到两天。
  • 循环睡眠59秒,然后醒来一秒钟,可以使相同的电池持续60天。更进一步,您可以潜在地延长电池寿命数年。

使用睡眠模式的应用程序的设计注意事项

在使用睡眠模式之前,您必须考虑项目的结构和XBee网络。某些应用(例如温室示例)特别适合于睡眠模式。在这种情况下,模块仅定期发送数据,而不会接收数据。因此,模块可以在大多数时间处于休眠状态,并且仅唤醒以发送温度值。

睡眠模式

XBee ZB终端设备支持三种不同的睡眠模式:

  • 引脚睡眠(SM = 1)
  • 循环睡眠(SM = 4)
  • 带引脚唤醒的循环睡眠(SM = 5)

在这些睡眠模式之一中的终端设备当唤醒以检索缓冲数据时,每100毫秒轮询一次其父对象。当模块进入睡眠模式时:

  • 模块将On / Sleep引脚(引脚13)置为无效(低电平)以指示模块正在进入睡眠模式。
  • 如果启用了CTS硬件流控制,则模块将CTS引脚(引脚12)置为无效(高电平),以指示不应将串行数据发送到模块。
  • 如果配置了关联引脚(引脚15),则将其驱动为低电平以避免使用电源点亮LED。
  • Sleep_RQ引脚(引脚9)配置为下拉输入,以便外部设备可以将其驱动为高电平以唤醒模块(仅适用于SM = 1或SM = 5)。
  • 该模块使所有其他引脚在睡眠期间保持不变,因此它们可以按照用户先前配置的方式运行。

            

当XBee从睡眠中唤醒时:

  • 器件将On / Sleep引脚置为高电平,以指示其处于唤醒状态。
  • 如果启用CTS硬件流控制,则CTS引脚将置为低电平(低电平),指示可以将串行数据发送到模块。
  • 关联引脚恢复其先前配置的操作。
  • 所有其他引脚均保持不变,因此它们可以按照用户先前配置的方式进行操作。

PIN脚睡眠

引脚休眠允许外部微控制器通过控制Sleep_RQ引脚(引脚9)来确定XBee何时休眠以及何时唤醒。通过将Sleep_RQ连接到3.3伏来使Sleep_RQ有效(高电平)时,模块将完成所有操作并进入低功耗状态。当Sleep_RQ引脚被拉低(低)时,模块唤醒。

通过将Sleep Mode(SM)参数设置为Pin Hibernate [1]来启用引脚休眠模式。

循环睡眠

循环睡眠允许模块在指定的时间内睡眠,并唤醒一小段时间以轮询其父代是否有任何缓冲的数据消息,然后再次返回睡眠状态。

通过将“睡眠模式”(SM)参数设置为4或5来启用循环睡眠模式。带引脚唤醒(SM = 5)的循环睡眠与循环睡眠模式(SM = 4)略有不同,可以使模块处于休眠状态。通过取消激活Sleep_RQ引脚来过早唤醒。

以下参数控制循环睡眠:

参数

Name

描述

SP

循环睡眠期

配置模块的睡眠时间。

SN

循环睡眠周期数

配置睡眠时间乘数。

ST

入睡前的时间

定义返回循环睡眠之前模块的不活动时间段(在此期间不发送或接收任何数据)。如果XBee正在发送或接收消息,它将不会进入睡眠状态。

SO

睡眠选项

定义睡眠模式行为的选项:

 

0x02:始终唤醒整整ST时间。

0x04:启用扩展睡眠(完整SP * SN时间睡眠)。

按下“ 调试”按钮以唤醒睡眠设备30秒钟。

示例:启用睡眠模式

本示例向您展示如何延长XBee Zigbee模块的电池寿命。该示例使用套件中包含的所有三个模块来演示Zigbee网络如何在某些模块处于休眠状态时处理消息。

将其中一个模块配置为协调器,将其他两个模块配置为具有不同睡眠模式的终端设备。终端设备会定期将ADC的值发送到另一终端设备。由于接收器处于睡眠状态,因此协调器将存储其所有消息,并在唤醒后将其转发到目标模块。

步骤1:要求

对于此设置,您需要以下硬件和软件。

硬件

  • 三个XBee Zigbee网格套件  模块
  • 三个XBee Grove开发板
  • 三根微型USB电缆
  • 一台电脑

软件

步骤2:连接组件

首先,连接组件并启动XCTU。

  1. 将XBee模块插入XBee Grove开发板,然后使用提供的Micro USB电缆将它们连接到计算机。
  2. 将模块连接到计算机后,打开XCTU。
  3. 确保您处于“ 配置”工作模式

步骤3:配置XBee模块

要在各个XBee模块之间无线传输数据,必须将它们配置为位于同一网络中。请记住,在Zigbee协议中,一台设备必须是协调器,其余设备可以是路由器或终端设备。在这种情况下,您将有两个终端设备配置为使用不同的睡眠模式进行睡眠:一个具有循环睡眠(XBee B),另一个具有pin睡眠(XBee C)。

当XBee C处于睡眠状态时,协调器负责存储从XBee B发送到XBee C的消息。一旦唤醒,它将转发消息。

  1. 使用“ 无线电配置”部分顶部的“  Load default firmware settings ”按钮,恢复所有XBee模块的默认设置

  2. 使用XCTU配置以下参数:

    参数

    XBee A

    XBee B

    XBee C

    影响

    ID

    2015

    2015

    2015

    定义要连接的无线电的网络。网络上的所有无线电必须相同。

    JV

    启用[1]

    启用[1]

    验证协调器是否在同一频道上存在,以加入网络或在找不到频道时退出。

    CE

    启用[1]

    将设备设置为协调器。

    DH

    0013A200

    定义要发送数据的目标地址(高位)。

    DL

    XBee C的SL

    定义要发送数据的目标地址(下部)。使用地址0000000000000000来寻址协调器。

    NI

    协调

    ED_CYCLIC

    ED_PIN

    定义节点标识符,这是模块的人性化名称。

     

    NI的默认值为空白。更改值时,请确保删除空格。

    AP

    已启用API [1]

    已启用API [1]

    已启用API [1]

    启用API操作模式。

    SP

    384

    384

    定义睡眠时间。384(十六进制)= 900(十进制)x 10毫秒= 9秒。

    SM

    循环睡眠[4]

    Pin睡眠[1]

    在XBee B上启用循环睡眠模式,并在XBee C(两个终端设备)上启用引脚休眠睡眠模式。

    ST

    7D0

    定义睡眠前的不活动时间(未收到串行或RF数据)。

    7D0(十六进制)= 2000(十进制)x 1 ms = 2秒。

    SO

    2

    在整个期间保持模块处于唤醒状态。

    D2 / D3

    ADC [2]

    在XBee B中将DIO2 / AD2或DIO3 / AD3引脚设置为ADC,具体取决于XBee模块是THT还是SMT。该引脚连接到电位计。

     

    仅当XBee B是表面贴装(SMT)时,才将D2参数配置为ADC [2]。但是,如果XBee B是通孔(THT),则必须将D3参数配置为ADC [2]而不是D2

    IR

    3E8

    配置XBee B每秒发送IO样本(1000毫秒=十六进制的3E8)。

注意表中的破折号()表示保留默认值。请勿更改默认值。

   3. 使用“无线电配置”部分顶部的“ 写入无线电设置”按钮写入所有XBee模块的设置

步骤4:睡眠

使用此配置,ED_CYCLIC每次唤醒时都会将电位计的值发送到ED_PIN。协调器存储所有发送到ED_PIN的D_CYCLIC样本,直到唤醒为止。要验证,请在XCTU中执行以下步骤:

  1. 选择ED_PIN模块(接收器)。
  2. 切换到控制台工作模式
  3. 打开与模块的串行连接。
  4. 要请求模块进入睡眠状态,请单击控制台顶部的DTR单选按钮以将其禁用(请注意,CTS指示器也已禁用)。

    DTR引脚是相同Sleep_RQ针。禁用DTR选项时,模块进入睡眠状态;否则,模块进入睡眠状态。激活DTR后,模块将唤醒。

  5. 20秒钟左右后,激活DTR按钮。

  6. 检查模块是否接收到一系列IO样本(IO数据样本RX指示器)。

    模块唤醒后,它将立即接收多个IO样本,而不是每秒接收一个(IR参数)。发生这种情况是因为协调器存储了ED_PIN在睡眠状态下无法接收的样本。ED_PIN唤醒后,协调器立即发送所有IO样本。

  7. 选择一帧并在右侧面板中检查其详细信息。出现电位器(DIO3_AD3)的值以及与框架有关的其他详细信息。

  8. 重复步骤4并旋转连接ED_CYCLIC的电路板的电位计。再等待20秒,然后检查到达的新数据包的DIO3_AD3引脚是否包含其他值。
  9. 如果使接收器模块(ED_PIN)保持唤醒状态,则ED_CYCLIC处于唤醒状态时,ED_PIN每秒接收一次IO采样(ST值是两秒钟)。之后,ED_CYCLIC进入睡眠状态达九秒钟(SP参数)。然后,循环再次开始。

注意完成示例后,请确保关闭与模块的串行连接。

步骤5:您学到了什么?

在本节中,您了解到:

  • 具有Zigbee协议的模块以及其他模块可以进入临时睡眠状态,在这种状态下,它们几乎不消耗电流。在Zigbee中,只有配置为终端设备的模块可以进入睡眠状态。
  • 当终端设备处于睡眠状态时,其父设备(允许终端设备加入网络的路由器或协调器)会缓冲其数据,直到超时(SP)超时或终端设备发送轮询请求以检索数据为止。
  • 针脚9和13与睡眠模式有关。您可以使用引脚9来使模块进入睡眠状态,并使用引脚13来确定设备的睡眠状态。
  • 当XBee处于睡眠模式时,没有数据发送或接收。如果您尝试在模块处于睡眠状态时与其通信,则XCTU会显示一条警告消息,指出必须将模块复位才能唤醒。
  • 要配置模块进入睡眠状态,必须配置以下参数:
    • 睡眠模式(SM):
      • 引脚休眠模式(SM = 1)将引脚9连接到3.3伏以拉高引脚以使模块进入休眠状态。当引脚9无效(低)时,模块将唤醒。
      • 循环睡眠模式(SM = 4和SM = 5)使模块能够按固定的时间表睡眠和唤醒。这些模式需要配置STSP参数。
    • 休眠之前的时间(ST)是在返回循环休眠之前没有发送或接收数据(模块处于唤醒状态)的时间段。此参数仅适用于周期性睡眠模式。
    • 循环睡眠周期(SP)是XBee保持睡眠状态的时间长度。此参数仅适用于周期性睡眠模式。

步骤6:扩展示例

如果您准备超越本练习并扩展示例,请尝试以下操作:

  • 电池连接到ED_CYCLIC(XBee B),ED_PIN(XBee C)或两者,然后将模块从COORD(XBee A)移开。
  • 将此功能与真实传感器结合使用可创建低功耗传感器网络。

 

 

 

发布了48 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zigbeecomm/article/details/104167743