0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT开发HTTP应用:Air780EP低功耗4G模组

青山老竹农 来源:jf_75140285 2024-10-25 17:29 次阅读

​ 已经写了一篇基于Air780EP模组AT开发的FOTA远程升级指南, 有客户朋友询问能否讲讲HTTP应用部分? 本期特别安排——涵盖HTTP基本应用流程、GET/POST/SSL请求示例、断点续传、常见问题等内容。

Air780EP是一款 低功耗4G全网通模组 ,兼容模组行业1618经典封装,支持OpenCPU开发及全功能数传AT开发,可广泛应用于多样化的物联网终端。

一、相关准备工作

1.1 硬件准备

1.2 软件准备

  • 串口调试工具
    如果没有准备,推荐使用LLCOM:
  • AT固件下载

进入AT固件下载页面按下Ctrl+F,搜索AirM2M_780EP_LTE_AT,即可找到Air780EP模块所使用的AT固件。

本文使用示例为:

AirM2M_780EP_V1007_LTE_AT版本固件

推荐选用:相关型号固件名称后面数字版本号最高的最新relase版本进行调试。

二、HTTP应用基本流程

合宙低功耗4G模块支持HTTP和HTTPS协议,HTTP应用的基本流程如下:

  1. 激活PDP
  2. 初始化HTTP服务
  3. 设置HTTP会话参数
  4. 如果要支持SSL,配置SSL参数
  5. 如果使用POST命令,输入POST数据
  6. 发起HTTP请求
  7. 收到HTTP应答,读取应答数据
  8. 终止HTTP服务

相关注意事项:

第1步如果出现异常,首先需要排查HTTP连接和请求参数是否正常,通过Postman是否可以请求成功,模块上网是否正常(AT+CEREG?);

第2步到第5步,只要输入格式正确,基本不会出问题;如果出错,可以跳过,直接处理第6步的异常;

第6步和第7步如果出现异常:终止HTTP服务,有选择性的去激活PDP;然后再有选择性的激活PDP,从第2步开始重新执行。

三、HTTP GET请求示例

具体指令和参数使用说明,可参考AT指令手册:

图片

相关注意事项:

01. 请求及应答

发送AT+HTTPACTION命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示请求发送成功,收到了应答。

只有收到+HTTPACTION: n,statusCode,len才表示请求结束,statusCode表示应答成功,其余都表示应答失败。

02. 数据大小限制

HTTP应答数据的缓冲区大小为4KB,如果返回的http body数据超过了这个大小,则需要 断点下载 ——可以使用AT+HTTPPARA命令,通过设置BREAK和BREAKEND参数来实现。

03. HTTP被动断开

发送AT+HTTPACTION命令,和服务器建立了HTTP连接后,如果连接异常被动断开,会输出+HTTPACTION: ,,提示。

04. PDP被动激活

先来看下PDP被动激活时的AT命令处理序列,如果不理解AT命令含义,请自行参考AT手册。

+PDP DEACT // 出现PDP去激活的URC上报

后面如果没做任何处理,接着做HTTP请求会失败,可以按照下方的建议处理。

应对处理每次结束,都需要重新走一遍HTTP请求流程:

第一种方法:

AT+CIPSHUT // 关闭移动场景

第二种方法:

AT+CIPSHUT // 关闭移动场景

AT+CGDCONT=5,"IP",""//请填写实际APN

AT+CGACT=1,5

第三种方法:

AT+CFUN=0 // 进入飞行模式

AT+CFUN=1 // 退出飞行模式

第四种方法:

AT+RESET // 重启模块

参考下发流程中收到"+SAPBR 1: DEACT"错误提示,表示PDP被动去激活,为异常处理的触发点。

图片

四、HTTP POST请求示例

POST请求流程与GET流程基本一致,只有指令参数:

AT+HTTPACTION=0

变为:

AT+HTTPACTION=1

具体指令和参数使用说明,可参考AT指令手册:

图片

五、HTTPS SSL请求示例

本示例为带SSL证书双向验证功能的HTTPS过程,具体指令和参数使用说明,可参考AT指令手册:

图片

图片

六、HTTP断点续传示例

在实际的应用场景中,可能需要下载一个非常大的文件,例如几百K字节、几M字节,但是****4G模块中HTTP可用的内存缓冲区Air780EP模块只有4KB左右。 当文件大小超过这个缓冲区时,就要使用断点续传功能来分段下载处理了。

