如果你没有了解过,确实需要花店时间去了解,这里推荐一篇文章:
对于我们应用而言,有几个地方我们是一定要了解的,第一个 HTTP 协议格式,比如 HTTP 的协议格式(图片引用至上面推荐文章):
HTTP 请求格式:
HTTP 响应格式:
HTTP 协议格式:
GET 方法用来获取服务器上面的数据,对于我们的项目,我们其实只需要用到 HTTP 的 POST 方法,POST请求需要传递的数据一般通过 body 传递。
比如一个给服务器输入用户名密码的 POST 请求例子(图片引用至上面推荐文章):
对于我们使用 CAT1 模块来说,我们最终要做的就是在程序中组一个类似上面内容的数据包,发送出去就行了。
当然实际上一般在物联网场合,传感器上报数据需要组的包比上面会简单得多。
二、开始使用
基础知识了解过后,接下来就是开始测试使用了。
2.1 硬件设计部分
硬件部分基本上照着 官方文档来就行了,没有一点难度,真的没什么好说的,省略,详细请参考 《Quectel_EC800M-CN_硬件设计手册_V1.1.pdf》(不同型号的芯片有不同的对应手册,根据手册来就行了)。
象征性的上一张原理图:
2.2 模块上电流程
虽然模块的官方会提供文档说明 HTTP 命令的使用流程,如下图:
但是我们一般不会一上电就直接这么使用,简单来说就是首先你得确保模块通讯正常并且正常附着网络,那么我们正常的使用中都会有一个 模块初始化流程(虽然模块一切正常的情况下,会自动联网)。
我们需要经过一些上电后的 AT 指令交互,确保模块联网正常,然后才能开始按照上面手册的流程走下去。
步骤 | 指令 | 说明 |
---|---|---|
1 | AT | 串口通讯基本测试 |
OK | 返回“OK”表示与模块通讯正常 | |
2 | AT+CPIN? | 检查 SIM 卡是否插入 |
+CPIN: READY OK | 返回“READY”表明读卡成功 | |
3 | AT+CSQ | 查询信号质量 |
+CSQ: 23,99 OK | 参数1:信号质量(0~ 31),一般打鱼8 小于31就行 参数2:忽略 | |
4 | AT+CEREG? | 查询网络注册状态 |
+CEREG: 0,1 OK | 参数2:1表示注册成功 | |
5 | AT+CGATT? | 查询网络附着状态 |
+CGATT: 1 OK | 1表示成功,0表示失败 |
上面的这些可作为模块上电的检查手段,完成上面的步骤,才可以开始进行后面的操作。 在程序中,我们可以把这些操作当做 模块的初始化。
上面的指令结尾都需要回车换行,在程序中定义字符串的时候末尾记得要加上
测试代码如下:
void ec800\_init()
{
u16 cat1_timeout = 0;
while(Iot\_SendCmd(AT,"OK", 200)){
HAL\_Delay(1);
cat1_timeout ++;
if(cat1_timeout >= 2000){
printf(" uart false\r\n");
return;
}
}
cat1_timeout = 0;
printf("uart ok\r\n");
while(Iot\_SendCmd(CPIN,"READY", 200)){
HAL\_Delay(1);
cat1_timeout ++;
if(cat1_timeou