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.


Log in to reply