0
0
Drone-programmingComparisonBeginner · 4 min read

LoRa vs Sigfox vs NB-IoT: Key Differences and Use Cases

LoRa, Sigfox, and NB-IoT are low-power wide-area network protocols for IoT with different trade-offs: LoRa offers private network flexibility and long range, Sigfox provides ultra-low power with a simple global network, and NB-IoT uses cellular infrastructure for reliable coverage and higher data rates.
⚖️

Quick Comparison

Here is a quick side-by-side comparison of LoRa, Sigfox, and NB-IoT based on key factors important for IoT projects.

FeatureLoRaSigfoxNB-IoT
Network TypePrivate or public LoRaWANPublic global networkCellular (licensed spectrum)
Range2-15 km (urban to rural)10-50 km (rural)Up to 10 km
Data Rate0.3-50 kbpsUp to 600 bpsUp to 250 kbps
Power ConsumptionLowUltra-lowLow to moderate
CostModerate (gateway needed)Low (subscription)Higher (SIM and cellular fees)
Deployment ComplexityMedium (setup gateways)Low (use existing network)Medium (carrier dependent)
⚖️

Key Differences

LoRa uses unlicensed spectrum and allows users to set up private networks with their own gateways, giving flexibility but requiring more setup. It supports moderate data rates and long range, making it good for diverse IoT applications.

Sigfox operates on a public global network with ultra-narrowband technology, focusing on very low power and very low data rates. It is simple to deploy since no private infrastructure is needed, but it limits message size and frequency.

NB-IoT is a cellular technology using licensed spectrum, offering better reliability, security, and higher data rates than LoRa and Sigfox. It requires SIM cards and carrier support, which increases cost but provides wide coverage and integration with existing cellular networks.

⚖️

Code Comparison

Example: Sending a simple sensor reading using LoRaWAN with Arduino.

cpp
#include <lmic.h>
#include <hal/hal.h>
#include <SPI.h>

static const u1_t NWKSKEY[16] = { /* your network session key */ };
static const u1_t APPSKEY[16] = { /* your app session key */ };
static const u4_t DEVADDR = 0x260111FD; // your device address

void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPSKEY, 16); }
void os_getArtEui (u1_t* buf) { }
void os_getDevEui (u1_t* buf) { }

static osjob_t sendjob;

void do_send(osjob_t* j){
  static uint8_t mydata[] = "Hello LoRa";
  LMIC_setTxData2(1, mydata, sizeof(mydata)-1, 0);
}

void setup() {
  os_init();
  LMIC_reset();
  LMIC_setSession (0x1, DEVADDR, NWKSKEY, APPSKEY);
  do_send(&sendjob);
}

void loop() {
  os_runloop_once();
}
Output
LoRaWAN packet "Hello LoRa" sent on port 1
↔️

Sigfox Equivalent

Example: Sending a simple sensor reading using Sigfox with Arduino Sigfox library.

cpp
#include <SigFox.h>

void setup() {
  Serial.begin(9600);
  if (!SigFox.begin()) {
    Serial.println("SigFox module not detected");
    while (1);
  }
  SigFox.end();
  SigFox.begin();
}

void loop() {
  byte message[] = { 'H', 'e', 'l', 'l', 'o' };
  SigFox.beginPacket();
  SigFox.write(message, sizeof(message));
  SigFox.endPacket();
  delay(60000); // send every 60 seconds
}
Output
Sigfox message "Hello" sent
🎯

When to Use Which

Choose LoRa when you want control over your network, need long range, and can manage your own gateways for flexible IoT deployments.

Choose Sigfox if you want ultra-low power, very simple deployment without infrastructure, and your data needs are minimal and infrequent.

Choose NB-IoT when you need reliable cellular coverage, higher data rates, and integration with mobile networks despite higher costs.

Key Takeaways

LoRa offers flexible private networks with moderate data rates and long range.
Sigfox provides ultra-low power and simple global network but very low data rates.
NB-IoT uses cellular networks for reliable coverage and higher data rates at higher cost.
Choose based on your project’s range, power, cost, and deployment needs.