下面的信息全部由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>
注意事项
- 实例ID管理:
- 每次调用
AT+MHTTPCREATE
时,模块会返回一个新的<httpid>
。确保使用正确的<httpid>
发起请求。 - 删除实例后,该
<httpid>
将失效,不能再使用。
- 网络连接状态:
- 如果需要频繁切换网址,建议保持PDP上下文激活状态(即不关闭网络连接),以减少连接建立和断开的开销。
- 如果需要断开网络连接,可以使用
AT+MIPCALL=0,1
,并在需要时重新激活。
- 缓存模式:
- 如果启用了缓存模式(
AT+MHTTPCFG="cached",<httpid>,1
),可以通过AT+MHTTPREAD
读取缓存数据。 - 如果未启用缓存模式,数据将直接通过URC上报。
- 错误处理:
- 如果模块返回错误码,可以参考《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