グローバルセルラー無線モジュールを使用し、IoTデバイスをクラウドに迅速かつ安全に接続
DigiKeyのヨーロッパ担当編集者の提供
2023-12-12
ポータブルまたはリモートのネットワークエンドデバイスをモノのインターネット(IoT)に接続したり、マシンツーマシン通信(M2M)を使用して機械を遠隔制御したりする際は、クラウド経由でデータ交換を行う移動無線接続が良い選択肢となります。しかし、この選択肢は、世界中で要求されるデータスループットにどのワイヤレスネットワークが対応できるか、そしてワイヤレスモデムがどのプロトコルに対処する必要があるかを決定するという難題を開発者にもたらします。また、システムのスケーラビリティ、データセキュリティ、コスト、市場投入までの時間、ユーザーが負担する取得コストと運用コストも考慮する必要があります。
この記事では、LTE Cat 1がIoTおよびM2Mアプリケーションの開発者に何をもたらすかを簡単に説明します。そして、ユニバーサルコネクティビティと信頼性の高い性能を提供するu-bloxのLARA-R6シリーズの無線モジュールを紹介します。最後に、開発者が評価ボード(EVB)を使用してATコマンドでモジュールを簡単に設定・制御し、ライブラリ関数でATコマンド文字列を生成する方法を紹介します。
LTE Cat 1とLTE Cat 1bis、LTE Cat M、LTE Cat NBの比較
現在、LTEセルラー無線はギガビットの伝送レートを実現していますが、LTE Cat 1、LTE Cat 1bis、LTE Cat M、LTE Cat NBなどのLPWA(低電力広域)プロトコルは、エネルギー消費、ネットワークリソース、コストの面で特に効率的に設計されています。これは、IoTデバイスにとって非常に重要です。
全二重で最大20MHzのチャンネル帯域幅を提供するLTE Cat 1は、最大10メガビット/秒(Mbps)のダウンロードデータレートと最大5Mbpsのアップロードデータレートを実現します。2本のアンテナは、Rx(レシーバ)ダイバーシティを可能にして、性能を向上させます(表1)。LTE Cat 1bisでは、1本のアンテナを使用します。
|
表1:LPWAプロトコルの性能比較。LTE CAT 1ではRxダイバーシティに2本のアンテナを使用し、LTE Cat 1bisでは1本のアンテナを使用します。(画像提供:Wikipedia、Jens Wallmann氏)
グローバルに利用可能なLTE Cat 1移動無線
u-bloxのLARA-R6シリーズは、無線アクセス技術(RAT)LTE Cat 1の周波数分割複信(FDD)および時分割複信(TDD)規格向けに設計された堅牢なセルラー無線モジュールで構成されています。また、フォールバックソリューションとして、3G UMTS/HSPAと2G GSM/GPRS/EGPRSをサポートしています。これらのモジュールは、グローバル/マルチリージョンをカバーする優れたソリューションであり、26 x 24mmの小型LGAフォームファクタで提供されます。
多彩なインターフェース、広範な機能、マルチバンドおよびマルチモード機能を備えたLARA-R6モジュールは、中程度のデータ速度、シームレスなコネクティビティ、優れたカバレッジ、低レイテンシを必要とするアプリケーションに適しています。そのようなアプリケーションには、資産追跡、テレマティクス、遠隔監視、アラームセンター、ビデオ監視、コネクテッドヘルス、POS端末などがあります。
すべてのモジュールがRxダイバーシティをサポートし、困難なカバレッジ条件やボイスオーバーLTE(VoLTE)が必要な場合に信頼性の高い性能を発揮します。プログラマは、組み込みIoTプロトコル(LwM2M、MQTT)とセキュリティ機能(TLS/DTLS、セキュアアップデート、セキュアブート)を活用することで、デバイス管理、リモートデバイス制御、セキュアなファームウェアオーバーザエア(FOTA)アップデートなど、さまざまな機能を実装できます。
LARA-R6シリーズは、3GPP Release 10に準拠したLTE Cat 1をサポートし、以下3つの地域バリアントでグローバルカバレッジを実現します。
- LARA-R6001-00B(データおよび音声)とLARA-R6001D-00B(データのみ)のモジュールは、18のLTE FDD/TDD周波数帯に加え、3G/2Gフォールバックに対応し、グローバルコネクティビティを実現します。
- LARA-R6401-00B(データおよび音声)とLARA-R6401D-00B(データのみ)のモジュールは、AT&T、FirstNet、Verizon、T-MobileのLTEバンドに対応し、北米に理想的なLTE Cat 1ソリューションを提供します。
- LARA-R6801-00B(データおよび音声)とLARA-R6801D-01B(データのみ)のモジュールは、ヨーロッパおよび中東(EMEA)、アジア太平洋(APAC)、日本(JP)、中南米(LATAM)の各地域で展開するように設計されています(図1)。
図1:世界中をカバーするLARA-R6モジュールの3つの地域バリアント。(画像提供:DigiKey、筆者修正)
LARA-R6の主な特長
LARA-R6モジュールは、外部インターフェースを備えたセルラーベースバンドプロセッサ、アンプとフィルタを備えたRFトランシーバ、メモリ、電源管理ユニットを内蔵しています(図2)。
図2:LARA-R6モジュールの内部構造。(画像提供:u-blox)
RFトランシーバは、700MHz、800MHz、850MHz、900MHz、1.7GHz、1.8GHz、1.9GHz、2.1GHz、2.6GHzの周波数帯域で動作します。セルラーベースバンドプロセッサのすべてのデータ転送プロトコルは、外部UARTおよびUSBインターフェースを使用し、ATコマンドで制御および設定できます。
プロトコル
- デュアルスタックIPv4およびIPv6
- 組み込みTCP/IP、UDP/IP、FTP、HTTP
- 組み込みMQTTおよびMQTT-SN
- 組み込みLwM2M
- eSIMおよびベアラ独立プロトコル(BIP)
LARA-R6モジュールは3.1~4.5Vの電源電圧を必要とし、アイドル時の消費電流は約1.1mAです。2G動作では、個々のTDMAタイムスロットは1mW(dBm)(2.0W超)を基準として33デシベルを超えるピーク送信電力に達する可能性があり、その他すべてのRATは24dBm(0.25W超)を超えるレベルに達します。
0.1pW未満の信号電力に対応する-100dBm未満の優れたアンテナ感度により、モバイルネットワークのエッジでの安定した無線接続が可能になります。
評価とプログラミング
LARA-R6モジュールの評価とプログラミングを開始する最も迅速な方法は、R6 EVB(EVK-R6)および対応する地域のプラグインLARA-R6アダプタボード(ADP-R6)を使用することです。たとえば、グローバルアプリケーション用のEVK-R6001-00Bには、プラグインアダプタボードADP-R6001-00B(音声+データ)とGNSSアダプタボードが内蔵されています(図3)。
図3:LARA-R6 EVB(EVK-R6)と付属のLARA-R6アダプタボード(下)およびGNSSボード(左上)。(画像提供:u-blox)
北米向けのEVK-R6401-00Bには ADP-R6401-00Bアダプタが内蔵され、EMEA/APAC/JP/LATAM向けのEVK-R6801-00BにはADP-R6801-00Bアダプタが内蔵されています。また、ADP-R6401D-00B(北米)やADP-R6001D-00B(グローバル)など、前述した音声とデータ伝送用の3つのアダプタボードも、データ伝送のみのバージョンとして別途入手可能です。
R6アダプタボードは、2本のアンテナと2つのMiniUSBコネクタでLARA-R6モジュールを拡張します。R6 EVBは、GNSSモジュール、SIMカードスロット、追加のプラグイン接続、ジャンパ、スイッチ、電源をモジュール周辺機器に追加します(図4)。
図4:GNSSおよびLARA-R6アダプタを接続したR6 EVBの機能ブロック図。(画像提供:u-blox)
各キットには、u-bloxのLTE Cat 1 LARA-R6アダプタボードとGNSSモジュールが付属したEVB 1台、USBケーブル1本、LTE移動無線アンテナ2本、GPS/GLONASSアンテナ1本、電源ユニット1台が含まれています。
EVKのコミッショニング
u-bloxの使いやすく強力なEVK-R6キットは、マルチモードLTE Cat 1/3G/2Gセルラーモジュールの評価を簡素化します。LARA-R6 USBドライバをインストールしたWindows PCは、USBコネクタ経由でLARA-R6モデムを制御し、システム設定による接続設定を簡素化します。まず、開発者は以下のことを行う必要があります。
- SIMカードを挿入し、両方のセルラーアンテナとGNSSアンテナを接続します。
- EVKのジャンパとスイッチを慎重に設定します。
- 電源電圧を印加し、EVBのメインスイッチSW400をオンにします。
-
- 「メインUART」インターフェースを介して低データレートのモデムとして動作させるには、PCをEVKのMiniUSBジャックJ501またはRS232ジャックJ500に接続します。
- 「2つのUART」経由で低データレートのモデムとして動作させるには、PCをADPのセルラーUSBジャックJ201インターフェースに接続します。
- 「ネイティブセルラーUSB」を介して高データレートのモデムとして動作させるには、PCをADPのMiniUSBジャックJ105に接続します。
- EVBのセルラー電源オンボタンSW302を押します。
- ターミナルアプリケーションソフトウェア(m-centerなど)を実行し、COMポートのセットアップメニューから、4a、4b、4cに対応するATポートを選択して、以下の値を設定します。データレート:115,200bps、データビット:8、パリティ:N、ストップビット:1。
詳細については、EVK-R6_UserGuide_UBX-21035387を参照してください。m-centerツールは、u-bloxのセルラー製品の評価、設定、テストに役立ち、ATコマンドターミナルを搭載しています。
Windows PCを使用したシンプルなインターネット接続
Windows PCをEVKに接続すると、以下2つの方法でワイヤレスインターネット接続を確立できます。
1. 低速パケットデータ接続:LARA-R6モジュールのUARTインターフェースを介してWindows PCのTCP/IPスタックを使用します。PCとEVKは、メソッド4aに従って接続されます。開発者は、Windowsのコントロールパネルを使用し、[電話とモデム] > [モデム] > [追加]を選択する必要があります。次のステップでは、[モデムを検出しない]チェックボックスを選び、[標準33.6kbpsモデム]を選択し、COMポートを割り当てます。必要に応じて、[プロパティ] > [詳細設定] > [追加の初期化コマンド]を追加することができます。
2. 高速パケットデータ接続:LARA-R6モジュールのセルラーネイティブUSBインターフェースにより、Windows PCのTCP/IPスタックを使用してインターネットにアクセスします。PCとEVKは、メソッド4cに従って接続されます。開発者は、Windowsのコントロールパネルから[ネットワークと共有センター] > [新しい接続またはネットワークのセットアップ]を選択し、[インターネットに接続します]をクリックする必要があります。次のステップでは、[ダイヤルアップ]とAT USBポートの1つを選択します。最後に、ダイヤルアップパラメータ(ダイヤルイン番号、プロバイダ名、ユーザーID、パスワード)を入力します。
携帯電話会社へのSIMカードの登録
SIMカードとMNOパラメータが設定されると、電源投入後、セルラーモジュールは自動的にセルラーネットワークに登録されます。問題がある場合は、表2に示すATコマンドを使用して手動で登録を確認できます。
|
表2:AT登録コマンド。(表提供:u-blox、筆者修正)
ATコマンドによるリモートHTTPサーバとの通信
GitHubリポジトリ 「Firechip_u-blox_LARA-R6_Arduino_Library」には、Arduinoコントローラ用にC++で記述された、LARA-R6モジュール用ATコマンドの広範なライブラリが含まれています。ピングテスト、登録、パケットスイッチ、SMS、GNSS、IoTクラウドを含む16のアプリケーション例により、カスタムコード構造の提案を提供します。
ATコマンドは、アクティブな接続中にリモートのHTTPサーバにリクエストを送信し、サーバの応答を受信して、その応答を透過的にローカルファイルシステムに保存することもできます。サポートされているメソッドは、HEAD、GET、DELETE、PUT、POSTファイル、POSTデータです。
Lara_R6_Example9は、HTTP POSTまたはGETを使用して、リモートHTTPサーバ ThingSpeak.comにランダムな温度を送信します。ThingSpeakはMathWorksが提供するIoT分析プラットフォームサービスで、クラウド上のライブデータストリームを集約、視覚化、分析するのに役立ちます。表3は、HTTPコマンド「POSTデータ」の構文を示しています。
|
表3:「POSTデータ」はHTTPコマンド番号5で、図のようなフォーマットになっています。(表提供:u-blox、筆者修正)
この例は、Arduinoホストコントローラでプログラムでき、ATコマンドでEVKボード上のLARA-R6モジュールを制御します。また、設定済みのSIMカードが必要です。
プログラマはThingSpeakユーザーアカウントを作成し、メニュー項目[チャネル] > [マイチャネル] > [新しいチャネル]でランダム温度測定値のフィールド1を設定する必要があります。対応する「Write API Key」はメインプログラムに入力され、「LARA-R6_Example9_ThingSpeak.ino」は変数myWriteAPIKey
に入力されます。
C++のメインプログラムは、ランダムな温度値を生成し、クラウド固有のデータ文字列を形成して、20秒ごとにライブラリ関数sendHTTPPOSTdata
を呼び出します(リスト1)。
コピー
...
1 String myWriteAPIKey = "PFIOEXW1VF21T7O6"; // Change this to your API key
2 String serverName = "api.thingspeak.com"; // Domain Name for HTTP POST/GET
3 [...]
4 void loop()
5 {
6 // Create a random temperature between 20 and 30
7 float temperature = ((float)random(2000,3000)) / 100.0;
8
9
10 // Send data using HTTP POST
11 String httpRequestData = "api_key=" + myWriteAPIKey + "&field1=" +
String(temperature);
12
13 Serial.print(F("POSTing a temperature of "));
14 Serial.print(String(temperature));
15 Serial.println(F(" to ThingSpeak"));
16
17 // Send HTTP POST request to /update. The reponse will be written to
post_response.txt in the LARA's file system
18 myLARA.sendHTTPPOSTdata(0, "/update", "post_response.txt", httpRequestData,
LARA_R6_HTTP_CONTENT_APPLICATION_X_WWW);
19
20
21 // Send data using HTTP GET
22 ==> see original code on Github
23
24 for (int i = 0; i < 20000; i++) // Wait for 20 seconds
25 {
26 myLARA.poll(); // Keep processing data from the LARA so we can catch
the HTTP command result
27 delay(1);
28 }
29 }
...
リスト1:このメインプログラムは、ランダムな温度値を生成し、20秒ごとにライブラリ関数sendHTTPPOSTdata
を呼び出します。(コード提供:Firechip on Github)
ライブラリ関数を呼び出すATコマンド文字列の生成
ライブラリヘッダ「Firechip_u-blox_LARA-R6_Arduino_Library.h」は、関数呼び出しsendHTTPPOSTdataをライブラリプロシージャ「Firechip_u-blox_LARA-R6_Arduino_Library.cpp」に転送し、そこで完全にフォーマットされたATコマンド文字列が生成されて送信されます(リスト2)。
コピー
...
1 LARA_R6_error_t LARA_R6::sendHTTPPOSTdata(int profile, String path,
String responseFilename, String data,
LARA_R6_http_content_types_t httpContentType)
2 {
3 LARA_R6_error_t err;
4 char *command;
5
6 if (profile >= LARA_R6_NUM_HTTP_PROFILES)
7 return LARA_R6_ERROR_ERROR;
8
9 command = lara_r6_calloc_char(strlen(LARA_R6_HTTP_COMMAND) + 24 +
path.length() + responseFilename.length()
+ data.length());
10 if (command == nullptr)
11 return LARA_R6_ERROR_OUT_OF_MEMORY;
12 sprintf(command, "%s=%d,%d,\"%s\",\"%s\",\"%s\",%d",
LARA_R6_HTTP_COMMAND, profile, LARA_R6_HTTP_COMMAND_POST_DATA,
path.c_str(), responseFilename.c_str(), data.c_str(),
httpContentType);
13
14 err = sendCommandWithResponse(command, LARA_R6_RESPONSE_OK_OR_ERROR,
nullptr, LARA_R6_STANDARD_RESPONSE_TIMEOUT);
15
16 free(command);
17 return err;
18 }
...
リスト2:このC++ライブラリプロシージャは、完全にフォーマットされたATコマンド文字列を生成して送信します(12行目)。(コード提供:Firechip on Github)
ライブラリプロシージャLARA_R6::sendHTTPPOSTdata
(リスト2)は、関数呼び出しmyLARA.sendHTTPPOSTdata()
(リスト1)の渡されたパラメータとライブラリヘッダから追加宣言された変数を使用し、表3に従って完全なHTTPコマンド文字列を生成します。最後に、LARA-R6モデムは結果のATコマンド文字列をThingSpeakのリモートHTTPサーバに送信します。
AT+UHTTPC=0,5,"/update","post_response.txt","api_key=PFIOEXW1VF21T7O6&field1=21.54",0
まとめ
低電力IoTおよびM2Mアプリケーションのグローバルネットワーキングにおいて、LARA-R6シリーズのLTE Cat 1マルチモード無線モジュールは効率的で費用対効果に優れています。上述したように、開発者はEVKを使用してすべてのインターフェースにすぐにアクセスでき、ATコマンドでモジュールのプロトコルや機能を簡単に設定・制御できます。それにより、PCモデムとして動作し、クラウドにデータを送信し、ライブラリ関数を介してATコマンド文字列を生成するための簡単なオプションが提供されます。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。