根据合宙的AT研发推荐, AT指令基本上也简单看完了,这里开始转到AT的开发了。
AT 命令采用标准串口进行数据收发,将以前复杂的设备通讯方式转换成简单的串口编程, 大大简化了产品的硬件设计和软件开发成本,这使得几乎所有的网络模组如 GPRS、3G/4G 、 NB-IoT、蓝牙、WiFi 、GPS 等模组都采用 AT 命令。 随着物联网时代的发展,AT 命令被广泛的用于单片机(MCU)+ 网络模块这样的物联网开发模式。但这种开发模式单片机是必不可少的部分,因而会使产品的成本相应的高些。 AT 固件是标准固件,所以能支持的驱动也比较少,只有模块状态灯、摄像头扫码、SD 卡等外设驱动功能。要想要支持更多的外设建议用 LuatOS 二次开发固件进行二次开发。
根据介绍AT指令需要MCU+GPRS的配合,我们这里也考虑到是否使用到stm32了。根据我们这里使用的GPRS模块本身具备的功能,具备了我们需要的功能了,所以我们这里考虑直接使用AT指令了。
AT 命令语法介绍:
本手册中所有命令行必须以"AT"或"at"作为开头,以回车(<CR>)作为结尾。响应通常紧随命令之后,它的样式是“<回车><新行><响应内容><回车><新行>”(<CR><LF><响应内 容><CR><LF>) 。整本手册里,只有<响应内容>被自始至终介绍,而<回车><新行>被有意省略了。合宙无线模块提供的 AT 命令包含符合 GSM07.05、GSM07.07 和 ITU-T Recommendation V.25ter 的命令。
之前也在AT指令学习中提到过下面这些:所有 AT 命令从语法上可以分为三类:“基础类”,“S 参数类”以及“扩展类”,分别介绍如下:
基础类 AT 命令 :这类 AT 命令具有“AT<x><n>”或者“AT&<x><n>”格式,其中“<x>”是命令;“<n>” 可以是一个或者多个参数。例如:“ATE<n>”,该命令用于为 DCE 开关回显功能,即 DCE 会依据“<n>”值决定是否把接收的字符回显给 DTE。“<n>”是选配参数,若没有 赋值,模块将使用默认值。
参数类 AT 命令:这类 AT 命令格式为“ATS<n>=<m>”,其中“<n>”是 S 寄存器的索引;“<m>”是赋予 的值。“<m>” 是选配参数,若没有赋值,模块将使用默认值。
扩展类 AT
命令 :
一般来讲,扩展类命令依据功能可以分为以下几种类型:
AT
开发优缺点
AT
开发的优势
:
AT
指令作为单片机和通信模块的桥梁,很好的兼顾了单片机开发的特点,
又满足了产品联网的需求。
AT
指令是一种通用的使用方式,在无线模块领域也流行了
20
多
年。
AT 开发的缺点
:成本相应的高些,能支持的驱动也比较少。
确实这个,感觉上选用AT指令的会少一些,不过以前到是用过AT指令来着,不过是构建在stm32的基础之上的。我们这里因为用到了GPRS,所以只能是通过STM32控制GPRS或者直接写到GPRS里面,这个因为GPRS的功能可能够了吧。
9.2 AT
固件
这个需要购买GPRS器件,应该附带了固件库吧。
9.3 AT
命令手册
之前研究的就是这个手册,之后使用会用到之前研究的,或许需要调整更改吧。
9.4 AT
开发环境搭建
这个暂时我们没有Air780EP
开发板,所以先学习一下使用,不做测试了。好像虚拟串口,所以我们研究一下虚拟串口:
下面是我在网上找的一个虚拟串口工具,我试了试,没有深入研究,不过可以虚拟出来串口,放在了百度网盘的分享里面,不大也就5M左右,供大家研究。
通过网盘分享的文件:VSPD6.9虚拟串口破解汉化版.zip
链接: https://pan.baidu.com/s/1E-bh5_l38KReuUdLlvNR1g?pwd=4iqg 提取码: 4iqg
9.5 AT 开发应用指南
9.5.1 TCP(SSL)
应用指南
TCP
示例
开机:这个之前也讲过怎么开机,这里再列出来:
通过拉低
powerkey2
秒进行开机,开机以后通过串口循环发送
AT
直到收到
OK
,如果
90
秒
没有收到
OK
请拉低
RESET_IN_N
引脚
150ms 以上。这个也就是模块的开机了,我当时设计时候没有接触RESET_IN_N 引脚,所以这里就断电试试吧,如果不行我再飞线拉低RESET_IN_N
引脚好了。
查询
SIM 卡状态:
发送
AT+CPIN?
查询
SIM 卡状态【看起来是已多次发送AT+CPIN?】,直到收到+CPIN: READY
,模块主动上报
SIM REMOVED
和查询返回
+CME ERROR: 10
是模块没有检测到
SIM
卡,如果
10s 内没有收到建议重启模块,如果重启问题依旧需要检查卡是否有插好,或者排查板子的硬件连接。
查询模块信号强度:
一般信号强度
18
以上才能稳定通讯;
11-17
能连接,会有断网的可能,
10
以下基本连接不
上,在不能联网的情况下,可以先参考一下信号强度如何。
5.1
查询信号质量:
AT+CSQ
使用这个指令查询一下是否满足通腾讯条件。
查询网络注册情况:
AT+CGATT?
查询是否注册网络收到
+CGATT: 1
值是
1
即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以
进入飞行模式五秒后退出再查询,或者直接重启模块。
值是
0 则没有注册成功。
8.2
GPRS
附着分离:
AT+CGATT
设置命令用于将 MT 附着 GPRS 业务,或将 MT 从 GPRS 业务分离。查询命令返回当前的 GPRS 附着状态。
这个
GPRS
附着分离,之前觉得没所谓了,所以并没深入关注,只是点到了,折现查询就不太清楚了。
激活网络:
AT+CSTT
配置网络,非私有
APN
以外
Cat1
的固件支持根据卡自动配置
APN
,直接输入
AT+CSTT
即可,模块会按照自动获取的
APN
设置
CSTT
的
APN
。
AT+CIICR
激活网络,在
IP START
的状态使用
AT+CIICR
激活网络
AT+CIFSR
查询是否获取
IP
,如果成功就可以开始配置
TCP
连接了,如果不成功使用 AT+CIPSHUT 关闭移动网络,从
AT+CSTT
重新进行。一定要查询一次再进行服务器连接。
12.2
启动任务并设置接入点
APN
、用户名、密码:
AT+CSTT
12.4
激活移动场景
(
或发起
GPRS
或
CSD
无线连接
)
:
AT+CIICR
12.5
查询本地
IP
地址:
AT+CIFSR
这个几个AT指令不知道是否使用过,之前举例,不过没记在心里呢。
连接 TCP:
此处使用的是非
SSL
连接,
TCP/UDP
测试网页
TCP/UDP 测试网页
,
使用
AT+CIPSTART
来建立连接。
12.9
建立
TCP
连接或注册
UDP
端口号:
AT+CIPSTART
根据
AT+CIPSTART 建立了连接。
发送数据:
AT+CIPSEND
可以发送定长或不定长数据,收到
>
以后就可以发送数据(最大
1460
字节)。
如果是定长数据,输入数据达到长度会向服务器自动发送数据。
如果是不定长数据,输入数据后发送十六进制
1A
结束发送,发送完
1A
以后设备会向服务器
发送
1A
之前的所有数据。
定长数据,假设这里发送
10 个字节数据AT+CIPSEND=10
12.14
发送数据:
AT+CIPSEND
这里是发送数据的了。
不定长数据
直接发送
AT+CIPSEND
,会返回一个
>
符号,之后可以输入数据,数据输入完毕后,发送十
六进制的
1A
,结束发送,模块会将输入的数据发送到服务器
发送
AT+CIPSEND
后,可以看到返回了一个
>,后续输入的内容没有返回值,此时再发送十六进制的
1A 来结束发送,才会收到返的
SEND OK
其他说明:
最新的
AT
固件支持开机直接发送
AT+CIPSTART
联网,不过不推荐使用,推荐根据状态机一
步一步实现。
这个可以考虑使用,毕竟我们打算不采用MCU单片机来控制呢。
补:今天先这样,之后再把
TCP
使用
SSL
示例贴出来。