COMX LTE Module

LTEModule Class 提供了一组方法来控制 LTE 模块。通过AT指令的聊天脚本,将模块设为PPP模式,然后通过串口将数据发送到互联网。

支持以下产品:

COMX LTE

UiFlow2 应用示例

通过 LTE 进行 HTTP GET

在 UiFlow2 中打开 core2_lte_http_example.m5f2 项目。

这个示例演示如何将LTE模块进行PPP拨号,然后使用 requests2 库发送HTTP GET请求。

UiFlow2 代码块:

example_http.png

示例输出:

聊天脚本

在 UiFlow2 中打开 core2_lte_chat_example.m5f2 项目。

通过自定义的AT指令聊天脚本,将LTE模块设为PPP模式。

UiFlow2 代码块:

example_chat.png

示例输出:

MicroPython 应用示例

通过 LTE 进行 HTTP GET

这个示例演示如何将LTE模块进行PPP拨号,然后使用 requests2 库发送HTTP GET请求。

MicroPython 代码块:

  1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
  2#
  3# SPDX-License-Identifier: MIT
  4
  5import os, sys, io
  6import M5
  7from M5 import *
  8from module import LTEModule
  9import requests2
 10
 11
 12label0 = None
 13label1 = None
 14label2 = None
 15label3 = None
 16label4 = None
 17label5 = None
 18label6 = None
 19label7 = None
 20label8 = None
 21label9 = None
 22label10 = None
 23title0 = None
 24comlte_0 = None
 25http_req = None
 26
 27
 28def setup():
 29    global \
 30        label0, \
 31        label1, \
 32        label2, \
 33        label3, \
 34        label4, \
 35        label5, \
 36        label6, \
 37        label7, \
 38        label8, \
 39        label9, \
 40        label10, \
 41        title0, \
 42        comlte_0, \
 43        http_req
 44
 45    M5.begin()
 46    Widgets.fillScreen(0x222222)
 47    label0 = Widgets.Label("Connecting", 16, 47, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 48    label1 = Widgets.Label("IPv4:", 16, 80, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 49    label2 = Widgets.Label("Netmask:", 16, 112, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 50    label3 = Widgets.Label("Gateway:", 16, 144, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 51    label4 = Widgets.Label("DNS:", 16, 176, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 52    label5 = Widgets.Label("HTTP Code:", 16, 208, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 53    label6 = Widgets.Label("label6", 80, 80, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 54    label7 = Widgets.Label("label7", 120, 112, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 55    label8 = Widgets.Label("label8", 120, 144, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 56    label9 = Widgets.Label("label9", 80, 176, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 57    label10 = Widgets.Label("label10", 140, 208, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 58    title0 = Widgets.Title("COM.LTE Sample Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
 59
 60    comlte_0 = LTEModule(2, 14, 13, verbose=True)
 61    comlte_0.chat2("IP", "CMNET")
 62    comlte_0.active(True)
 63    comlte_0.connect(authmode=comlte_0.AUTH_NONE, username="", password="")
 64    while not (comlte_0.isconnected()):
 65        pass
 66    label0.setText(str("Connected"))
 67    label6.setText(str(comlte_0.ifconfig()[0]))
 68    label7.setText(str(comlte_0.ifconfig()[1]))
 69    label8.setText(str(comlte_0.ifconfig()[2]))
 70    label9.setText(str(comlte_0.ifconfig()[3]))
 71    http_req = requests2.get(
 72        "https://httpbin.org/get", headers={"Content-Type": "application/json"}
 73    )
 74    label10.setText(str(http_req.status_code))
 75    http_req.close()
 76
 77
 78def loop():
 79    global \
 80        label0, \
 81        label1, \
 82        label2, \
 83        label3, \
 84        label4, \
 85        label5, \
 86        label6, \
 87        label7, \
 88        label8, \
 89        label9, \
 90        label10, \
 91        title0, \
 92        comlte_0, \
 93        http_req
 94    M5.update()
 95
 96
 97if __name__ == "__main__":
 98    try:
 99        setup()
100        while True:
101            loop()
102    except (Exception, KeyboardInterrupt) as e:
103        try:
104            comlte_0.deinit()
105            from utility import print_error_msg
106
107            print_error_msg(e)
108        except ImportError:
109            print("please update to latest firmware")

示例输出:

聊天脚本

通过自定义的AT指令聊天脚本,将LTE模块设为PPP模式。

MicroPython 代码块:

  1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
  2#
  3# SPDX-License-Identifier: MIT
  4
  5import os, sys, io
  6import M5
  7from M5 import *
  8from module import LTEModule
  9import requests2
 10
 11
 12label0 = None
 13label1 = None
 14label2 = None
 15label3 = None
 16label4 = None
 17label5 = None
 18label6 = None
 19label7 = None
 20label8 = None
 21label9 = None
 22label10 = None
 23title0 = None
 24comlte_0 = None
 25http_req = None
 26
 27
 28def setup():
 29    global \
 30        label0, \
 31        label1, \
 32        label2, \
 33        label3, \
 34        label4, \
 35        label5, \
 36        label6, \
 37        label7, \
 38        label8, \
 39        label9, \
 40        label10, \
 41        title0, \
 42        comlte_0, \
 43        http_req
 44
 45    M5.begin()
 46    Widgets.fillScreen(0x222222)
 47    label0 = Widgets.Label("Connecting", 16, 47, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 48    label1 = Widgets.Label("IPv4:", 16, 80, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 49    label2 = Widgets.Label("Netmask:", 16, 112, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 50    label3 = Widgets.Label("Gateway:", 16, 144, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 51    label4 = Widgets.Label("DNS:", 16, 176, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 52    label5 = Widgets.Label("HTTP Code:", 16, 208, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 53    label6 = Widgets.Label("label6", 80, 80, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 54    label7 = Widgets.Label("label7", 120, 112, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 55    label8 = Widgets.Label("label8", 120, 144, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 56    label9 = Widgets.Label("label9", 80, 176, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 57    label10 = Widgets.Label("label10", 140, 208, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
 58    title0 = Widgets.Title("COM.LTE Sample Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
 59
 60    comlte_0 = LTEModule(2, 14, 13, verbose=True)
 61    comlte_0.chat(
 62        [
 63            ["ABORT", "BUSY"],
 64            ["ABORT", "NO ANSWER"],
 65            ["ABORT", "NO CARRIER"],
 66            ["ABORT", "NO DIALTONE"],
 67            ["ABORT", "\\nRINGING\\r\\n\\r\\nRINGING\\r"],
 68            ["SAY", "modem init: press <ctrl>-C to disconnect\\n"],
 69            ["", "+++ATH"],
 70            ["SAY", "Before Connecting\\n"],
 71            ["OK", 'AT+CGDCONT=1,"IP","CMNET"'],
 72            ["SAY", "\\n + defining PDP context\\n"],
 73            ["", "ATD*99#"],
 74            ["SAY", "Number Dialled\\n"],
 75            ["SAY", "\\n + attaching"],
 76            ["SAY", "\\n + requesting data connection"],
 77            ["CONNECT", "\\d\\c"],
 78            ["SAY", "\\n + connected"],
 79        ]
 80    )
 81    comlte_0.active(True)
 82    comlte_0.connect(authmode=comlte_0.AUTH_NONE, username="", password="")
 83    while not (comlte_0.isconnected()):
 84        pass
 85    label0.setText(str("Connected"))
 86    label6.setText(str(comlte_0.ifconfig()[0]))
 87    label7.setText(str(comlte_0.ifconfig()[1]))
 88    label8.setText(str(comlte_0.ifconfig()[2]))
 89    label9.setText(str(comlte_0.ifconfig()[3]))
 90    http_req = requests2.get(
 91        "https://httpbin.org/get", headers={"Content-Type": "application/json"}
 92    )
 93    label10.setText(str(http_req.status_code))
 94    http_req.close()
 95
 96
 97def loop():
 98    global \
 99        label0, \
100        label1, \
101        label2, \
102        label3, \
103        label4, \
104        label5, \
105        label6, \
106        label7, \
107        label8, \
108        label9, \
109        label10, \
110        title0, \
111        comlte_0, \
112        http_req
113    M5.update()
114
115
116if __name__ == "__main__":
117    try:
118        setup()
119        while True:
120            loop()
121    except (Exception, KeyboardInterrupt) as e:
122        try:
123            comlte_0.deinit()
124            from utility import print_error_msg
125
126            print_error_msg(e)
127        except ImportError:
128            print("please update to latest firmware")

示例输出:

API参考

LTEModule

class module.lte.LTEModule(id, tx, rx, verbose=False)

基类:object

LTE模块类。

参数:
  • id (int) – 连接到 LTE 模块的 UART ID。

  • tx (int) – 连接到LTE 模块的 UART TX 引脚。

  • rx (int) – 连接到LTE 模块的 UART RX 引脚。

  • verbose (bool) – 是否打印详细信息。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from module import LTEModule

comlte_0 = LTEModule(2, 14, 13, verbose=True)
active([is_active])

如果传递了布尔参数,则激活(“up”)或停用(“down”)网络接口。否则,如果未提供参数,则查询当前状态。

参数:

is_active (bool) – 如果为 True,则启用 LTE 模块,如果为 False,则禁用 LTE 模块。

返回:

返回 LTE 模块的激活状态。

返回类型:

bool

UiFlow2 代码块:

active.png

MicroPython 代码块:

comlte_0.active(True)
comlte_0.active(False)
comlte_0.active()
connect(authmode=AUTH_NONE, username='', password='')

使用给定的参数启动 PPP 连接。

参数:
  • authmode (int) – 身份验证模式,LTEModule.AUTH_NONE、LTEModule.AUTH_PAP 或“LTEModule.AUTH_CHAP”。

  • username (str) – 与身份验证模式一起使用的可选用户名。

  • password (str) – 与身份验证模式一起使用的可选密码。

返回:

UiFlow2 代码块:

connect.png

MicroPython 代码块:

comlte_0.connect(authmode=AUTH_NONE, username="", password="")
comlte_0.connect()
isconnected()

如果 PPP 链路已连接且正常运行,则返回 True。否则,返回 False。

返回:

如果 PPP 链路已连接且正常运行,则为 True,否则为 False。

返回类型:

bool

UiFlow2 代码块:

isconnected.png

MicroPython 代码块:

comlte_0.isconnected()
ifconfig()

获取 IP 级网络接口参数:IP 地址、子网掩码、网关和 DNS 服务器。此方法返回包含上述信息的四元组。

返回:

包含 IP 地址、子网掩码、网关和 DNS 服务器的四元组。

UiFlow2 代码块:

get_localip.png

get_subnet.png

get_gateway.png

get_dns.png

MicroPython 代码块:

comlte_0.ifconfig()
comlte_0.ifconfig()[0] # IP address
comlte_0.ifconfig()[1] # network
comlte_0.ifconfig()[2] # gateway
comlte_0.ifconfig()[3] # DNS server
chat(script)

与 LTE 模块聊天。

参数:

script (tuple) – 用于与 LTE 模块聊天的命令元组。每个命令都是两个元素的元组:第一个元素是期望值,第二个元素是命令。例如,((“OK”, “AT”)。

返回类型:

None

UiFlow2 代码块:

chat.png

MicroPython 代码块:

comlte_0.chat((("OK", "AT"), ("OK", "AT+CGDCONT=1,"IP","CMNET""), ("OK", "ATD*99#")))
chat2(pdp_type, apn)

与LTE模块聊天,建立PPP连接。

参数:
  • pdp_type (str) – PDP 类型。例如,“IP”、“PPP”、“IPV4V6”、“IPV6”。

  • apn (str) – 接入点名称。例如,“CMNET”。

返回类型:

None

UiFlow2 代码块:

chat2.png

MicroPython 代码块:

comlte_0.chat2("IP", "CMNET")
deinit()

取消初始化 LTE 模块。

UiFlow2 代码块:

deinit.png

MicroPython 代码块:

comlte_0.deinit()
返回类型:

None