使用全球蜂巢無線電模組,將 IoT 裝置快速安全地連線至雲端

作者:Jens Wallmann

資料提供者:DigiKey 歐洲編輯群

要將可攜式或遠端網路終端裝置連接到物聯網 (IoT),或者使用機器對機器通訊 (M2M) 從遠端控制機器,以行動無線電連線透過雲端進行資料交換,是個不錯的選擇。但是,這個選擇也為開發人員帶來一些挑戰。例如,開發人員要判斷哪些無線網路能在全球範圍內支援所需的數據傳輸量,以及無線數據機必須能處理哪些協定等事項。除此之外,還要考量系統的可擴充性、資料安全性、成本、上市時間,以及使用者需負擔的採購和營運成本。

本文將簡要介紹 LTE Cat 1 為 IoT 和 M2M 應用開發人員提供的功能。接著會介紹 u-bloxLARA-R6 無線電模組系列,此系列可提供通用的連接性和可靠的效能。最後將總結開發人員如何使用評估板 (EVB),透過 AT 命令輕鬆地配置和控制模組,以及如何透過程式庫函數產生 AT 命令字串。

LTE Cat 1 與 LTE Cat 1bis、LTE Cat M 和 LTE Cat NB 的比較

雖然當前的 LTE 蜂巢無線電技術已可達到 Gigabit 的傳輸速率,但 LTE Cat 1、LTE Cat 1bis、LTE Cat M 和 LTE Cat NB 等低功耗廣域 (LPWA) 協定經過專業設計,能在能耗、網路資源和成本方面提供顯著效益。這對 IoT 裝置來說尤其重要。

LTE Cat 1 以全雙工模式提供高達 20 MHz 的通道頻寬,可達到最高達 10 Mbps 的下載數據傳輸率,和高達 5 Mbps 的上傳數據傳輸率。有兩條天線,可促成接收器 (Rx) 分集,達到更好的效能 (表 1)。LTE Cat 1bis 使用單一條天線。

LTE Cat1/Cat 1bis LTE Cat M1 LTE Cat NB1
3GPP 版本 版本 8 版本 13 版本 13
下行鏈路峰值速率 10 Mpbs 1 Mbps 26 kbps
上行鏈路峰值速率 5 Mbps 1 Mbps 66 kbps (多頻)
16.9 kbps (單頻)
延遲 50 ms 至 100 ms 10 ms 至 15 ms 1.6 s 至 10 s
天線數量 2 (LTE Cat 1)
1 (LTE Cat 1bis)
1 1
雙工模式 全雙工 全雙工或半雙工 半雙工
裝置接收頻寬 1.4 MHz 至 20 MHz 1.4 180 kHz

