概要
NB-IoT(Narrowband IoT)は、3GPPが2016年のRelease 13で標準化した、固定設置IoT機器向けの超低消費電力セルラー通信規格です。「Cat-NB1」とも呼ばれ、スマートメーター・環境センサー・駐車場センサーなど、データ量が少なく長期間電池駆動が求められる用途に最適化されています。
NB-IoTの最大の特長は、164dBmという極めて高いMCL(Maximum Coupling Loss)値です。これはLTE-Mの155.7dBmを約8dB上回り、地下深部・厚い壁に囲まれた場所・金属ケース内など、電波が届きにくい過酷な環境でも通信できます。ガスメーター・水道メーターなど地下ピットや壁内に設置されるデバイスに特に適しています。
既存のLTE/GSMインフラを活用し、ソフトウェアアップデートだけでNB-IoT対応できる点もキャリアにとって導入しやすい要因となっています。
歴史・背景
NB-IoTの前身はHuaweiとVodafoneが提案した「NB-M2M(NarrowBand Machine-to-Machine)」と、Qualcommが提案した「NB-OFDMA」です。その後これらが統合・標準化され、2016年6月の3GPP Release 13でNB-IoT(標準名: E-UTRA for Narrowband IoT)として正式承認されました。
翌2016年からは中国・欧州でいち早く商用展開が始まり、中国ではHuawei・ZTEの基地局機器を使ったスマートシティプロジェクトで急速に普及しました。現在は世界最多の接続数を誇るセルラーIoT技術となっています。
日本では2018年にソフトバンク、2019〜2020年にNTTドコモ・KDDIが商用サービスを開始。主にスマートメーターや防犯カメラ向けに展開されています。
技術仕様
通信速度
| 方向 | Release 13 (Cat-NB1) | Release 14 (Cat-NB2) |
|---|---|---|
| 下り | 最大26kbps(マルチトーン) | 最大127kbps |
| 上り | 最大62.5kbps(マルチトーン) / 17kbps(シングルトーン) | 最大158kbps |
実用上の上り速度はシングルトーンモードで17kbps程度が一般的です。
帯域幅と展開モード
NB-IoTは200kHzという極めて狭い帯域を使用し、3つの展開モードをサポート:
In-band モード:
→ 既存LTEキャリア内の1 PRB(Physical Resource Block)を使用
→ 既存LTE基地局への影響最小
Guard-band モード:
→ LTEキャリアのガードバンドを使用
→ 未使用帯域を有効活用
Standalone モード:
→ 独立した200kHz帯域を使用
→ 旧GSM 200kHzチャンネルを転用可能
省電力機能
PSM(Power Saving Mode):
最大T3412タイマー設定: 413日(=35712000秒)
実際の運用では数時間〜数日のスリープが多い
PSM中の消費電流: 5µA以下(モジュールによっては1µA以下)
eDRX(Extended Discontinuous Reception):
最大eDRXサイクル: 2621.44秒(約43分)
受信待機ウィンドウを定期的に開けてサーバーからの下り受信が可能
PSMより短い遅延での下り通信が可能
RRC接続最適化:
NB-IoTではRRC(Radio Resource Control)コネクションの
確立・解放を最小化し、スモールデータ転送の
オーバーヘッドを削減するCP Optimizationが利用可能
カバレッジ向上
NB-IoTはカバレッジ向上のため3段階のカバレッジクラスを定義:
| カバレッジクラス | MCL | 再送回数 | 用途 |
|---|---|---|---|
| CE Level 0 | 144dBm | 2回 | 通常の電波環境 |
| CE Level 1 | 154dBm | 16回 | 電波が弱い環境 |
| CE Level 2 | 164dBm | 128回 | 地下・厚い壁の中 |
同じデータを最大128回再送することで、非常に弱い電波環境でも通信を成功させます(その分消費電力は増加)。
動作原理
NB-IoTのパケット伝送フロー
1. デバイスPSMから起床(タイマーまたは外部トリガー)
2. セル選択・同期
└─ Primary/Secondary Synchronization Signal受信
└─ MIB (Master Information Block)・SIB (System Information Block)取得
3. ランダムアクセス(NPRACH: NB Physical Random Access Channel)
└─ 最大4回のプリアンブル送信
└─ 基地局からのRAR (Random Access Response)待機
4. RRC接続確立
└─ 数秒〜数十秒のオーバーヘッド
5. データ送信
└─ NPUSCH (NB-IoT Physical Uplink Shared Channel)使用
└─ 実データ送信(ミリ秒〜数秒)
6. RRC接続解放 → PSMへ移行
Nordic nRF9160を使った実装例
#include <zephyr/kernel.h>
#include <modem/lte_lc.h>
#include <modem/nrf_modem_lib.h>
#include <nrf_modem_at.h>
// NB-IoT接続とPSMを設定する例
int nb_iot_connect(void) {
int err;
// モデム初期化
err = nrf_modem_lib_init();
if (err) return err;
// NB-IoTのみに設定(LTE-M無効)
err = lte_lc_system_mode_set(LTE_LC_SYSTEM_MODE_NBIOT,
LTE_LC_SYSTEM_MODE_PREFER_NBIOT);
if (err) return err;
// PSM設定(T3412=1時間, T3324=8秒アクティブウィンドウ)
// TAU Timer: 00100001 = 1時間, Active Timer: 00000100 = 8秒
err = lte_lc_psm_req(true);
if (err) return err;
// eDRX設定(eDRXサイクル: 81.92秒)
err = lte_lc_edrx_req(LTE_LC_LTE_MODE_NBIOT, "0111");
if (err) return err;
// ネットワーク接続開始
err = lte_lc_connect();
if (err) return err;
return 0;
}
// センサーデータ送信(UDP over CoAP)
int send_sensor_data(float temperature, float humidity) {
// CoAPメッセージ作成([CBOR](/embedded/glossary/cbor-protobuf/)エンコード推奨)
uint8_t payload[8];
int16_t t = (int16_t)(temperature * 100);
uint16_t h = (uint16_t)(humidity * 10);
payload[0] = 0x82; // CBOR: array(2)
payload[1] = 0x19; // CBOR: uint16
payload[2] = (t >> 8) & 0xFF;
payload[3] = t & 0xFF;
payload[4] = 0x19;
payload[5] = (h >> 8) & 0xFF;
payload[6] = h & 0xFF;
payload[7] = 0x00;
// UDP送信(CoAPサーバーへ)
return udp_send("coap://iot-server.example.com", 5683, payload, 7);
}
CP Optimization(Control Plane最適化)
NB-IoT特有の小データ送信最適化:
通常のIP通信(UP: User Plane最適化):
デバイス → eNB → SGW → PGW → インターネット
(PDNコネクション・ベアラ設定のオーバーヘッドあり)
CP最適化(Non-IP Data Delivery: NIDD):
デバイス → eNB → MME → SCEF(サービス能力公開機能)→ IoTサーバー
(IPなしで直接MCIサービスに接続、オーバーヘッド最小)
用途・ユースケース
スマートメーター(最適用途)
地下ピット・壁内への設置が多く、164dBmのカバレッジと長期電池寿命が不可欠:
- ガスメーター(地下・半地下設置)
- 水道メーター(地中設置)
- 電力量計(壁内設置)
駐車場管理
路面埋め込みセンサーで空き情報を送信:
- 磁気センサーで車両検知(1バイト程度のデータ)
- 数年間電池交換なしで動作
農業・環境監視
固定設置の土壌・気象センサー:
- 土壌水分・温度(定期送信)
- 河川・ダムの水位センサー
- 大気汚染・CO2センサー
廃棄物管理
ゴミ箱の充填レベルセンサー:
- 超音波で充填度を計測
- 満杯になったらアラート送信
実装・開発のポイント
主要モジュール比較
| モジュール | メーカー | 特徴 |
|---|---|---|
| BC660K-GL | Quectel | グローバル対応、省電力、2.4µA PSM |
| nRF9160 | Nordic | LTE-M+NB-IoT統合SiP、Zephyr対応 |
| ME310G1 | Telit | グローバルNB-IoT対応 |
| SIM7020 | SIMCom | 低コスト、ATコマンド |
| BG77 | Quectel | NB-IoT+LTE-M+GNSS統合 |
電池寿命の計算例
BC660K-GL使用、1時間に1回データ送信の場合:
送信時の消費電流:
- RRC接続確立: 50mA × 3秒 = 41.7µAh
- データ送信: 200mA × 0.5秒 = 27.8µAh
- 合計: 約70µAh/回
PSMスリープ時の消費電流:
- 2.4µA × 3600秒 = 2.4µAh/時間
1時間あたり消費:
送信: 70µAh
スリープ: 2.4µAh(1時間-4秒のスリープ)
合計: 約72.4µAh/時間 = 1.736mAh/日
単三電池2本(3000mAh)での電池寿命:
3000mAh ÷ 1.736mAh/日 ≈ 1728日 ≈ 約4.7年
プロトコル選択
NB-IoTではCoAP(UDP上)が推奨されることが多い:
MQTTとCoAPの比較:
MQTT(TCP):
- TCPのオーバーヘッドが大きい(SYN/SYN-ACK/ACK)
- NB-IoTの低速環境では接続確立に数十秒かかることも
- MQTT-SNの使用を検討
CoAP(UDP):
- UDP上なので接続レスで送信可能
- パケット損失にはCoAP再送機能が対応
- NB-IoTのCP Optimizationと組み合わせやすい
他技術との比較
NB-IoT vs LTE-M の選択基準
NB-IoTを選ぶケース:
✓ 固定設置(移動しない)
✓ 電波が届きにくい場所(地下・壁内)
✓ データ量が非常に少ない(1日数回・数バイト)
✓ 極限の電池寿命(5年以上)
✓ OTA更新が不要or非常に小さい
LTE-Mを選ぶケース:
✓ 移動体(輸送中の追跡等)
✓ 音声通話が必要
✓ 定期的なOTAファームウェア更新が必要
✓ リアルタイム性のある制御・応答が必要
✓ データ量が比較的多い(画像、音声等)
NB-IoT vs LoRaWAN
LoRaWANと比較した場合のNB-IoTの優位点:
- 既存の携帯ネットワークが使える(ゲートウェイ設置不要)
- セキュリティ(SIM認証、キャリアレベルの暗号化)
- 全国均一なカバレッジ品質
LoRaWANの優位点:
- SIM不要で月額費用が低い(プライベートNW構築時)
- 電池寿命でほぼ同等(NB-IoTのほうがわずかに不利な場合も)
- デバイス密度が高い大規模展開での柔軟性