使用全球蜂窝无线电模块将物联网设备快速安全地连接到云端
投稿人:DigiKey 欧洲编辑
2023-12-12
如需将便携式或远程网络终端设备连接到物联网 (IoT),或使用机对机通信 (M2M) 远程控制机器,通过云端进行数据交换的移动无线电连接是一个不错的选择。然而,这一方案却给开发人员带来了一些难题,例如要确定哪些无线网络可以支持全球所需的数据吞吐率,以及无线调制解调器必须能够处理哪些协议。此外,还必须考虑系统可扩展性、数据安全性、成本、上市时间以及用户的购置和运营成本。
本文简要介绍了 LTE Cat 1 可为物联网和 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) 协议经过设计,在能耗、网络资源和成本方面都特别高效。这对于物联网设备至关重要。
LTE Cat 1 可在全双工模式下提供高达 20 MHz 的信道带宽,下载数据速率可达 10 Mbps,上传数据速率可达 5 Mbps。使用两根天线支持接收 (Rx) 分集,性能更佳(表 1)。而 LTE Cat 1bis 仅使用一根天线。
|
表 1:LPWA 协议的性能比较。LTE CAT 1 使用两根天线支持接收分集;而 LTE Cat 1bis 仅使用一根天线。(图片来源:维基百科,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 模块配备多功能接口、各种不同的特性以及多频段和多模功能,适用于需要中速数据传输、无缝连接、出色的覆盖能力和低延时的应用。这些应用包括资产跟踪、远程信息处理、远程监控、警报中心、视频监视、互联健康和收银机终端。
所有模块均支持接收分集,可在覆盖条件差或需要基于 LTE 的语音传输 (VoLTE) 时提供可靠的性能。程序员可以利用嵌入式物联网协议(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)。
图 1:LARA-R6 模块有三个地区版本,可覆盖全球。(图片来源:DigiKey,由作者修改)
LARA-R6 特殊功能一览
LARA-R6 模块集成了带有外部接口的蜂窝基带处理器、带有放大器和滤波器的射频收发器、存储器和电源管理单元(图 2)。
图 2:LARA-R6 模块的内部结构。(图片来源:u-blox)
射频收发器的工作频带为 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 dBm(> 2.0 瓦,分贝数基准为 1 mW),而所有其他 RAT 的峰值传输功率均超过 24 dBm(> 0.25 瓦)。
小于 -100 dBm 的出色天线灵敏度,对应于小于 0.1 pW 的信号功率,可在移动网络边缘实现稳定的无线电连接。
评估和编程
开始 LARA-R6 模块评估和编程的最快方法是使用 R6 EVB (EVK-R6) 和相应地区的插入式 LARA-R6 适配器板 (ADP-R6)。例如,适用于全球应用的 EVK-R6001-00B 包括插入式适配器板 ADP-R6001-00B(语音 + 数据)和 GNSS 适配器板(图 3)。
图 3:安装了 LARA-R6 适配器板(下方)和 GNSS 板(左上)的 LARA-R6 EVB (EVK-R6)。(图片来源:u-blox)
适用于北美地区的 EVK-R6401-00B 版本包括 ADP-R6401-00B 适配器,而适用于 EMEA/APAC/JP/LATAM 地区的 EVK-R6801-00B 则包括 ADP-R6801-00B 适配器。前文提到的适用于语音和数据传输的三个适配器板也可单独提供,还有仅适用于数据传输的版本,包括 ADP-R6401D-00B(北美)和 ADP-R6001D-00B(全球)。
R6 适配器板通过两根天线和两个 MiniUSB 连接器扩展 LARA-R6 模块。R6 EVB 则增加了一个 GNSS 模块、一个 SIM 卡插槽、额外的插入式连接器、跳线、开关和模块外设的电源(图 4)。
图 4:插入了 GNSS 和 LARA-R6 适配器的 R6 EVB 功能框图。(图片来源:u-blox)
每个套件包含一个 u-blox 的 EVB(安装了 LTE Cat 1 LARA-R6 适配器板和 GNSS 模块)、一根 USB 电缆、两根 LTE 移动无线电天线、一根 GPS/GLONASS 天线和一个电源单元。
调试 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。
- 如需通过“两个 UART”作为低数据速率调制解调器运行,可将 PC 连接到 ADP 上的蜂窝 USB 插孔 J201 接口。
- 如需通过“本机蜂窝 USB”作为高数据速率调制解调器运行,可将 PC 连接到 ADP 上的 MiniUSB 插孔 J105。
- 按下 EVB 上的蜂窝模块开机按钮 SW302。
- 运行终端应用软件(例如 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 控制面板选择“网络和共享中心”>“设置新的连接或网络”,然后点击“连接到 Internet”。下一步是选择“拨号”和其中一个 AT USB 端口。最后一步是输入拨号参数(拨号号码、提供商名称、用户 ID 和密码)。
向移动运营商注册 SIM 卡
SIM 卡和 MNO 参数配置完成后,蜂窝模块会在开机后自动在蜂窝网络上进行注册。如果出现问题,可使用表 2 所示的 AT 命令手动检查注册情况。
|
表 2:AT 注册命令。(表格来源:u-blox,由作者修改)
通过 AT 命令与远程 HTTP 服务器通信
GitHub 存储库“Firechip_u-blox_LARA-R6_Arduino_Library”包含一个广泛的 LARA-R6 模块 AT 命令库,使用 C++ 编写,适用于 Arduino 控制器。16 个应用示例(包括 ping 测试、注册、分组交换、SMS、GNSS 和物联网云)可为自定义代码结构提供建议。
AT 命令还可以在主动连接期间向远程 HTTP 服务器发送请求,接收服务器响应,并将该响应透明地存储在本地文件系统中。受支持的方法有 HEAD、GET、DELETE、PUT、POST file 和 POST data。
Lara_R6_Example9 使用 HTTP POST 或 GET 向远程 HTTP 服务器 ThingSpeak.com 发送随机温度。ThingSpeak 是 MathWorks 提供的物联网分析平台服务,可帮助在云端聚合、可视化和分析实时数据流。表 3 显示了 HTTP 命令“POST data”的语法。
|
表 3:“POST data”是 HTTP 命令 5,格式如上所示。(表格来源:u-blox,由作者修改)
该示例可在 Arduino 主机控制器上编程,通过 AT 命令控制 EVK 板上的 LARA-R6 模块。此外,还需要配置 SIM 卡。
程序员必须创建 ThingSpeak 用户帐户,并通过菜单项“Channels(通道)”>“My Channels(我的通道)”>“New Channel(新通道)”为随机温度测量值设置字段 1。在变量 myWriteAPIKey
中,相应的“写入 API 密钥”被输入到主程序“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
总结
对于低功耗物联网和 M2M 应用的全球联网,LARA-R6 系列的 LTE Cat 1 多模无线电模块既高效又经济。如图所示,开发人员可以使用 EVK 访问所有接口,并通过 AT 命令轻松配置和控制模块的协议和功能。该产品提供简单的选项,可用作 PC 调制解调器、向云端发送数据以及通过库函数生成 AT 命令字符串。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。