表 1:LPWA 協定的效能比較。LTE CAT 1 使用了兩條天線來達到 Rx 分集;LTE Cat 1bis 僅使用一條天線。(圖片來源: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 24 mm 的小型 LGA 尺寸。

LARA-R6 模組配備多種介面,具有豐富的功能以及多頻段和多模式能力,非常適合需要中等數據速度、順暢連線、良好覆蓋範圍和低延遲的應用,例如資產追蹤、電傳系統、遠端監控、警報中心、監視系統,連網保健和銷售點終端機等。

所有模組均支援 Rx 分集,即使在不理想的覆蓋條件下或需要 LTE 語音 (VoLTE) 時,也能提供可靠的效能。編程人員可以利用嵌入式 IoT 通訊協定 (LwM2M、MQTT) 和安全功能 (TLS/DTLS、安全更新及安全啟動) 來實作多種功能,包括裝置管理、遠端裝置控制以及安全韌體空中 (FOTA) 更新等。

LARA-R6 系列支援 3GPP 版本 10 中的 LTE Cat 1,並推出三個區域性型號達到全球覆蓋:

  • LARA-R6001-00B (數據和語音) 及 LARA-R6001D-00B (純數據) 模組支援 18 個 LTE FDD/TDD 頻段,並具有 3G/2G 備援,可達到全球連線。
  • LARA-R6401-00B (數據和語音) 及 LARA-R6401D-00B (純數據) 模組是適合北美洲的理想 LTE Cat 1 解決方案,可支援 AT&T、FirstNet、Verizon 及 T-Mobile 的 LTE 頻段。
  • LARA-R6801-00B (數據和語音) 及 LARA-R6801D-01B (純數據) 模組經過專門設計,可部署於歐洲、中東和非洲區 (EMEA)、亞太 (APAC)、日本 (JP) 和拉丁美洲 (LATAM) 等區域 (圖 1)。

LARA-R6 模組區域性型號分佈圖圖 1:LARA-R6 模組提供三個區域性型號,可涵蓋全球範圍。(圖片來源:DigiKey,經作者修改)

LARA-R6 特殊功能概覽

LARA-R6 模組整合了蜂巢式基頻處理器 (含外部介面)、RF 收發器 (含放大器和濾波器)、記憶體和電源管理單元 (圖 2)。

u-blox 的 LARA-R6 模組內部結構示意圖 (按此放大)圖 2:LARA-R6 模組的內部結構。(圖片來源:u-blox)

此 RF 收發器可在 700 MHz、800 MHz、850 MHz、900 MHz、1.7 GHz、1.8 GHz、1.9 GHz、2.1 GHz 和 2.6 GHz 頻段下工作。蜂巢式基頻處理器的所有數據傳輸協定,皆可使用外部 UART 和 USB 介面透過 AT 命令進行控制和配置。

協定

  • 雙堆疊 IPv4 和 IPv6
  • 嵌入式 TCP/IP、UDP/IP、FTP 和 HTTP
  • 嵌入式 MQTT 和 MQTT-SN
  • 嵌入式 LwM2M
  • eSIM 和承載獨立協定 (BIP)

LARA-R6 模組需要的電源電壓為 3.1 至 4.5 V,其閒置電流消耗約為 1.1 mA。在 2G 工作下,各個 TDMA 時槽的峰值傳輸功率可超過 33 dB,參考功率為 1 mW (dBm) (> 2.0 W),而其他所有 RAT 則可達到超過 24 dBm (> 0.25 W) 的程度。

具有不到 -100 dBm 的優異天線靈敏度,對應的訊號功率小於 0.1 pW,可在行動網路邊緣達到穩定的無線電連線。

評估和編程

要開始評估和編程 LARA-R6 模組,最快的方法就是使用對應區域的 R6 EVB (EVK-R6) 和插入式 LARA-R6 配接器板 (ADP-R6)。例如,EVK-R6001-00B 適合全球性的應用,其中含有插入式配接器板 ADP-R6001-00B (語音 + 數據) 和 GNSS 配接器板 (圖 3)。

u-blox 的 LARA-R6 EVB (EVK-R6) 附加 LARA-R6 配接器板示意圖 (按此放大)圖 3:LARA-R6 EVB (EVK-R6) 連接 LARA-R6 配接器板 (底部) 和 GNSS 板 (左上)。(圖片來源:u-blox)

EVK-R6401-00B 型號適用於北美洲,其中含有 ADP-R6401-00B 配接器,而 EVK-R6801-00B 則適用於歐洲、中東和非洲區/亞太/日本/拉丁美洲,含有 ADP-R6801-00B 配接器。上述三個語音和數據傳輸用的配接器板亦可單獨提供,也有提供純數據傳輸的款式,包括 ADP-R6401D-00B (北美洲) 和 ADP-R6001D-00B (全球)。

R6 配接器板可以透過兩個天線和兩個 MiniUSB 連接器來擴充 LARA-R6 模組。R6 EVB 可為模組周邊裝置增添 GNSS 模組、SIM 卡插槽、額外的插入式連接、跳接器、開關和電源供應器 (圖 4)。

u-blox R6 EVB 插入 GNSS 和 LARA-R6 配接器後的功能方塊圖 (按此放大)圖 4:R6 EVB 插入 GNSS 和 LARA-R6 配接器後的功能方塊圖 (圖片來源:u-blox)

每個套件均含有一個連接 LTE Cat 1 LARA-R6 配接器板的評估板 (EVB),以及一個 u-blox 的 GNSS 模組、一條 USB 纜線、兩個 LTE 行動無線電天線、一個 GPS/GLONASS 天線和一個電源供應器單元。

評估套件試運行

u-blox 的 EVK-R6 套件使用簡便且功能強大,可簡化多模式 LTE Cat 1 / 3G / 2G 蜂巢通訊模組的評估作業。只需一台裝有 LARA-R6 USB 驅動程式的 Windows PC,即可透過 USB 連接器控制 LARA-R6 數據機,並透過系統設定值簡化連線的設定。要開始使用,開發人員需要執行以下步驟:

  1. 插入 SIM 卡並連接行動通訊天線和 GNSS 天線。
  2. 仔細配置 EVK 的跳接器和開關。
  3. 施加電源電壓並打開 EVB 上的主開關 SW400。
    1. 若要透過「Main UART」(主 UART) 介面當作低數據傳輸率的數據機,請將 PC 連接至 EVK 上的 MiniUSB 插孔 J501 或 RS232 插孔 J500。
    2. 若要透過「Two UARTs」(兩個 UART) 當作低數據傳輸率的數據機,請將 PC 連接至 ADP 上的蜂巢通訊 USB 插孔 J201 介面。
    3. 若要透過「Native Cellular USB」(原生蜂巢通訊 USB) 當作高數據傳輸率的數據機,請將 PC 連接至 ADP 上的 MiniUSB 插孔 J105。
  4. 按下 EVB 上的 Cellular Power-on (蜂巢通訊啟動) 按鈕 SW302。
  5. 執行終端應用程式軟體 (如 m-center),進入 COM 連接埠設定選單,選擇對應 4a、4b 或 4c 的 AT 埠,然後設定以下數值:數據傳輸率:115,200 bps;資料位元:8;校驗位元:N;停止位元:1。

如需更多詳情,請參閱 EVK-R6_UserGuide_UBX-21035387。m-center 工具可協助評估、配置和測試 u-blox 蜂巢通訊產品,並內含 AT 命令終端機。

使用 Windows PC 輕鬆建立網際網路連線

在將 Windows PC 連接到 EVK 後,使用者可以透過以下兩種方式建立無線網際網路連線:

1:低速封包數據連線:此方法可透過 LARA-R6 模組的 UART 介面,使用 Windows PC 的 TCP/IP 堆疊。請按照方法 4a 連接 PC 和 EVK。開發人員必須在 Windows 控制台中選擇 [電話和數據機 > 數據機 > 新增]。接下來依序勾選 [不偵測我的數據機] 核取方塊、[標準 33.6 kbps 數據機],然後配置 COM 連接埠。如有必要,開發人員可以新增 [屬性 > 進階 > 額外初始化] 命令。

2:高速封包數據連線:此方法可透過 LARA-R6 模組的蜂巢通訊原生 USB 介面,使用 Windows PC 的 TCP/IP 堆疊來存取網際網路。請按照方法 4c 連接 PC 和 EVK。開發人員需要在 Windows 控制台中選擇 [網路和共用中心 > 建立新連線或網路),然後按一下 [連接網際網路]。接下來選擇 [撥號] 以及其中一個 AT USB 連接埠。最後輸入撥號參數 (撥入號碼、供應商名稱、使用者 ID 和密碼)。

向行動通訊業者註冊 SIM 卡

SIM 卡和 MNO 參數設定完成後,蜂巢通訊模組就會在開機後自動在蜂巢網路中註冊。如果出現問題,可以使用表 2 中的 AT 命令手動檢查註冊情況。

DTE 發送的命令 (使用者) DCE 回應 (模組) 說明
AT+CREG? +CREG: 0,1 OK 確認網路註冊。
AT+COPS=0 OK 僅在自動註冊失敗時,才在網路上註冊模組 (AT+CREG?returns 0,0).
AT+COPS? +COPS: 0,0,"I TIM",7 OK 讀取業者名稱和無線電接取技術 (RAT)。

表 2:AT 註冊命令。(表格來源:u-blox,經作者修改)

透過 AT 命令與遠端 HTTP 伺服器進行通訊

GitHub 儲存庫「Firechip_u-blox_LARA-R6_Arduino_Library」有針對 LARA-R6 模組提供一套豐富的 AT 命令,這些命令以 C++ 語言撰寫,可用於 Arduino 控制器。更提供十六個應用範例,涵蓋了 ping 測試、註冊、封包交換、SMS、GNSS 以及 IoT 雲端服務,可提供自訂程式碼結構的建議。

此外,AT 命令能夠在有效連線期間,向遠端 HTTP 伺服器發送請求、接收伺服器回應,並能在本機檔案系統中透明地儲存這些回應。支援的方法包括 HEAD、GET、DELETE、PUT、POST file 和 POST data。

在 Lara_R6_Example9 中,會使用 HTTP POST 或 GET 方法把隨機產生的溫度傳送至 RemoteHTTP-Server ThingSpeak.com。ThingSpeak 是 MathWorks 提供的一個 IoT 分析平台服務,可用於聚合、視覺化和分析雲端中的即時資料流。表 3 顯示 HTTP 命令「POST data」的語法。

類型 語法 回應 範例
設定 AT+UHTTPC=<profile_id>,5,
<path>,<filename>,<data>,
<HTTP_content_type>
[,<user_defined_content_type>]
OK AT+UHTTPC=0,5,"/path/file.html", "responseFilename","data",0 OK

表 3:「POST data」是編號第 5 的 HTTP 命令,其格式如上所示。(表格來源:u-blox,經作者修改)

此範例可在 Arduino 主機控制器上進行編程,進而透過 AT 命令來控制 EVK 板上的 LARA-R6 模組。此外,還需要一張設定好的 SIM 卡。

編程人員必須建立一個 ThingSpeak 使用者帳戶,並透過選單項目「Channels > My Channels > New Channel」(通道 > 我的通道 > 新通道),將隨機溫度測量值設定成欄位 1。以變數 myWriteAPIKey 將對應的「Write API Key」輸入主程式「LARA-R6_Example9_ThingSpeak.ino」中。

此 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。(原始程式碼:Github 上的 Firechip)

產生調用程式庫函數的 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 行)。(原始程式碼:Github 上的 Firechip)

