ML307R 中移动 AT指令HTTP GET请求AI读文档

下面的信息全部由AI 读取文档并解析出来,可以尝试,之前用的大夏龙雀的4G模块可以正常使用,想换一个新的模块。切入正题,未验证,谨慎。

要通过ML307R模块向 http://httpbin.org/get 发起GET请求并获取返回信息,需要完成以下步骤:

1. 串口连接与波特率

  • 波特率:ML307R模块的默认波特率为115200 bps。如果需要确认或修改波特率,可以使用以下AT命令:
  AT+IPR=115200

如果波特率已经是115200 bps,则无需修改。

  • 接线:使用CH340(USB转UART)模块连接ML307R时,接线方式如下:
  • TXD(CH340的发送端)连接到ML307R的 RXD(接收端)。
  • RXD(CH340的接收端)连接到ML307R的 TXD(发送端)。
  • GND(地线)连接到ML307R的 GND
  • VCC(电源正极)连接到ML307R的 3.3V 引脚(注意:ML307R的工作电压为3.3V,确保CH340模块的输出电压为3.3V,避免损坏模块)。

2. AT指令流程

以下是完成HTTP GET请求所需的AT指令步骤:

步骤 1:模块初始化

  • 确保模块已开机并初始化完成,等待模块返回 +MATREADY
  AT

如果返回 OK,则模块已就绪。

步骤 2:配置网络参数

  • 配置PDP上下文,设置为IPv4/IPv6双栈模式(默认即可)。
  AT+CGDCONT=1,"IPV4V6","cmnet"

步骤 3:建立网络连接

  • 激活PDP上下文,建立网络连接。
  AT+MIPCALL=1,1

如果连接成功,模块会返回类似以下信息:

  +MIPCALL: 1,1,"10.10.10.10","2001:db8::1"

步骤 4:创建HTTP实例

  • 创建HTTP实例,指定目标URL。
  AT+MHTTPCREATE="http://httpbin.org/get"

如果成功,模块会返回:

  +MHTTPCREATE: <httpid>

步骤 5:设置HTTP请求参数

  • 设置HTTP请求方法为GET。
  AT+MHTTPREQUEST=<httpid>,1,0,"/get"

其中 <httpid> 是上一步创建实例时返回的实例ID。

步骤 6:读取HTTP响应

  • 模块会通过URC(无响应命令)上报HTTP响应信息,格式如下:
  +MHTTPURC: "header",<httpid>,<code>,<header_len>,<header_data>
  +MHTTPURC: "content",<httpid>,<content_len>,<sum_len>,<cur_len>,<content_data>

如果需要主动读取缓存数据(如果启用了缓存模式),可以使用:

  AT+MHTTPREAD=<httpid>,0,<read_len>

步骤 7:删除HTTP实例

  • 完成请求后,删除HTTP实例以释放资源。
  AT+MHTTPDEL=<httpid>

步骤 8:断开网络连接

  • 断开PDP上下文,关闭网络连接。
  AT+MIPCALL=0,1

3. 完整示例

以下是完整的AT指令流程示例:

AT+IPR=115200 // 确保波特率为115200 bps
AT+CGDCONT=1,"IPV4V6","cmnet" // 配置PDP上下文
AT+MIPCALL=1,1 // 激活PDP上下文,建立网络连接
AT+MHTTPCREATE="http://httpbin.org/get" // 创建HTTP实例
AT+MHTTPREQUEST=<httpid>,1,0,"/get" // 发起GET请求
// 等待模块通过URC上报HTTP响应
AT+MHTTPDEL=<httpid> // 删除HTTP实例
AT+MIPCALL=0,1 // 断开网络连接

4. 注意事项

  • 确保CH340模块的输出电压为3.3V,以匹配ML307R模块的工作电压。
  • 如果模块返回错误码,可以参考《HTTP/HTTPS用户手册》中的错误码说明进行排查。
  • 如果需要频繁发起请求,建议在请求结束后保留HTTP实例,仅在必要时删除。

以上步骤和指令可以帮助你通过ML307R模块完成HTTP GET请求并获取返回信息。