下文以“下载一个119345字节的文件”为例,来说明如何使用断点续传功能(注意:本示例仅仅演示了正常流程的HTTP AT命令,完整流程以及异常处理流程请参考本文应用流程部分)。

图片

图片

七、常见问题Q&A

以下针对客户朋友们实际应用中的反馈,整理了HTTP应用中的常见问题:

01. HTTP支持多连接吗?

目前HTTP仅支持单连接,不支持多连接。

02. HTTPS如何使用?

本文主要描述了基本流程和异常处理,对于HTTPS使用方法没有做过多描述。这一部分,请自行参考 AT指令手册HTTP章节下《使用方法举例》 中的"带SSL证书验证功能的HTTPS流程"使用方法;支持的SSL参数,请自行参考AT+SSLCFG命令说明。如果SSL的参数配置不变,则每次开机运行过程中,仅设置一次即可。

03. 重试多次PDP,HTTP应用一直连接失败?

如果重试多次PDP激活,PDP一直激活失败,或者HTTP一直请求应答失败,请尝试使用如下手段恢复:

  • 使用RESET引脚复位模块;
  • 极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机。

04. HTTP下载的大文件,如何可靠的发送给MCU(AT流控)?

需要在断点续传流程指令里开头加入AT+IFC的配置指令:

AT+HTTPREAD

+HTTPREAD: 3072

...... //此处输出3072字节数据

OK

此处的3072字节数据,是模块通过UART AT口发送给MCU。在实际传输过程中,由于串口芯片驱动、MCU端的处理能力、波特率的选择都存在不确定性,可能会导致MCU端接收到的数据,实际上没有3072字节,这就要求UART AT口打开流控功能。

模块支持硬件流控和软件流控两种:

硬件流控,参考如下步骤操作:

  • 模块和MCU的UART口,CTS、RTS要交叉相连
  • MCU端固件要支持并且打开硬流控功能
  • MCU端要发送AT+IFC=2,2命令到模块端,打开模块端的硬流控功能

软件流控,参考如下步骤操作:

  • MCU端固件要支持并且打开软流控功能
  • MCU端要发送AT+IFC=1,1命令到模块端,打开模块端的软流控功能

05. 为什么我只发了10字节消息,100次却消耗了很多流量?

因为还有HTTP自带的请求头。

06. 为什么频繁请求会失败?

HTTP连接总数数量有限,且不支持HTTP2多路复用连接,因此建议等一个HTTP连接返回请求结果之后,再去请求下一个连接;不要使用循环定时器方式不断的发起新的HTTP请求。

07. 如何POST文件?

主要是使用AT+HTTPDATA命令录入文件数据后,发送AT+HTTPACTION=1利用POST上传。

08. 数据发送接收缓存问题如何解决?

AT版本有缓存机制,内存中有一个的缓冲区(Air780EP模块AT固件HTTP缓存为4KB),发送和接受使用的是同一块缓冲区。

发送和收到数据后,插入此缓冲区,然后通过AT口输出URC,提示收到的数据长度;缓冲区满之后,再收到新数据,会丢弃新收到的数据,并通过AT口输出URC提示出错;需要读取数据时,发送AT+HTTPREAD命令读取,可分段读取,也可全部读取。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5054

    文章

    18917

    浏览量

    300986
  • HTTP
    +关注

    关注

    0

    文章

    497

    浏览量

    30898
  • 模组
    +关注

    关注

    6

    文章

    1400

    浏览量

    30178
