Put BLE Mesh node in deep sleep

Hi,

We are working on BLE MESH using nRF52840. We are trying to put nRF52840 into deep sleep mode. The deep sleep current is about 210 micro Amp. Further, the current is continuously increasing approx. by 1 micro Amp after every 60 sec.

My setup:
nRF SDK ver : nRF5_SDK_17.0.2_d674dde
BLE MESH ver : nrf5_SDK_for_Mesh_v5.0.0
Hardware : BT840 based custom board

The functions used for putting the nRF52840 into deep sleep -
nrf_mesh_disable()
nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_STAY_IN_SYSOFF);

We also tried sd_power_system_off() but result are no better.

We are able to achieve deep sleep current of 500 nano Amp on same hardware, using Thread protocol. We are not sure how to achieve it using BLE Mesh.

It would be a great help if you could suggest a solution or give us a direction.

Kind Regards,
Rajendra

  • Hello Rajendra,

    Well first of all, if you are developing a new product for Mesh I would recommend you to use the nRF Connect SDK. That is the SDK that will be worked on going forward. 

    Secondly, even though Bluetooth 'low energy' is being used, Bluetooth Mesh isn't the most power efficient alternative. Continuous relaying and radio use is the backbone of Mesh, so for Bluetooth Mesh to pay off, you'd normally want at least one of the nodes being connected to the mains. Thread nodes can be configured to be very power efficient however, so its hard to compare Bluetooth Mesh and Thread.

    You can however use what are called Low Power Nodes along with Friend nodes with Mesh, which can be very power efficient. Is this what you are trying to do? If so, see here.

    Regards,

    Elfving

  • Thank you Elfving for response! Will certainly explore on Friend nodes.

    Regards,
    Rajendra

  • Hello,
    I am tryting to compile lpn example from examples - nrf5_SDK_for_Mesh_v5.0.0\examples\lpn. It looks like the example needs some modification in order to compile. The example shows this error while compiling.


    ..\nrf5_sdk_17.0.2_d674dde\modules\nrfx\drivers\include\nrfx_power_clock.h:67:6: error: #error "This code is not supposed to be compiled when neither POWER nor CLOCK is enabled."
    67 | #error "This code is not supposed to be compiled when neither POWER nor CLOCK is enabled."

    POWER_ENABLED and NRFX_POWER_ENABLED is already 1 in the example code. So upon enabling macros NRF_CLOCK_ENABLED and NRFX_CLOCK_ENABLED or it shows further compilation errors. I was wondering if this is a right way to go about it.


    nRF5_SDK_17.0.2_d674dde/external/segger_rtt/SEGGER_RTT_Conf.h:86:46: error: 'SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS' undeclared here (not in a function); did you mean 'SEGGER_RTT_MAX_NUM_DOWN_BUFFERS'?
    86 | #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS) // Max. number of down-buffers (H->T) available on this target (Default: 3)
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../nRF5_SDK_17.0.2_d674dde/external/segger_rtt/SEGGER_RTT_Conf.h:86:46: note: in definition of macro 'SEGGER_RTT_MAX_NUM_DOWN_BUFFERS'
    86 | #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS) // Max. number of down-buffers (H->T) available on this target (Default: 3)
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kindly let me know the changes/modification required to compile lpn example.

    Best Regards,

    Rajendra

  • Hi again Rajendra,

    Could you open a new case for this, as it is a bit besides the main subject of the headline? I also want to note that you can go ahead with the nRF5 SDK as as it seems you have done, though I did recommend continuing with the nRF Connect SDK instead.

    Regards,

    Elfving

Related