如果需要在完成第一次HTTP GET请求后切换到另一个网址(假设为 http://example.com)并再次发起GET请求,可以通过以下步骤实现。以下是完整的AT指令流程:

步骤 1:删除当前HTTP实例

在切换到新的网址之前,需要先删除当前的HTTP实例,以释放资源。

AT+MHTTPDEL=<httpid>
  • <httpid> 是当前HTTP实例的ID,由 AT+MHTTPCREATE 返回。

步骤 2:创建新的HTTP实例

为新的网址创建一个新的HTTP实例。

AT+MHTTPCREATE="http://example.com"
  • 如果成功,模块会返回新的 <httpid>

步骤 3:设置新的HTTP请求

为新的网址设置GET请求。

AT+MHTTPREQUEST=<httpid>,1,0,"/get"
  • <httpid> 是新创建的HTTP实例ID。

步骤 4:读取HTTP响应

模块会通过URC上报HTTP响应信息。如果需要主动读取缓存数据(如果启用了缓存模式),可以使用:

AT+MHTTPREAD=<httpid>,0,<read_len>

步骤 5:删除新的HTTP实例

完成请求后,删除新的HTTP实例以释放资源。

AT+MHTTPDEL=<httpid>

完整示例

以下是完整的AT指令流程示例,包括切换到新的网址并发起GET请求:

// 删除当前HTTP实例
AT+MHTTPDEL=<httpid>

// 创建新的HTTP实例
AT+MHTTPCREATE="http://example.com"
+MHTTPCREATE: <httpid_new> // 模块返回新的实例ID

// 发起新的GET请求
AT+MHTTPREQUEST=<httpid_new>,1,0,"/get"

// 等待模块通过URC上报HTTP响应
+MHTTPURC: "header",<httpid_new>,<code>,<header_len>,<header_data>
+MHTTPURC: "content",<httpid_new>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除新的HTTP实例
AT+MHTTPDEL=<httpid_new>

注意事项

  1. 实例ID管理
  • 每次调用 AT+MHTTPCREATE 时,模块会返回一个新的 <httpid>。确保使用正确的 <httpid> 发起请求。
  • 删除实例后,该 <httpid> 将失效,不能再使用。
  1. 网络连接状态
  • 如果需要频繁切换网址,建议保持PDP上下文激活状态(即不关闭网络连接),以减少连接建立和断开的开销。
  • 如果需要断开网络连接,可以使用 AT+MIPCALL=0,1,并在需要时重新激活。
  1. 缓存模式
  • 如果启用了缓存模式(AT+MHTTPCFG="cached",<httpid>,1),可以通过 AT+MHTTPREAD 读取缓存数据。
  • 如果未启用缓存模式,数据将直接通过URC上报。
  1. 错误处理
  • 如果模块返回错误码,可以参考《HTTP/HTTPS用户手册》中的错误码说明进行排查。
  • 常见错误码包括:
    • 652:客户端未创建。
    • 653:客户端忙。
    • 656:连接失败。

通过以上步骤,你可以轻松地在完成一次HTTP请求后切换到另一个网址并再次发起GET请求。

合体::

// 确保波特率为115200 bps(如果需要修改波特率)
AT+IPR=115200

// 配置PDP上下文为IPv4/IPv6双栈模式
AT+CGDCONT=1,"IPV4V6","cmnet"

// 激活PDP上下文,建立网络连接
AT+MIPCALL=1,1

// 创建第一个HTTP实例(针对 http://httpbin.org/get)
AT+MHTTPCREATE="http://httpbin.org/get"
+MHTTPCREATE: <httpid1> // 假设返回的实例ID为 <httpid1>

// 发起第一个GET请求
AT+MHTTPREQUEST=<httpid1>,1,0,"/get"
// 等待模块通过URC上报HTTP响应
// +MHTTPURC: "header",<httpid1>,<code>,<header_len>,<header_data>
// +MHTTPURC: "content",<httpid1>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除第一个HTTP实例
AT+MHTTPDEL=<httpid1>

// 创建第二个HTTP实例(针对 http://example.com)
AT+MHTTPCREATE="http://example.com"
+MHTTPCREATE: <httpid2> // 假设返回的实例ID为 <httpid2>

// 发起第二个GET请求
AT+MHTTPREQUEST=<httpid2>,1,0,"/get"
// 等待模块通过URC上报HTTP响应
// +MHTTPURC: "header",<httpid2>,<code>,<header_len>,<header_data>
// +MHTTPURC: "content",<httpid2>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除第二个HTTP实例
AT+MHTTPDEL=<httpid2>

// 断开网络连接
AT+MIPCALL=0,1

发表回复