收藏 人收藏

    评论

    相关推荐

    MQTT应用看这篇!合宙Air780EP_LuatOS_MQTT应用指南

    Air780EP 是合宙的低功耗4G模组之一,支持LuatOS的脚本二次开发,即使是不太懂技术的老板,也能轻松使用
    的头像 发表于 08-08 17:13 1476次阅读
    MQTT应用看这篇!合宙<b class='flag-5'>Air780EP</b>_LuatOS_MQTT应用指南

    AT指令速通FTP:合宙Air780EP模块超详细教程

    合宙Air780EP低功耗4G模组AT开发接入FTP超详细示例!
    的头像 发表于 08-20 17:40 2061次阅读
    AT指令速通FTP:合宙<b class='flag-5'>Air780EP</b>模块超详细教程

    合宙低功耗4G模组Air780EP——硬件设计01

    Air780EP是一款合宙低功耗LTECat1无线通信模组。 支持FDD-LTE/TDD-LTE的4G远距离无线 传输技术。 另外,模组提供
    的头像 发表于 09-02 16:47 1423次阅读
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780EP</b>——硬件设计01

    FTP应用看这篇!合宙Air780EP低功耗4G模组AT开发示例

    Air780EP是合宙的[低功耗4G模组]之一,支持全系列的AT指令以及LuatOS脚本二次开发。 本文应各位大佬邀请,详细讲解了
    的头像 发表于 09-29 09:36 1663次阅读
    FTP应用看这篇!合宙<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>示例

    超实用!阿里云应用——Air780EP低功耗4G模组AT开发示例

    Air780EP是合宙推出的一款[低功耗4G全网通模组],兼容模组行业1618经典封装,支持OpenCPU
    的头像 发表于 10-08 09:55 1159次阅读
    超实用!阿里云应用——<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>示例

    Air780EP低功耗4G模组AT开发示例:阿里云应用篇

    Air780EP是合宙推出的一款[低功耗4G全网通模组],兼容模组行业1618经典封装,支持OpenCPU
    的头像 发表于 10-14 14:22 614次阅读
    <b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>示例:阿里云应用篇

    Air780EP模块AT开发-HTTP应用指南

    Air780EP模块AT开发-HTTP应用指南
    的头像 发表于 07-22 14:38 478次阅读
    <b class='flag-5'>Air780EP</b>模块AT<b class='flag-5'>开发</b>-<b class='flag-5'>HTTP</b>应用指南

    合宙低功耗4G模组Air780EP——产品规格书

    合宙低功耗4G模组Air780EP——产品规格信息介绍
    的头像 发表于 08-30 18:07 1209次阅读
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780EP</b>——产品规格书

    合宙低功耗4G模组Air780EP——硬件设计02

    合宙低功耗4G模组Air780EP——硬件设计
    的头像 发表于 09-03 15:07 435次阅读
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780EP</b>——硬件设计02

    基站定位与Wi-Fi定位看这篇!合宙Air780EP低功耗4G模组AT开发示例

    Air780EP是合宙的[低功耗4G模组]之一,支持全系列的AT指令以及LuatOS脚本二次开发。 本文应各位大佬邀请,特别讲解
    的头像 发表于 09-25 07:26 322次阅读
    基站定位与Wi-Fi定位看这篇!合宙<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>示例

    RNDIS网卡应用看这篇!合宙Air780EP低功耗4G模组AT开发示例

    Air780EP是合宙的低功耗4G模组之一,支持全系列的AT指令以及LuatOS脚本二次开发。 本文应各位大佬邀请,特别讲解
    的头像 发表于 09-30 06:59 322次阅读
    RNDIS网卡应用看这篇!合宙<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>示例

    Air780EP低功耗4G模组—AT开发FOTA远程升级

    Air780EP是合宙推出的一款 低功耗4G全网通模组 ,兼容模组行业1618经典封装,支持OpenCPU
    的头像 发表于 10-07 20:36 195次阅读
    <b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>—AT<b class='flag-5'>开发</b>FOTA远程升级

    MQTT应用:Air780EP低功耗4G模组AT开发

    本文应各位大佬邀请,详细讲解Air780EP模组MQTT应用的多个AT命令。
    的头像 发表于 10-25 17:27 92次阅读
    MQTT应用:<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>

    Air780EP低功耗4G模组AT开发:阿里云应用

    Air780EP是合宙推出的一款低功耗4G全网通模组,兼容模组行业1618经典封装,支持OpenCPU
    的头像 发表于 10-25 17:28 109次阅读
    <b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>AT<b class='flag-5'>开发</b>:阿里云应用

    AT开发FOTA远程升级:Air780EP低功耗4G模组

    ​针对客户朋友的应用反馈,特编辑本篇文章:基于Air780EP模组AT开发的FOTA远程升级指南。
    的头像 发表于 10-25 17:31 152次阅读
    AT<b class='flag-5'>开发</b>FOTA远程升级:<b class='flag-5'>Air780EP</b><b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>