NB-IoT Introduction and Testing

What is NB-IoT?

It stands for Narrowband Internet-of-Things. It is a low powered wide area network (LPWAN) radio technology that is part of the LTE/4G family.

Essentially a cut down version of the LTE technology that your mobile phone probably uses but using a narrower bandwidth (hence the name).

It has similar design goals to other LPWAN technologies (such as LoRa and Sigfox). These are mostly ultra-low power usage, long range, low cost, small data usage.

The main difference between NB-IoT and LoRa/LoRaWAN is that an NB-IoT network is provided by a mobile network operator rather than individuals buying and operating their own gateway devices.

It’s a brand new technology, the standard was only finalised in mid-2016, as yet there are no commercially available NB-IoT services in the UK. There are some available in central Europe. At the moment, Vodafone UK are the only operator currently rolling out the service but as I understand it, O2 and EE will soon follow. The Vodafone service is currently in the trial stage and coverage is limited to certain areas of the country.

It’s my opinion that NB-IoT will become a popular LPWAN standard in years to come so I am excited to be able to give it a try. Alliot’s plan is to offer NB-IoT related services and sensors as soon as they are commercially available.

Trying out NB-IoT

As I said, Vodafone are currently trialling their NB-IoT service, this means that they are making SIMs available to certain partners for testing. I have obtained some SIMs for testing, I cannot get any for anyone else at the moment. Alliot plan to provide SIMs as soon as we can.

Because it’s so new, there’s not much hardware around at the moment that supports NB-IoT. So to test I have so far bought a Pycom Fipy development board:

https://docs.pycom.io/datasheets/development/fipy/

And an Arduino MKR-NB-1500 board:

https://store.arduino.cc/arduino-mkr-nb-1500-1413

These are far from plug&play devices, the Pycom board needs to be programmed using the MicroPython language and the Arduino board needs to be programmed using a C++ style language.

nbiot_microcontroller_code

Both devices need a suitable antenna, I used this one with both boards (they both have the same u.fl antenna connector):

https://pycom.io/product/lte-m-antenna-kit/

You’ll really need the Expansion board to go with the Pycom as well:

https://pycom.io/product/expansion-board-3-0/

Finally, you’ll need some NB-IoT SIMs!

The NB-IoT node will send and receive data via the network operator’s network, they will assign an IP address to the node and it can then communicate with the Internet. To test, you will need a server/computer that is publicly accessible on the Internet. In my case, the Vodafone trial limits usage to UDP only so I made a simple Python script on a test Amazon AWS server that accepts UDP packets and logs the contents to a file. All very simple stuff and not very useful but it’s pretty cool all the same! It all works as expected.

The Pycom board simply sends a “hello world” message every ten minutes, the Arduino board does this too but I also made it report it’s battery voltage since I’m powering that from a rechargable LiPo battery.

What next, what use is this?

I’ll expand on this to connect some real sensors to both devices so they are sending something more useful. I will then make the server part log to a database and produce some graphs in Grafana to visualise the data.

I have also sourced some commerically available sensor devices so will be testing them, another post on that will follow.

Verdict on NB-IoT testing

This experimentation has taught me a few things.

  • This is very new technology indeed, it’s much less mature than LoRaWAN for example. There’s scant information on the Internet so far, getting the Arduino board to work for example involved finding and reading the low level documentation for the uBlox chip on the board and the Arduino source code for their NB-IoT library.
  • You’re at the mercy of a network provider. If you have no coverage then it’s tough luck, no buying a gateway as with LoRaWAN or Sigfox. Although if there is coverage, then great, you don’t need to buy a gateway (also the case for Sigfox). You will always have to pay a network operator for use of the network.
  • It needs more power than LoRaWAN, considerably so in my opinion. For example, just connecting to the network takes multiple seconds and this will eat batteries. In comparison to LoRaWAN where a sensor can wake up, fire off a message and go back to sleep in a matter of milliseconds. Feel free to get in touch and correct me but I cannot see how NB-IoT can be anywhere near as frugal as LoRaWAN.
  • It’s more synchronous than LoRaWAN. It’s still designed for tiny amounts of data but connections involving multiple requests & their responses are possible. A protocol called Constrained Application Protocol (CoAP) can be used which is like a cut down version of HTTP.
  • The technology is a reality and the mobile networks are starting to roll it out. I think NB-IoT will be big and sit alongside other LPWAN technologies.
  • The UK seems to be behind central Europe again. There’s much more evidence online for people using NB-IoT in places like Germany.