Using NB-IOT for citizen-science



  • Hi all,

    I’d like to investigate NB-IOT for use in citizen-science projects.
    Probably the biggest ongoing project is the one started by sensor.community (former luftdaten.info). They started measuring airborne particulate matter (“fine dust”) and have > 14000 sensors online right now, most of them connected through the home WiFi network of its participants (curious citizens). Measurements are expanding to sound/noise as well.

    There have already been several projects to send this data of LoRaWAN/TheThingsNetwork, and I’ve created a node using TheThingsNetwork myself. I’d also like to investigate if NB-IOT can be used for this and how it compares.
    I have ordered a demo-SIM and a SIM7020 modem board, and I’ve been successfully able to send a message to my own server, using the UDP/CDP method and a web-hook, following this guide:
    https://www.hackster.io/voske65/arduino-nb-iot-with-sim7020-and-t-mobile-027f8f

    Some questions:

    1. Do we have to be careful about how much data is sent? With LoRaWAN, every byte counts, so our payload is kept small at about 16 bytes / 5 minutes. Does this really matter for NB-IOT too? Or is there perhaps already so much overhead from IP/TCP/etc that trying to keep the payload small doesn’t really matter? This might matter in the monthly data bill too.

    2. Is there a nice good overview of all the transfer protocols available? I’ve seen so many guides but they all assume a ‘stupid’ user and they just guide you through with ‘click here’ and ‘click there’, usually with 3rd party integrations, without really understanding what is actually happening. I think I’d to stick to a simple UDP/IP approach through CDP so far. I assume that all of the fancier protocols like HTTP, MQTT (and COAP?) just sit on top of TCP/IP. Or is there an even simpler layer, below UDP/IP, that we can use?

    3. What is the minimum amount of initialisation specific to set up an UDP/IP connection to t-mobile, with a SIM7020 modem? I guess this is only the network id (20416) and CDP server IP & port, is that correct? Perhaps the network id is already encoded in the SIM? The example I followed (linked above) uses a hard-coded UDP/IP address, can we avoid that?

    4. I’m now still playing with a limited time / data (I assume) SIM. What kind of prices can we expect in the future? The amount of payload data sent is probably not going to exceed 32 bytes / 5 minutes. This will be in important factor to decide between if NB-IOT will be viable to use for citizen science projects.



  • @bertrik Hi,

    My perspective:

    1. No, for powerconsumption the amount of data doesn’t matter at all. I have sent KB’s in one go and the change in power consumption vs a payload of a few bytes was practically 0, although it does get worse under poor signal conditions. The overhead of signalling with the basestation will consume the majority of the power. I believe you can send up to 512 bytes in a single packet…


  • @Stefan-de-Lange Power consumption wasn’t the main concern, bigger concern is network limits.
    I see now that a node can send up to 120 messages per day. The use case I was looking at sends data every 5 minutes, that’s 288 times a day. So actually it appears we cannot reach the 5 minute interval, at maximum every 12 minutes is possible.

    I did some more research into the various protocols, and it looks like the UDP protocol is the most basic one.

    The modem setup is actually well described in general at https://docs.iotcreators.com/docs/general-settings
    And more specific at https://docs.iotcreators.com/docs/_-2-attach-to-nb-iot-network
    I should have looked a little better before asking the question, this depends on the specific modem too I guess.



  • @bertrik The most basic protocol which can be used @iotcreators.com from my point of view is NIDD or ‘nonIP’ (which is not really a protocol).
    Using nonIP you will have no protocol overhead and from power consumption point of view this will be a benefit as well.
    The sent data will, as usual, end up in the iotcreators backbone and can then be processed/pushed into a cloud.
    Regarding the interval - collecting 3 measurements and sending them ev. 15 minutes is as well better for your power consumption in case you e.g. plan to operate a battery driven device somewhere in the woods.
    BR, Markus



  • @MarPi Although you are right I doubt the 20 bytes of IP header will make much of a difference. I have done some tests using various packet sizes and 10 or 100 bytes did not make a notable difference in power consumption.



  • Hi @Stefan-de-Lange …from my point of view it might not be such a big difference if you look at a single shot.
    But if you plan to operate a device with one battery lasting 7-10 years, every single saving is welcome.
    I made measurements as well 😉 and as example for sending my 40Bytes of data I got:

               nonIP + RAI --> 0,303mWh
               nonIP       --> 0,314mWh
               UDP         --> 0,647mWh  (20Byte IP + 8Byte UDP header overhead)
    

    But that might differ between different setups and scenarios.



  • @MarPi Those numbers can’t be right. I thi

    @MarPi said in Using NB-IOT for citizen-science:

    Hi @Stefan-de-Lange …from my point of view it might not be such a big difference if you look at a single shot.

    It was averaged over 100’s of measurements. There was no difference.

               nonIP + RAI --> 0,303mWh
               nonIP       --> 0,314mWh
               UDP         --> 0,647mWh  (20Byte IP + 8Byte UDP header overhead)
    

    But that might differ between different setups and scenarios.

    Those numbers can’t be right. What modem is this?



  • @Stefan-de-Lange said in Using NB-IOT for citizen-science:

    Those numbers can’t be right.

    Right - not right…to high - to low? It always depends. Which value exactly you doubt?
    Or maybe there is a chance to improve your values?

    These measurements were done to compare protocol overheads using a simple scenario.
    Start measurement, wake up module from PSM, send 40Bytes, wait for ‘RRC con.release’, stopping measurement (using this endpoint PSM active time T3324 is not taken into account).
    To be fair, UDP + RAI will be in the area of fourhundred something.
    DUT was Thales ENS22-E with HiSi nb-iot only chipset - iotcreators SIM and environment in Germany in 2020.



  • @MarPi said in Using NB-IOT for citizen-science:

    Right - not right…to high - to low? It always depends. Which value exactly you doubt?
    Or maybe there is a chance to improve your values?

    The difference between nonIP and UDP is more than factor 2. The difference between nonIP and nonIP with RAI is negligible. This makes no sense. I suspect you used RAI for both nonIP cases?

    To be fair, UDP + RAI will be in the area of fourhundred something.

    I have achieved around 70 uWh (or 0.070 mWh) using nRF9160 using NB-IoT, UDP + RAI. 400 seems pretty high.


Log in to reply