|
| 1 | +# Achieving Low Power |
| 2 | + |
| 3 | +This section provides an overview of how to achieve low power consumption with the Asset Tracker Template application. It covers fundamental concepts, measurement tools, configuration options, and best practices for optimizing battery life in cellular IoT applications. |
| 4 | + |
| 5 | +## Prerequisites |
| 6 | + |
| 7 | +If you are not familiar with cellular IoT fundamentals and low power concepts, it is highly recommended to complete the [Cellular IoT Fundamentals Developer Academy Course](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/) first. This course covers essential topics including: |
| 8 | + |
| 9 | +- LTE-M and NB-IoT network technologies basics |
| 10 | +- Power saving modes (PSM, eDRX) |
| 11 | + |
| 12 | +It is also recommended to read the white paper [Best Practices for Cellular Development](https://docs.nordicsemi.com/bundle/nwp_044/page/WP/nwp_044/intro.html). |
| 13 | + |
| 14 | +## Measuring Power Consumption |
| 15 | + |
| 16 | +### Power Profiling Tools |
| 17 | + |
| 18 | +Understanding your device's actual power consumption is critical for optimizing battery life. The following tools are recommended: |
| 19 | + |
| 20 | +#### Online Power Profiler for LTE |
| 21 | + |
| 22 | +For quick estimates and profiling of current consumption based on network and transmission parameters, use the [Online Power Profiler for LTE](https://devzone.nordicsemi.com/power/w/opp/3/online-power-profiler-for-lte). |
| 23 | + |
| 24 | +#### Power Profiler Kit 2 (PPK2) |
| 25 | + |
| 26 | +For accurate measurements and detailed profiling, check out the [PPK2: Power Profiler Kit 2](https://www.nordicsemi.com/Products/Development-hardware/Power-Profiler-Kit-2). |
| 27 | +For detailed guidance on how to use the PPK2, see the [Power Profiler Kit User Guide](https://docs.nordicsemi.com/bundle/ug_ppk2/page/UG/ppk/PPK_user_guide_Intro.html). |
| 28 | + |
| 29 | +## Application Power Configuration |
| 30 | + |
| 31 | +The Asset Tracker Template is configured with power saving features enabled by default. This section covers the key configuration options specific to the application. |
| 32 | + |
| 33 | +For general configuration of the LTE link, refer to the [LTE Link Control Documentation](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/lte_lc.html). |
| 34 | + |
| 35 | +### PSM (Power Saving Mode) |
| 36 | + |
| 37 | +PSM is **enabled by default**. Configure TAU and RAT parameters in `prj.conf`: |
| 38 | + |
| 39 | +```config |
| 40 | +CONFIG_LTE_PSM_REQ_RPTAU_SECONDS=1800 # Periodic TAU: 30 minutes |
| 41 | +CONFIG_LTE_PSM_REQ_RAT_SECONDS=60 # Active Time: 1 minute |
| 42 | +``` |
| 43 | + |
| 44 | +It's recommended to configure a Periodic TAU timer longer than the update interval of the application to avoid synchronization with the network between updates. |
| 45 | + |
| 46 | +See [Configuration guide - PSM](configuration.md#psm-power-saving-mode) for additional options. Note that actual values are negotiated with the network. |
| 47 | + |
| 48 | +### eDRX (Extended Discontinuous Reception) |
| 49 | + |
| 50 | +eDRX is **enabled by default**. Configure the eDRX interval in `prj.conf`: |
| 51 | + |
| 52 | +```config |
| 53 | +CONFIG_LTE_EDRX_REQ_VALUE_LTE_M="0000" # eDRX interval 5.12 s for LTE-M |
| 54 | +CONFIG_LTE_EDRX_REQ_VALUE_NBIOT="0000" # eDRX interval 5.12 s for NB-IoT |
| 55 | +``` |
| 56 | + |
| 57 | +eDRX is used to periodically sleep during the Active Timer. With the default settings, the device will monitor for downlink data every 5.12 seconds for the duration of the Active Timer (60 seconds) in case the cloud sends data to the device. |
| 58 | + |
| 59 | +### Update Interval |
| 60 | + |
| 61 | +Controls sampling and transmission frequency. Set in `prj.conf`: |
| 62 | + |
| 63 | +```config |
| 64 | +CONFIG_APP_SENSOR_SAMPLING_INTERVAL_SECONDS=600 # Default: 10 minutes |
| 65 | +CONFIG_APP_CLOUD_SYNC_INTERVAL_SECONDS=3600 # Default: 1 hour |
| 66 | +``` |
| 67 | + |
| 68 | +In buffer mode, sensors and location are sampled and stored at every `CONFIG_APP_SENSOR_SAMPLING_INTERVAL_SECONDS` interval and sent to the cloud every `CONFIG_APP_CLOUD_SYNC_INTERVAL_SECONDS` interval. |
| 69 | + |
| 70 | +Can be adjusted at runtime via nRF Cloud device shadow. See [Configuration guide](configuration.md#set-sampling-interval-and-logic-from-cloud) for details. |
| 71 | + |
| 72 | +**Impact:** Longer intervals = fewer network connections = lower power consumption. |
| 73 | + |
| 74 | +Ensure that the PSM Periodic TAU interval is set reasonably longer than the cloud sync interval. |
| 75 | + |
| 76 | +### Storage Mode |
| 77 | + |
| 78 | +Configure data handling mode in `prj.conf`: |
| 79 | + |
| 80 | +```config |
| 81 | +CONFIG_APP_STORAGE=y |
| 82 | +CONFIG_APP_STORAGE_INITIAL_MODE_PASSTHROUGH=y # Default: immediate forwarding |
| 83 | +# CONFIG_APP_STORAGE_INITIAL_MODE_BUFFER=y # Alternative: batch transmission |
| 84 | +``` |
| 85 | + |
| 86 | +**Buffer mode** significantly reduces power by storing data locally and transmitting in batches, minimizing network activity. Ideal for infrequent reporting (hourly/daily). |
| 87 | + |
| 88 | +See [Storage Module Configuration](configuration.md#storage-mode-configuration) and [Storage Module Documentation](../modules/storage.md) for details. |
| 89 | + |
| 90 | +### UART Power Management |
| 91 | + |
| 92 | +UART interfaces consume power even when idle. The application provides options to disable UART at runtime to reduce power consumption. |
| 93 | + |
| 94 | +#### Automatic UART Disable on Thingy:91 X |
| 95 | + |
| 96 | +The Thingy:91 X can automatically disable UART when the USB cable is disconnected. Enable in `prj.conf`: |
| 97 | + |
| 98 | +```config |
| 99 | +CONFIG_APP_POWER_DISABLE_UART_ON_VBUS_REMOVED=y |
| 100 | +``` |
| 101 | + |
| 102 | +When enabled, the device monitors VBUS and automatically suspends UART interfaces when USB power is removed. This is useful for development where you need UART logging during USB connection but want to minimize power consumption when running on battery. |
| 103 | + |
| 104 | +#### Manual UART Control via Shell |
| 105 | + |
| 106 | +UART devices can be manually suspended at runtime using shell commands: |
| 107 | + |
| 108 | +```bash |
| 109 | +uart:~$ pm suspend uart@9000 # Suspend UART0 |
| 110 | +uart:~$ pm suspend uart@8000 # Suspend UART1 |
| 111 | +``` |
| 112 | + |
| 113 | +> [!NOTE] |
| 114 | +> After suspending the UART you're using for the shell, you won't be able to send further commands until the device is reset or the UART is resumed through other means. |
| 115 | +
|
| 116 | +## Optimization Best Practices |
| 117 | + |
| 118 | +1. **Increase update intervals** - Reduce sampling/transmission frequency |
| 119 | +2. **Enable buffer mode** - Batch data transmissions |
| 120 | +3. **Minimize payload size** - Reduce transmission duration by using effective serialization formats (CBOR, Protobuf) |
| 121 | +4. **Validate with PPK2** - Measure actual power consumption |
| 122 | + |
| 123 | +## Additional Resources |
| 124 | + |
| 125 | +- [Cellular IoT Fundamentals Developer Academy Course](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/) |
| 126 | +- [Tooling and Troubleshooting Guide](tooling_troubleshooting.md) |
| 127 | +- [Configuration Guide](configuration.md) |
| 128 | +- [Storage Module Documentation](../modules/storage.md) |
| 129 | +- [Network Module Documentation](../modules/network.md) |
| 130 | +- [nRF Connect SDK Power Optimization Guide](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/test_and_optimize/optimizing/power.html) |
| 131 | +- [LTE Link Control Documentation](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/lte_lc.html) |
0 commit comments