Miscellaneous • IoT

IoT Modem Modules: Practical Selection Guide

Cellular Network ENV Environmental NB-IoT Asset Tracking LTE-M + GPS Smart Meter NB-IoT Industrial IoT LTE Cat 1 IoT Modem Module Selection Choose the right connectivity for your application NB-IoT (Low Power) LTE-M (Mobility) LTE Cat 1/4 (High Speed)

Practical IoT Modem Module Selection

Choosing the right cellular modem module is crucial for successful IoT deployments. This guide provides specific, practical recommendations based on real-world applications, with current pricing and availability information for New Zealand and Australia.

Whether you're building environmental sensors, asset trackers, or industrial monitoring systems, this guide will help you select the most appropriate cellular connectivity solution for your specific needs.

Focus on Practicality: All recommendations include specific part numbers, pricing estimates, and supplier information. Links to development kits and evaluation boards are provided where available.

Cellular IoT Technologies Overview

Understanding the different cellular technologies is essential for making the right choice:

Technology Data Rate Coverage Power Best For
NB-IoT ~250 kbps Excellent Ultra-low Sensors, meters, stationary devices
LTE-M ~1 Mbps Good Low Mobile devices, tracking
LTE Cat 1 ~10 Mbps Good Medium Industrial, gateway applications
LTE Cat 4 ~150 Mbps Standard High Video, high-bandwidth applications

Low-Power Sensor Networks

Ideal for environmental monitoring, agriculture, and stationary sensor applications requiring 10+ year battery life.

Module Connectivity Key Features Est. Price (USD) Dev Kit Price
Quectel BG95-M3 NB-IoT/LTE-M/2G Ultra-low power, GNSS, global bands $15-20 $90
SIMCom SIM7070G NB-IoT/LTE-M Low power, multi-region $12-18 $85
u-blox SARA-R410M NB-IoT/LTE-M Low power, secure boot $18-25 $199
Nordic Thingy:91 NB-IoT/LTE-M Complete device with sensors $120 All-in-one

Integration Notes:

  • These modules typically require only 5μA in power-saving mode
  • Transmit current: 15-20mA for short bursts
  • Perfect for battery-powered applications requiring years of operation
  • Consider antenna placement for optimal signal reception

Asset Tracking and Fleet Management

For mobile applications requiring GPS integration and reliable connectivity while moving.

Module Connectivity Key Features Est. Price (USD) Dev Kit Price
Quectel LC76G LTE-M + GNSS Integrated multi-GNSS, mobility $20-25 $100
SIMCom SIM7600G LTE Cat 4 + GNSS High speed, global bands $30-35 $110
Telit ME910C1 LTE-M/NB-IoT + GNSS Automotive-grade $25-30 $250
u-blox LARA-R211 LTE Cat 1 + GNSS Integrated GNSS, voice $30-35 $180

Integration Notes:

  • For tracking applications, antenna positioning is critical for both cellular and GNSS
  • Current draw: typically 150-200mA during active transmission
  • Consider handover performance for mobile applications
  • GPS acquisition time varies significantly with antenna design

Smart Metering Applications

For electricity, water, and gas meters requiring ultra-long battery life and deep coverage.

Module Connectivity Key Features Est. Price (USD) Dev Kit Price
Quectel BC95-G NB-IoT Ultra-low power, 10+ year battery $8-12 $80
SIMCom SIM7020G NB-IoT Deep coverage, low power $10-15 $75
u-blox SARA-N410 NB-IoT Deep coverage, long range $12-18 $189
Fibocom MA510 NB-IoT/2G Deep coverage, fallback $12-16 $95

Integration Notes:

  • Designed for ultra-low power consumption (<5μA in sleep mode)
  • Ideal for battery-powered meters operating 10+ years
  • NB-IoT provides excellent deep coverage for basement installations
  • Consider fallback to 2G in areas without NB-IoT coverage

Industrial IoT and Factory Automation

For industrial environments requiring reliable, high-speed connectivity and extended temperature ranges.

Module Connectivity Key Features Est. Price (USD) Dev Kit Price
Quectel EC21-A LTE Cat 1 Industrial-grade, reliable $25-30 $95
SIMCom SIM7600G-H LTE Cat 4 High speed, industrial temp $30-40 $110
Fibocom L610 LTE Cat 1 Industrial-grade, global $20-25 $100
Sierra Wireless EM7411 LTE Cat 4 Enterprise-grade, robust $45-60 $299

Integration Notes:

  • Industrial modules operate in extreme temperature ranges (-40°C to +85°C)
  • Include additional interfaces like RS232/RS485 alongside standard UART
  • Higher reliability and longer lifecycle support
  • Consider EMI/EMC certification requirements for industrial environments

Where to Purchase in New Zealand/Australia

Reliable suppliers for IoT modem modules with local support and reasonable shipping times.

