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

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

一、相关准备工作 

1.1 硬件准备

  • 合宙EVB_Air780EP开发板一套,包括天线、SIM卡;

  • USB线

  • PC电脑

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命令读取,可分段读取,也可全部读取。

AT开发HTTP应用:Air780EP低功耗4G模组的更多相关文章

  1. iTOP-4412开发板全新升级支持4G全网通模块

    开发板支持4G,GPS,CAN,485,WIFI蓝牙,重力加速度计,陀螺仪等模块. 核心板参数 尺寸:6cm*7cm 高度:连同连接器在内0.26cm CPU:Exynos4412,四核Cortex- ...

  2. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  3. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  4. NFC模组,开发NFC功能 仅仅要几条指令的事情

    特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...

  5. 迅为4412嵌入式安卓开发板兼容3G网络|4G网络

    iTOP-Exynos4412开发板内置有无线 WIFI 模块.Bluetooth.GPS.Camera.3G等模组,陀螺仪等,支持 HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台 ...

  6. 泰拉瑞亚EasyBuildMod便捷建造模组开发详细过程

    pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } github地址: ht ...

  7. 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  8. iPhone X 的原深感模组

    物理与数字世界正走向融合,我们每天醒来的时间.睡眠时长.心率和步数等数据都会被分享.上传并转化为分析数据.无处不自的 AI.互联互通和软件平台将改变用户对现实的感知. 2018 年的 CES 展(国际 ...

  9. 最全的NB-IoT芯片厂商、模组厂商信息

    NB-IoT作为LPWAN(低功耗广域网)的新兴技术,因为具有低功耗.低成本.广覆盖.海量节点等优势,并且在授权频段可以与2G.3G无缝连接而被运营商所青睐且接受.特别是到了2017年,据统计全球有5 ...

  10. 中国移动推出NB-IoT/eMTC/GSM多模通信模组Qualcomm调制解调器支持

    亚洲电子消费展(CES Asia)在上海举行.期间,中国移动正式推出NB-IoT/eMTC/GSM三模通信模组A9500.该通信模组采用Qualcomm MDM9206 LTE IoT调制解调器,具有 ...

随机推荐

  1. LaTeX 交叉引用的四次编译

    编译包含交叉引用的 LaTeX 文件需要编译四次(pdflatex + bibtex + pdflatex * 2),一直对这四次编译都干了什么事很好奇.这次就来看一下每一步具体都干了些什么. 源文件 ...

  2. 工程化Vue使用

    目录 环境准备 Vue项目-创建 Vue项目开发流程 API风格 案例 推荐阅读: VUE-局部使用 环境准备 介绍:create-vue是Vue官方提供的最新的脚手架工具,用于快速生成一个工程化的V ...

  3. 傅里叶级数 傅里叶变换 FFT 时域 频域 功率谱 能量谱 功率谱密度PSD

    傅立叶级数是基于周期函数的,如果我们把周期推广到

  4. 使用 nuxi info 查看 Nuxt 项目详细信息

    title: 使用 nuxi info 查看 Nuxt 项目详细信息 date: 2024/9/5 updated: 2024/9/5 author: cmdragon excerpt: 摘要:文章介 ...

  5. JS处理html的编码(encode)与解码(decode)

    一.用浏览器内部转换器实现转换 代码: var HtmlUtil = { // 1.用浏览器内部转换器实现html编码 htmlEncode: function(html) { // 创建一个元素容器 ...

  6. String 的 intern() 方法

    问题: String s1 = "a" + "b"; //创建了几个对象? String s2 = new String("ab"); // ...

  7. 线段树can you answer these queries-------hdu4027

    问题描述: 给定一个数列,要求对指定区间内所有数开方,输出查询区间和 输入: 有很多个测试用例,每个用例第一行输出一个整数N,表示数列有N个数,1<=N<=100000;第二行输入N个整数 ...

  8. idea运行java项目main方法报build failure错误的解决方法

    当在使用 IntelliJ IDEA 运行 Java 项目的 main 方法时遇到 "Build Failure" 错误,这通常意味着在项目的构建过程中遇到了问题.解决这类问题通常 ...

  9. 智慧高校IT智能运维方案

    当前高校网络已成为每个学校必备的信息基础设施,也成了学校提高教学.科研及管理水平的重要途径和手段.随着信息化发展,高校网络建设逐步走向数字化.智慧化,传统的人力巡检.运维逐渐难以支撑高校校园稳定运行. ...

  10. Flutter将视频或图文分享到抖音

    如何在 Flutter 中分享视频到抖音 话不多说,先上效果: 原理 发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com) 本教程没有接入抖音原生 SDK 以及 ...