802.15.4 Power Management using Cyclic Sleep example for mbed XBeeLib By Digi

Dependencies:   XBeeLib mbed

Description

This example characterizes a device that needs to be continuously joined to the coordinator so it doesn't lose any incoming packets. A fast response to packets is not required so radio can sleep for some time to save power while the coordinator buffers its packets.

The example configures the radio to poll its coordinator every 5 seconds if there is any packet for it.
If there is one or more, it awakes and send the packets to the mbed micro-controller.

Setup

Network

You need to set up a coordinator in the network so it buffers the packets send to our local XBee device while it's sleeping.
A module configured as coordinator requires:

  • 'Coordinator Enable (CE)' parameter set to 1.
  • 'Coordinator Association (A2)' parameter set to 0x04 so the coordinator allows end device association.
  • 'Cyclic Sleep Period (SP)' parameter set as the local XBee device.
    In the example it is set to 5000 which represent 5000 ms or 5 seconds.
    In the coordinator, when using X-CTU for configuration, the SP parameter has to be entered as the desired sleep time divided by 10 and in hexadecimal so to cope with the example it should be 5000 / 10 = 500 = 0x1F4 -> 1F4
  • 'Time Before Sleep (ST)' parameter set as the local XBee device; 500 ms = 0x1F4.

Demo run

While it is running, send a packet to the device:

  • Go to the "Console" tab of the XCTU connected to the coordinator.
  • Press the "Add API frame to the list" button.
  • Press "Create using API Frame generator" button.
  • Select "802.15.4" protocol and "0x00 - Tx (Transmit) Request 64-bit address" Frame Type.
  • Paste the Local XBee device 64-bit address in the "64-bit dest. address" text box. (You can copy it from the application banner).
  • In the "RF data" text box, select the ASCII box and type "Hello XBee!".
  • Press OK, Add Frame.
  • Select the frame and press the "Send selected frame" button to send the frame ("Hello XBee!") to the XBee network.

Once the XBee device receives the frame, the radio will wake up to send it to mbed micro-controller, which will process and print the received data.

Verify that the XBee module has received the frame by accessing the serial console terminal. If it was successful, the "Hello XBee!" message will be displayed there.

After that, the radio will go to sleep again until new data is received.

Committer:
hbujanda
Date:
Fri Jul 29 12:11:55 2016 +0200
Revision:
7:7f97480cb88a
Parent:
4:c88db3e5ad7f
Automatic upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spastor 3:2a74e460dae3 1 /**
spastor 3:2a74e460dae3 2 * Copyright (c) 2015 Digi International Inc.,
spastor 3:2a74e460dae3 3 * All rights not expressly granted are reserved.
spastor 3:2a74e460dae3 4 *
spastor 3:2a74e460dae3 5 * This Source Code Form is subject to the terms of the Mozilla Public
spastor 3:2a74e460dae3 6 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
spastor 3:2a74e460dae3 7 * You can obtain one at http://mozilla.org/MPL/2.0/.
spastor 3:2a74e460dae3 8 *
spastor 3:2a74e460dae3 9 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
spastor 3:2a74e460dae3 10 * =======================================================================
spastor 3:2a74e460dae3 11 */
hbujanda 2:7ecbda4b8788 12
spastor 3:2a74e460dae3 13 #ifndef __CONFIG_H_
hbujanda 2:7ecbda4b8788 14 #define __CONFIG_H_
hbujanda 2:7ecbda4b8788 15
hbujanda 2:7ecbda4b8788 16 /** Library configuration options */
hbujanda 2:7ecbda4b8788 17 #define ENABLE_LOGGING
hbujanda 2:7ecbda4b8788 18 #define ENABLE_ASSERTIONS
hbujanda 2:7ecbda4b8788 19 #define FRAME_BUFFER_SIZE 4
hbujanda 2:7ecbda4b8788 20 #define MAX_FRAME_PAYLOAD_LEN 128
hbujanda 2:7ecbda4b8788 21
hbujanda 2:7ecbda4b8788 22 #define SYNC_OPS_TIMEOUT_MS 2000
hbujanda 2:7ecbda4b8788 23
hbujanda 2:7ecbda4b8788 24 //#define RADIO_TX NC /* TODO: specify your setup's Serial TX pin connected to the XBee module DIN pin */
hbujanda 2:7ecbda4b8788 25 //#define RADIO_RX NC /* TODO: specify your setup's Serial RX pin connected to the XBee module DOUT pin */
hbujanda 2:7ecbda4b8788 26 //#define RADIO_RTS NC /* TODO: specify your setup's Serial RTS# pin connected to the XBee module RTS# pin */
hbujanda 2:7ecbda4b8788 27 //#define RADIO_CTS NC /* TODO: specify your setup's Serial CTS# pin connected to the XBee module CTS# pin */
hbujanda 2:7ecbda4b8788 28 //#define RADIO_RESET NC /* TODO: specify your setup's GPIO (output) connected to the XBee module's reset pin */
hbujanda 2:7ecbda4b8788 29 //#define RADIO_SLEEP_REQ NC /* TODO: specify your setup's GPIO (output) connected to the XBee module's SLEEP_RQ pin */
hbujanda 2:7ecbda4b8788 30 //#define RADIO_ON_SLEEP NC /* TODO: specify your setup's GPIO (input) connected to the XBee module's ON_SLEEP pin */
hbujanda 2:7ecbda4b8788 31 //#define DEBUG_TX NC /* TODO: specify your setup's Serial TX for debugging */
hbujanda 2:7ecbda4b8788 32 //#define DEBUG_RX NC /* TODO: specify your setup's Serial RX for debugging (optional) */
hbujanda 2:7ecbda4b8788 33
hbujanda 2:7ecbda4b8788 34 #if !defined(RADIO_TX)
hbujanda 2:7ecbda4b8788 35 #error "Please define RADIO_TX pin"
hbujanda 2:7ecbda4b8788 36 #endif
hbujanda 2:7ecbda4b8788 37
hbujanda 2:7ecbda4b8788 38 #if !defined(RADIO_RX)
hbujanda 2:7ecbda4b8788 39 #error "Please define RADIO_RX pin"
hbujanda 2:7ecbda4b8788 40 #endif
hbujanda 2:7ecbda4b8788 41
hbujanda 2:7ecbda4b8788 42 #if !defined(RADIO_RESET)
hbujanda 2:7ecbda4b8788 43 #define RADIO_RESET NC
hbujanda 2:7ecbda4b8788 44 #warning "RADIO_RESET not defined, defaulted to 'NC'"
hbujanda 2:7ecbda4b8788 45 #endif
hbujanda 2:7ecbda4b8788 46
hbujanda 2:7ecbda4b8788 47 #if defined(ENABLE_LOGGING)
hbujanda 2:7ecbda4b8788 48 #if !defined(DEBUG_TX)
hbujanda 2:7ecbda4b8788 49 #error "Please define DEBUG_TX"
hbujanda 2:7ecbda4b8788 50 #endif
hbujanda 2:7ecbda4b8788 51 #if !defined(DEBUG_RX)
hbujanda 2:7ecbda4b8788 52 #define DEBUG_RX NC
hbujanda 2:7ecbda4b8788 53 #warning "DEBUG_RX not defined, defaulted to 'NC'"
hbujanda 2:7ecbda4b8788 54 #endif
hbujanda 2:7ecbda4b8788 55 #endif
hbujanda 2:7ecbda4b8788 56
hbujanda 2:7ecbda4b8788 57 #endif /* __CONFIG_H_ */