Global Distributors with NZ/AU Presence

Regional Distributors

Development Tips and Best Practices

Essential advice for successful IoT modem integration projects.

Start with Evaluation Boards

Evaluation boards (EVBs) include the module, antenna, power supply, and interface connectors. They're essential for:

  • Testing cellular coverage in your deployment area
  • Validating power consumption characteristics
  • Prototyping software integration
  • Understanding antenna requirements

Developer SIM Cards

New Zealand operators offer IoT developer SIMs:

  • Spark NZ: IoT SIM cards with developer-friendly pricing
  • One NZ (formerly Vodafone): IoT connectivity solutions
  • 2degrees: Machine-to-machine SIM services
  • Consider data pooling and global roaming for multi-region deployments

Prototype Carefully

  • Power Management: Design for peak current requirements (up to 2A for some LTE modules)
  • Antenna Design: Critical for both cellular and GNSS performance
  • PCB Layout: Follow manufacturer guidelines for RF sections
  • Testing: Validate in actual deployment environments, not just lab conditions

Module Compatibility

Consider future-proofing your design:

  • Some manufacturers maintain pin compatibility between generations
  • Plan for firmware updates and certification requirements
  • Consider module lifecycle and end-of-life policies
  • Design with multiple supplier options when possible

Basic Integration Example

A simple Arduino-compatible example for connecting to a cellular network using AT commands.

// Basic IoT Modem Connection Example
// Compatible with most Quectel, SIMCom modules

#include 

// Create a SoftwareSerial object for modem communication
SoftwareSerial modem(7, 8); // RX, TX pins

// Configuration
const char* apn = "iot.1nz.co.nz";  // Replace with your carrier's IoT APN
const int timeout = 10000; // Command timeout in milliseconds

void setup() {
  Serial.begin(9600);
  modem.begin(9600);
  
  Serial.println("IoT Modem Setup Starting...");
  delay(3000); // Allow modem to initialize
  
  // Test modem communication
  if (sendATCommand("AT", "OK", 5000)) {
    Serial.println("Modem communication established");
  } else {
    Serial.println("ERROR: Cannot communicate with modem");
    return;
  }
  
  // Check signal quality
  sendATCommand("AT+CSQ", "OK", 5000);
  
  // Set APN
  String apnCommand = "AT+CGDCONT=1,\"IP\",\"" + String(apn) + "\"";
  sendATCommand(apnCommand.c_str(), "OK", 5000);
  
  // Attach to network
  sendATCommand("AT+CGATT=1", "OK", 30000);
  
  // Activate PDP context
  sendATCommand("AT+CGACT=1,1", "OK", 30000);
  
  Serial.println("Modem setup complete!");
}

void loop() {
  // Example: Send HTTP GET request
  if (sendHTTPRequest()) {
    Serial.println("Data sent successfully");
  } else {
    Serial.println("Failed to send data");
  }
  
  delay(60000); // Wait 1 minute before next transmission
}

bool sendATCommand(const char* command, const char* expectedResponse, unsigned long timeout) {
  Serial.print("Sending: ");
  Serial.println(command);
  
  modem.println(command);
  
  String response = "";
  unsigned long startTime = millis();
  
  while (millis() - startTime < timeout) {
    if (modem.available()) {
      char c = modem.read();
      response += c;
      
      if (response.indexOf(expectedResponse) != -1) {
        Serial.print("Response: ");
        Serial.println(response);
        return true;
      }
      
      if (response.indexOf("ERROR") != -1) {
        Serial.print("Error Response: ");
        Serial.println(response);
        return false;
      }
    }
  }
  
  Serial.println("Command timeout");
  return false;
}

bool sendHTTPRequest() {
  // Initialize HTTP service
  if (!sendATCommand("AT+HTTPINIT", "OK", 5000)) return false;
  
  // Set HTTP parameters
  if (!sendATCommand("AT+HTTPPARA=\"CID\",1", "OK", 5000)) return false;
  if (!sendATCommand("AT+HTTPPARA=\"URL\",\"http://httpbin.org/get\"", "OK", 5000)) return false;
  
  // Send GET request
  if (!sendATCommand("AT+HTTPACTION=0", "OK", 30000)) {
    sendATCommand("AT+HTTPTERM", "OK", 5000);
    return false;
  }
  
  // Read response
  sendATCommand("AT+HTTPREAD", "OK", 5000);
  
  // Terminate HTTP service
  sendATCommand("AT+HTTPTERM", "OK", 5000);
  
  return true;
}

Integration Notes:

  • Replace the APN with your carrier's IoT APN (Spark: "iot.spark.co.nz", One NZ: "iot.1nz.co.nz")
  • Adjust pin numbers based on your hardware connection
  • Consider using hardware serial for better reliability
  • Add error handling and retry logic for production applications