程式庫程序 LARA_R6::sendHTTPPOSTdata (清單 2) 會使用函數調用 myLARA.sendHTTPPOSTdata() (清單 1) 傳遞的參數以及程式庫標頭中額外聲明的變數,根據表 3 產生完整的 HTTP 命令字串。最後,由 LARA-R6 數據機將產生的 AT 命令字串傳送到 ThingSpeak RemoteHTTP 伺服器:

AT+UHTTPC=0,5,"/update","post_response.txt","api_key=PFIOEXW1VF21T7O6&field1=21.54",0

結論

LARA-R6 系列的 LTE Cat 1 多模式無線電模組可針對低功耗 IoT 和 M2M 應用提供既高效又經濟的全球網路連線解決方案。如本文所述,開發人員現在能夠隨時使用 EVK 存取所有介面,並且能夠透過 AT 命令輕鬆設定和控制模組的協定和功能。如此一來就能以簡單的方式當作 PC 數據機使用,即可將數據傳送到雲端,並透過程式庫函數產生 AT 命令字串。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Jens Wallmann

Jens Wallmann

Jens Wallmann 是一名自由編輯,專門處理紙本與線上電子刊物。身為電氣工程師 (通訊工程) 與訓練有素的工業電子工程師,在電子開發領域已累積超過 25 年經驗,鑽研量測技術、汽車電子、製程工業與無線射頻領域。

關於出版者

DigiKey 歐洲編輯群