Hi All,
I have an application that consists of a network (about 100) of battery-powered sensors (Battery size 2000-4000mAH), which will be sending its sensor data every 15 minutes to a server. When it's not sending data, ideally the device will be in a deep sleep mode of some kind to preserve battery life. The network will only consist of only 1 root node that will be permanently powered. The rest of the network will be battery powered.
The spacing between each cluster of nodes (5-10 devices) will be between 20-30 meters and each cluster will need to relay the data from the downlink cluster back to the root node, whilst still operating in a low power duty-cycled mode (15min reporting intervals).
I am exploring the possibility of using the ESP-MDF protocol to achieve a low power mesh network, with a target battery life of 1 year.
Has the ESP-MDF protocol been updated to operate for such ultra-low power scenario's?
Exploring Low Power Mesh Network with ESP-MDF
-
- Posts: 1
- Joined: Tue Dec 15, 2020 2:45 am
-
- Posts: 40
- Joined: Mon Mar 18, 2019 12:34 pm
Re: Exploring Low Power Mesh Network with ESP-MDF
I have also been thinking about this. I think the answer to your question is probably no - you can configure a device as a sleeping node and send infrequent espnow messages, and you will easily get your required power consumption by doing this, but it expects a non-sleeping router to relay the messages. See this example:
https://github.com/espressif/esp-mdf/bl ... /README.md
Something that might work is Synchronous sleep, and this feature already exists in other mesh products:
https://www.digi.com/resources/document ... p%7C_____0
You could in theory use esp-mesh initally so that each node knows which parent they should be sending to and use it to synchronize time on each node. It appears esp-mesh can already do this but I've never used it:
https://docs.espressif.com/projects/esp ... _tsf_timev
Then once that's all done, each node goes into deep sleep and only wakes up every 15 mins for a very short amount of time, and the whole mesh exchanges messages using espnow in that short window. Obviously the larger the mesh, the bigger that window will have to be, and you will have to continually sync time as the esp deep sleep timer isn't very accurate. Or you could use an external rtc.
Then if you needed to reconfigure the mesh or do OTA updates, you send a message to wake up the mesh, do those things then go back to sleep.
In theory it sounds quite easy because esp-mesh is doing all the complicated mesh routing stuff for you; in practice it's probably a phd project, and one that ends up not working very well.
https://github.com/espressif/esp-mdf/bl ... /README.md
Something that might work is Synchronous sleep, and this feature already exists in other mesh products:
https://www.digi.com/resources/document ... p%7C_____0
You could in theory use esp-mesh initally so that each node knows which parent they should be sending to and use it to synchronize time on each node. It appears esp-mesh can already do this but I've never used it:
https://docs.espressif.com/projects/esp ... _tsf_timev
Then once that's all done, each node goes into deep sleep and only wakes up every 15 mins for a very short amount of time, and the whole mesh exchanges messages using espnow in that short window. Obviously the larger the mesh, the bigger that window will have to be, and you will have to continually sync time as the esp deep sleep timer isn't very accurate. Or you could use an external rtc.
Then if you needed to reconfigure the mesh or do OTA updates, you send a message to wake up the mesh, do those things then go back to sleep.
In theory it sounds quite easy because esp-mesh is doing all the complicated mesh routing stuff for you; in practice it's probably a phd project, and one that ends up not working very well.
Who is online
Users browsing this forum: No registered users and 30 guests