This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Synchronized Network

Hello! I currently have multiple devices that monitor beehives temperature, humidity and weight and send the data to a central node every 15 minutes to be uploaded to the internet. They are powered by AA batteries and communicate through XBee S2C transceivers forming a mesh network with their DigiMesh protocol. As everything is battery powered, even the central/coordinator/router node, I implemented a time synchronization so all the XBee S2C are put to sleep at the same time and they wake-up after some minutes at the same time, transmit the data to the central node and then everything goes to sleep again. I later discovered this is called a synchronized network or beacon mode network.

I really liked the nRF52840 chipset and it will be great for the new version of our product. The main problem I'm trying to solve and it's stopping me from adopting this new platform is that I'm not finding a way to have a synchronized mesh network as I have now. I need absolutely all the devices in the network to go to sleep as everything is battery powered and must last a year. After reading a lot on the internet, this forum and on your amazing infocenter this is what I learn and some questions about each topic:

  1. BLE with no mesh: The maximum advertising time is around 10 seconds. So I could advertise my sensors data to the central node every 10 seconds which in the case of Bluetooth gives me really good battery life, almost the same as my XBee sending every 15 minutes, awesome, really. The only downside here is no mesh support which is kind of important for me.
  2. BLE + Mesh: The main problem here is battery life, according to your docs I can make some nodes to sleep but the central node or router can't sleep, ever. Is it possible to implement my time synchronization on top of Bluetooth mesh so I can make the central node to turn the radio off and go to sleep and wake up together with the other nodes when they are sending data? In this way I could have Bluetooth mesh AND a synchronized network for really low power consumption. I don't know if it's possible to turn off the radio and then resume the communications as if I have never turned off the radio.
  3. OpenThread: Mesh support also, no way to put the main node to sleep, can I do the same as in 2?
  4. Others?: Any other protocols available for this chip that I'm missing? I saw ConitikiMAC from the Contiki OS, the ultra-low energy mesh protocol from MiraOS (paid), GoMacH from RIOT OS and TiMAC from Texas Instruments but none of them are officially supported by the Nordic SDK so they are really the last option if an option at all.

Any help or guidance would be really appreciated!

  • Hello,

    1: Yes. You can advertise with an advertising interval of up to 10 seconds. However, if you don't enter a connection, you will not be able to send messages to the advertising device.

    2: A Mesh node can't sleep. It keeps the radio on at all times, so it is difficult to get the battery life you mention only using normal Bluetooth Mesh nodes. You have stumbled upon the Friendship nodes, I assume. You can have some Low Power Nodes (LPNs) connected to a friend node, but the friend node needs to be a "normal" mesh node, keeping the radio on at all times. 

    3: The same as Bluetooth Mesh. You need the devices to be listening at all times. Can't really go to sleep.

    4: Not that are low power that I can think of.

    Sidenote:

    Using e.g. Bluetooth Mesh, what you describe could be possible, if you use a timer to make all the nodes go to sleep for a given amount of time. When a node is provisioned, this data is stored in flash. You can test this. If you provision one Mesh Light_switch server and one Mesh Light_switch client (using either the nRF Mesh app, or the light_switch provisioner example), and then turn one of the devices (or both) off. When they are turned on again, they work instantly. 

    You could try to implement something like this. Note that it isn't "by the book", but as long as you don't need the devices to work with any other official Mesh devices, I don't see any problems with this approach.

    BR,

    Edvin

  • Hello Edvin! Thank you very much for your reply!! Is there any special procedure I should follow to turn on and off the radio and put the system to sleep so I don't interfere with the SoftDevice to keep it working as if nothing ever happened?

  • Because Bluetooth and Thread SoftDevices only allow to completely disable the SoftDevice, freeing resources and everything 

  • Hello,

    Sorry. I forgot to mention, but we had a public holiday in Norway from Thursday until yesterday. 

     

    Andres said:
    Because Bluetooth and Thread SoftDevices only allow to completely disable the SoftDevice, freeing resources and everything

     Yes. You can disable the softdevice, then use a timer to enable it again.

    A quick and dirty workaround is to just call sd_nvic_SystemReset() or NVIC_SystemReset() (depending on whether your softdevice is currently enabled or not, just to reset the device properly when you want to reconnect.

    Note that all network data is stored in flash, and the device will be provisioned on startup. Have you tested this?

    BR,

    Edvin

Related