GSM/GPRS操作示例

说明:本页面操作示例使用串口助手进行开发演示。

请先仔细看右边的目录,按模块,寻找自己需要的功能

更新历史

更新说明:

  2017年10月14日:
  固件版本:A9/A9_gv01.05.20171014
      1.A9/A9G增加基站定位简化本指令AT+LOCATION=X。基站定位直接输出当前位置的经纬度,解决了站定位需要第三方插件转换太复杂的问题。
      2.A9/A9G优化AT+CCLK?指令,直接获取当前时间,不需要手动设置(联通卡时间会出错,建议使用移动卡)。
      
  2017年11月27日:
  固件版本:A6_V03.06.20171127RC
      1.A6优化AT+CCLK?指令,直接获取当前时间,不需要手动设置(联通卡时间会出错,建议使用移动卡)。
      
      

A6(GPRS)

电话接收

相关指令

ATDxxxxx;//xxx为电话号码

示例

打电话

ATDxxxxxxxxxxx
OK
+CIEV: "CALL",1
+CIEV: "SOUNDER",1	//响铃
+CIEV: "SOUNDER",0	//挂断
+CIEV: "CALL",0
BUSY	//显示BUSY

接到短话

(若想使用来电提醒功能,请使用at+clip=1;注意,该功能必须需要你的SIM卡自带来电提醒功能)
RING
RING

短信设置

相关指令

AT+CPMS="SM","SM","SM"  //设置短信存储单元
AT+CMGF=0/1		//设置短信格式,1为text格式读取,0为pud格式读取
AT+CMGR=x		//读取短信内容,x为第几条短信
AT+CMGL=4/ALL		//查看短信列表 PUD格式下读取参数为4, txt格式要发AT+CMGL=ALL
AT+CMGD=1		//删除短信。 若果使用AT+CMGD=1,4  则为删除所有短信

示例

AT+CPMS="SM","SM","SM"	//设置短信存储单元,同时也可以查看短信容量
+CPMS: 0,50,0,50,0,50
OK

AT+CMGF=1		//设置为TXT格式读取
OK
+CIEV: "MESSAGE",1	//接收到短信,内容包括电话号码和时间以及内容
+CMT: "+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
+CIEV: "MESSAGE",1
+CMT: "+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
AT+CMGF=0		//设置为PUD格式接受
OK

+CIEV: "MESSAGE",1	//以PUD接收到短信,内容包括电话号码和时间以及内容
+CMT: ,23
0891683110602305F0240D91687186935218F500007101909061452303B3D90C

+CIEV: "MESSAGE",1
+CMT: ,23
0891683110602305F0240D91687186935218F500007101909071202303341A0D
AT+CMGL=4		//列出所有短信->  pud格式,使用这条命令参数为4
+CMGL: 1,1,,23
0891683110602305F0240D91687186935218F500007101909041252303B1580C
+CMGL: 2,1,,23
0891683110602305F0240D91687186935218F50000710190906152230332990C
+CMGL: 3,1,,23
0891683110602305F0240D91687186935218F500007101909061452303B3D90C
+CMGL: 4,1,,23
0891683110602305F0240D91687186935218F500007101909071202303341A0D
OK
AT+CMGF=1		//设置为TXT格式读取
OK
AT+CMGL=ALL		//列出所有短信->  pud格式,使用这条命令参数为ALL
+CMGL: 1,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
+CMGL: 2,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
+CMGL: 3,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:54+08"
333
+CMGL: 4,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:17:02+08"
444
OK
AT+CMGR=1		//读取第一条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
OK
AT+CMGR=2		//读取第二条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
OK
AT+CMGR=3		//读取第三条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:54+08"
333
AT+CMGD=1		//删除第一条短信
OK
AT+CMGD=2		//删除第二条短信   谨记  删除第一条后,第二条内容不会自动跑到第一条,而是依然占据第二条短信,但是当所有短信都删除后,再接收到短信后,会自动排列到第一条信息的位置
OK
AT+CMGD=3		//删除第三条短信
OK
AT+CPMS="SM","SM","SM"	//查看一下短信容量
+CPMS: 1,50,1,50,1,50
OK
AT+CMGL=ALL		//删除了3条之后,查看短信列表,只剩1条
+CMGL: 4,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:17:02+08"
444
OK
AT+CMGD=1,4		//删除所有短信
OK

发送短信

AT+CMGF=1    //文本方式发送  
AT+CMGS="xxxxxxxxxxx(电话号码)"   //返回>,然后输入要发送的txt内容并且以CTRL-Z(16进制为1a)结束即可 

中文发送短信

另外可以使用PUD的编码方式发送信息: 
AT+CMGS=XX; //要发送的字节数
>xxxxxxxxxxxxxxxxxxxxx  //PUD码(最后以CTRL-Z(16进制为1a)结尾) 
+CMGS: 0
OK
      

获取基站下发时间

相关指令 AT+CCLK?

指令解读 该指令在内部进行处理,在模块初始化时,模块获取了基站下发的时间后,将该时间存储在芯片的RTC寄存器中,使用AT+CCLK?即可读取出时间。

注意使用联通卡获取的时间是有问题的。

示例

AT+CCLK ?
+CCLK: "17/11/27,02:49:47+08"
//该时间为零时区时间,17年11月27日2点49分47秒。+08为时区,我们这里是东八区,所以本地时间是10点49分47秒
OK

基站定位

相关指令 AT+CREG?

示例

AT+CREG=1   //=1的时候是查询网络状态,模组上电默认为1
OK
AT+CREG?
+CREG: 1,1     
AT+CREG=2   //=2的时候是基站定位
OK
AT+CREG?	
+CREG: 2,1,"xxxx","xxxx",2  // 中间参数为16进制
在相关网站查询:http://www.gpsspg.com/bs.htm

HTTP

以百度为例(前面的步骤要按流程配置,一定不能忘记)(HTTPGET不可用,会在下一版本进行更新) 示例

AT+CCID
AT+CREG?
AT+CGATT=1
AT+CGDCONT=1,"IP","CMNET" 
AT+CGACT=1,1 
创建连接 
at+cipstart="TCP","www.baidu.com",80
两种发送请求方式:
1.透传发送
AT+CIPTMODE=1 //进入透传
OK
GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n	//发送GET请求信息
2.非透传模式
AT+CIPSEND=45//发送的字节长度
>
GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n   //出现上述箭头后,发送GET请求信息

多链接

示例

at+ccid   //查询ccid,确定是否有sim卡
+SCID: SIM Card ID: 898602#4221620070426
OK
at+creg?  //查询是否注册上网络
+CREG: 1,5 //第一个参数1表示允许注册入网;第二个参数5表示已注册,处于漫游状态,如果是1的话,表示已注册本地网络,出现其他参数表示不正常
OK
at+csq    //查询信号
+CSQ: 31,99
OK
at+cgatt=1          //附着网络
+CTZV:16/07/06,11:34:17,+08
OK
at+cgdcont=1,"IP","cmnet"   //设置pdp参数
OK
at+cgact=1,1                 //激活该pdp
OK
at+cipstatus?               //查询ip连接情况,共有8路,实际最多支持同时开4路tcpip连接
+CIPSTATUS:0,IP GPRSACT  
1,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
at+cipstart="TCP","101.37.36.158",60000   //连接TCP服务器,用户请修改自己的服务器
CONNECT OK
OK
at+cipsend=5,qwert    //发送5个字节的字符,注意此种方式只支持可见字符
OK
at+cipsend=5          //发送6个字节的数据,此种方式可以发送任意二进制数据
> 
OK
at+cipsend           //发送字符,以CTRL+Z(16进制的0x1a)结尾
> qwert

OK
+CIPRCV:4,test      //收到服务器发送过来的4个字节,内容是"test",注意也可能是二进制的任意数据
at+cipstatus?       //插叙ip链路状态
+CIPSTATUS:0,CONNECT OK  
1,IP INITIAL  
2,IP INITIAL  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
at+cipclose   //关闭该链路
OK
at+cipmux?    //查询是否开启多连接
+CIPMUX:0   
OK
at+cipmux=1   //开启多链接
OK
at+cipstart="TCP","121.41.97.28",60000  //发起第一个TCP连接
+CIPNUM:0                              //只有点开启多链接的时候才会有,0为返回的链路号
CONNECT OK
OK
at+cipstart="TCP","121.41.97.28",60001  //发起第二路连接 
+CIPNUM:1                              //只有点开启多链接的时候才会有,1为返回的链路号
CONNECT OK
OK
at+cipstart="TCP","121.41.97.28",60003 //发起第三路连接
COMMAND NO RESPONSE!                  //指令超时,由于服务器没有开启这个端口

at+cipstatus?                  
+CIPSTATUS:0,CONNECT OK  
1,CONNECT OK  
2,TCP/UDP CONNECTING  
3,IP INITIAL  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
at+cipclose=3                    //关闭链路号为3的连接
+CME ERROR:50                    //第三路连接没有建立所以返回错误

at+cipclose=2                    //关闭链路号为2的连接
OK
at+cipstart="TCP","121.41.97.28",60002  //发起新的连接
+CIPNUM:2
CONNECT OK
OK
at+cipstart="UDP","121.41.97.28",60006  //发起新的UDP连接
+CIPNUM:3
UDP BIND OK
OK
at+cipstatus?
+CIPSTATUS:0,CONNECT OK            //可以看到0-3链路号都被占用,建立了4路IP连接
1,CONNECT OK  
2,CONNECT OK  
3,BIND OK  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
at+cipsend=0,5,qwert       //链路0发送5个字节的字符,“qwert”,本指令只支持可见字符
OK
+CIPRCV:0,4,test           //链路0,收到服务器发送过来的4个字节,“test”,本指令支持接受任意数据

at+cipclose=2 关闭链路2 OK at+cipstatus? 查询链路信息

+CIPSTATUS:0,CONNECT OK  
1,CONNECT OK  
2,IP CLOSE  
3,BIND OK  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
at+ciphcfg?              //查询心跳包配置
+CIPHCFG:0,10,00,00
1,10,00,00
2,10,00,00
3,10,00,00
4,10,00,00
5,10,00,00
6,10,00,00
7,10,00,00
OK
at+ciphcfg=0,1,112233         //设置链路0的心跳发送包为16进制的0x11,0x22,0x33
OK
at+ciphcfg?                
+CIPHCFG:0,10,112233,00
1,10,00,00
2,10,00,00
3,10,00,00
4,10,00,00
5,10,00,00
6,10,00,00
7,10,00,00
OK
at+ciphmode=0,1     //启动链路0的心跳包
OK
at+cipsend=3,5,qwert    //链路3发送5个字节的字符,“qwert”
OK
at+cipclose=3     //关闭链路3
OK
+TCPCLOSED:1    //服务器关闭链路1
OK
at+cipstatus?
+CIPSTATUS:0,CONNECT OK  
1,IP CLOSE  
2,IP CLOSE  
3,IP CLOSE  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK
+TCPCLOSED:0    //服务器关闭链路0
OK
at+cipstatus?
+CIPSTATUS:0,IP CLOSE  
1,IP CLOSE  
2,IP CLOSE  
3,IP CLOSE  
4,IP INITIAL  
5,IP INITIAL  
6,IP INITIAL  
7,IP INITIAL  
OK

透传模式+心跳设置(单链接)

示例

AT+CCID     //查询SIM ,CCID用于判断是否插卡
+SCID: SIM Card ID: 898602#4221620070426
OK
AT+CREG?  //查询网络注册情况
+CREG: 1,5  //第一个参数1表示允许注册入网;第二个参数5表示已注册,处于漫游状态,如果是1的话,表示已注册本地网络,出现其他参数表示不正常
OK
AT+CGATT=1    //附着网络,如果需要上网,这条指令是必选的
+CTZV:16/05/27,06:33:39,+08  //基站下发的时间信息GMT时间和时区
OK
AT+CGDCONT=1,"IP","CMNET"   //设置PDP参数
OK
AT+CGACT=1,1                //激活PDP,正确激活以后就可以上网了
OK
at+cipstart="TCP","120.76.213.49",60000 //连接TCP服务器,用户请修改成自己的服务器
CONNECT OK
OK
AT+CIPHCFG?     //查询心跳包的设置
+CIPHCFG:10,00,00 //心跳包的默认设置10,表示10秒发送一次心跳包,00表示发送的包内容,默认是空的,第二个00表示接受的回应包内容,默认也是空的,这2个包必须设置,否则启动不了心跳包
OK
AT+CIPHCFG=1,55FAFBEE  //设置发送心跳包内容,长度不能低于3个字节,16进制格式
OK
AT+CIPHCFG=2,55AFBFEE  //设置接受回应包内容,长度不能低于3个字节,16进制格式
OK

AT+CIPHCFG=0,15     //设置发送心跳包的时间15秒钟
OK
AT+CIPHMODE=1     //启动心跳包,该命令只能在连接服务器成功以后用
OK
AT+CIPTCFG?       //查询透传默认参数
+CIPTCFG:3,200,50,2000  //3表示最大尝试发送失败次数,200是重发延时,单位毫秒,50是触发发送的包长度,2000是触发发送时间,单位毫秒,从输入最后一个字符算起,延至超过2000毫秒,系统也会自动发送数据
OK
AT+CIPTMODE=1  //启动透传模式,该指令也是只能在连接服务器成功以后使用
OK

SEND DATA TO SERVER  //发送到服务器的数据
SEND DATA TO  A6      //收到的服务器的数据
+++                   //退出透传模式,和前一次发送时间超过2秒,输入+++,就可以退出透传模式注意,如果是单片机发送,不要添加换行符,如果是安信可串口调试助手发送,取消掉发送新行的选项,总之不要有换行符
OK
AT+CIPHMODE=0        //退出心跳包模式
OK

A9/A9G(gprs)

电话接收

相关指令

ATDxxxxx;//xxx为电话号码

示例 打电话

ATDxxxxxxxxxxx
OK
+CIEV: "CALL",1
+CIEV: "SOUNDER",1	//响铃
+CIEV: "SOUNDER",0	//挂断
+CIEV: "CALL",0
BUSY	//显示BUSY

接到短话

(若想使用来电提醒功能,请使用AT+CLIP=1;注意,该功能必须需要你的SIM卡自带来电提醒功能)
RING
RING

短信设置

相关指令

AT+CPMS="SM","SM","SM"  //设置短信存储单元
AT+CMGF=0/1		//设置短信格式,1为text格式读取,0为pud格式读取
AT+CMGR=x		//读取短信内容,x为第几条短信
AT+CMGL=4/ALL		//查看短信列表 PUD格式下读取参数为4, txt格式要发送AT+CMGL=ALL
AT+CMGD=1		//删除短信。 若果使用AT+CMGD=1,4  则为删除所有短信

示例

AT+CPMS="SM","SM","SM"	//设置短信存储单元,同时也可以查看短信容量
+CPMS: 0,50,0,50,0,50
OK

AT+CMGF=1		//设置为TXT格式读取
OK
+CIEV: "MESSAGE",1	//接收到短信,内容包括电话号码和时间以及内容
+CMT: "+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
+CIEV: "MESSAGE",1
+CMT: "+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
AT+CMGF=0		//设置为PUD格式接受
OK

+CIEV: "MESSAGE",1	//以PUD接收到短信,内容包括电话号码和时间以及内容
+CMT: ,23
0891683110602305F0240D91687186935218F500007101909061452303B3D90C

+CIEV: "MESSAGE",1
+CMT: ,23
0891683110602305F0240D91687186935218F500007101909071202303341A0D
AT+CMGL=4		//列出所有短信->  pud格式,使用这条命令参数为4
+CMGL: 1,1,,23
0891683110602305F0240D91687186935218F500007101909041252303B1580C
+CMGL: 2,1,,23
0891683110602305F0240D91687186935218F50000710190906152230332990C
+CMGL: 3,1,,23
0891683110602305F0240D91687186935218F500007101909061452303B3D90C
+CMGL: 4,1,,23
0891683110602305F0240D91687186935218F500007101909071202303341A0D
OK
AT+CMGF=1		//设置为TXT格式读取
OK
AT+CMGL=ALL		//列出所有短信->  pud格式,使用这条命令参数为ALL
+CMGL: 1,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
+CMGL: 2,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
+CMGL: 3,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:54+08"
333
+CMGL: 4,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:17:02+08"
444
OK
AT+CMGR=1		//读取第一条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:14:52+08"
111
OK
AT+CMGR=2		//读取第二条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:25+08"
222
OK
AT+CMGR=3		//读取第三条短信
+CMGR: "REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:16:54+08"
333
AT+CMGD=1		//删除第一条短信
OK
AT+CMGD=2		//删除第二条短信   谨记  删除第一条后,第二条内容不会自动跑到第一条,而是依然占据第二条短信,但是当所有短信都删除后,再接收到短信后,会自动排列到第一条信息的位置
OK
AT+CMGD=3		//删除第三条短信
OK
AT+CPMS="SM","SM","SM"	//查看一下短信容量
+CPMS: 1,50,1,50,1,50
OK
AT+CMGL=ALL		//删除了3条之后,查看短信列表,只剩1条
+CMGL: 4,"REC READ","+86xxxxxxxxxxx",,"2017/10/09,09:17:02+08"
444
OK
AT+CMGD=1,4		//删除所有短信
OK

发送短信

AT+CMGF=1    //文本方式发送  
AT+CMGS="xxxxxxxxxxx(电话号码)"   //返回>,然后输入要发送的txt内容并且以CTRL-Z(16进制为1a)结束即可 

中文发送短信

另外可以使用PUD的编码方式发送信息: 
AT+CMGS=XX; //要发送的字节数
>xxxxxxxxxxxxxxxxxxxxx  //PUD码(最后以CTRL-Z(16进制为1a)结尾) 
+CMGS: 0
OK

基站定位(含简化指令)

相关指令

AT+CREG?
At+LOCATION=X(简化版) 
注意,使用基站定位功能之前,必须先at+cgatt=1; at+cgdcont=1,"IP","cmnet" ;at+cgact=1,1;三条指令完成附着网络以及激活之后才可执行。

示例

优化前指令->
AT+CREG=1   //=1的时候是查询网络状态,模组上电默认为1
OK
AT+CREG?
+CREG: 1,1     
AT+CREG=2   //=2的时候是基站定位
OK
AT+CREG?	
+CREG: 2,1,"xxxx","xxxx",2  // 中间参数为16进制
在相关网站查询:http://www.gpsspg.com/bs.htm
简化版指令->单独使用AT+LOCATION=1,不必设置AT+CREG=2,
AT+LOCATION=1(return:<latitude>,<longitude>OK)
xx.xxxxx,xxx.xxxxxx(小数点后固定为6位)
OK  
直接返回经纬度 无需转换
->at+location这句指令需要联网获取地理位置信息,所以时间的长久取决于网络情况的好坏,而且在使用前如果没有手动附着激活的话,它会自动去做这两件事情,要的时间就更长了。想要可靠有快速,建议先使用at+cgatt=1; at+cgdcont=1,"IP","cmnet" ;at+cgact=1,1;附着激活并保证具备联网能力

获取基站下发时间

相关指令 AT+CCLK?

指令解读 该指令在内部进行处理,在模块初始化时,模块获取了基站下发的时间后,将该时间存储在芯片的RTC寄存器中,使用AT+CCLK?即可读取出时间。

注意使用联通卡获取的时间是有问题的。

示例

AT+CCLK ?
+CCLK: "17/10/07,02:50:55+08"	
//该时间为零时区时间,17年10月7日2点50分55秒。+08为时区,我们这里是东八区,所以本地时间是10点50分55秒
OK

HTTP

示例

AT+CGATT=1  //附着网络,如果需要上网,这条指令是必选的
+CGATT:1
OK
AT+CGDCONT=1,“IP”,“CMNET” //设置PDP参数
OK
AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
OK
AT+CIPSTART="TCP","www.baidu.com",80	//以百度为例
CONNECT OK
OK

两种发送请求方式
1.透传发送
AT+CIPTMODE=1 //进入透传
OK
GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n	//发送GET请求信息

2.非透传模式
AT+CIPSEND=45//发送的字节长度
>
GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n   //出现上述箭头后,发送GET请求信息

透传模式和心跳包的设置

Init…

+CREG: 3
+CIEV: service,  0
+CIEV: roam, 0
+CREG: 3
+CIEV: service,  1
+CIEV: roam, 0
+CREG: 1
+CREG: 0
+CREG: 1
A9
V01.03.20170926R //固件版本信息
Ai Thinker Co.LTD
READY	//初始化完成标志   前面的+CIEV: service, 1等等,是网络注册信息,在网络情况不好的时候,会在READY后面输出,没有影响。出现	+CIEV: service, 1;+CREG: 1;表明SIM初始化成功,网络正常。 初始化过程中如果没有检测到SIM卡,初始化信息中会出现NO SIM CARD
AT+CCID	//查询SIM ,序列号唯一,可以用来判断卡是否正常,如果是从安信可购买的物联网卡,可以用此序列号在官网查询电话号码,充值缴费等等。
+CCID: 898607B1101700823754
OK
AT+CREG?	//查询网络注册情况
+CREG: 1,5	//第一个参数1表示允许注册入网;第二个参数5表示已注册,处于漫游状态,如果是1的话,表示已注册本地网络,出现其他参数表示不正常
OK
AT+CSQ	//查询信号强度 第一个参数为信号强度值
+CSQ: 31,99	//信号强度取值为0-31,信号强度最好保持在23以上
OK
AT+CGATT=1  //附着网络,如果需要上网,这条指令是必选的
+CGATT:1
OK
AT+CGDCONT=1,“IP”,“CMNET” //设置PDP参数
OK
AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
OK
AT+CIPSTART="TCP","122.114.122.174",46875	//连接TCP服务器,
CONNECT OK	//此处为安信可透传云服务器,请自行修改端口
OK
AT+CIPHCFG?	//查询心跳包的设置
+CIPHCFG:0,,	//心跳包的默认设置发送心跳包时间间隔为0,后面为空
OK
AT+CIPHCFG=1,55FAFBEE	//设置发送心跳包内容,长度不能低于3个字节,16进制格式
OK
AT+CIPHCFG=2,55AFBFEE	//设置接受回应包内容,长度不能低于3个字节,16进制格式
OK
AT+CIPHCFG=0,15	//设置发送心跳包的时间15秒钟
OK
AT+CIPHCFG?	//查询心跳包的设置
+CIPHCFG:15,55FAFBEE,55AFBFEE	//通过上面指令设置发送间隔为15秒,心跳包与回应包后两位参数
OK
AT+CIPHMODE=1	//启动心跳包,该命令只能在连接服务器成功以后用
OK
AT+CIPTCFG?	//查询透传默认参数
+CIPTCFG:3,200,50,2000
//3表示最大尝试发送失败次数,200是重发延时,单位毫秒,50是触发发送的包长度,2000是触发发送时间,单位毫秒,从输入最后一个字符算起,延至超过2000毫秒,系统也会自动发送数据
OK  //请注意,心跳包的设置不是必须的,如果想自己发送心跳包或者不发送心跳包,可以不设置这些模组自带的心跳包指令。另外,心跳包的发送包设置后,是模组自动发送的,不需要人为控制,但是回应包是需要服务器设置发给模组的,即需要写代码定时返回数据给模组。如果模组超过三次以上没有接受到服务器发回来的回应包,模组会自动关闭心跳包,模组会接收到这样的数据  +CIPHMODE:0 ; OK. 
AT+CIPTMODE=1	//启动透传模式,该指令也是只能在连接服务器成功以后使用
OK
SEND DATA TO SERVER		//发送到服务器的数据
SERVER SEND DATA TO DEVICE	//收到的服务器的数据
+++	//退出透传模式,和前一次发送时间超过2秒,输入+++,就可以退出透传模式
注意,如果是单片机,不要加回车换行符,如果用的是安信可的串口调试工具,请取消勾选发送新行
OK
AT+CIPHMODE=0 	//退出心跳包模式
OK

多链接

示例

AT+CCID          //查询CCID值 用来检测是否插入SIM、
+CCID: 898602B8191790486325      //此ID唯一 
AT+CREG?     //查询SIM的网络注册状态
+CREG: 1,5 //第一个参数1表示允许注册入网;第二个参数5表示已注册,处于漫游状态,如果是1的话,表示已注册本地网络,出现其他参数表示不正常
OK
AT+CSQ           //查询信号强度 第一个参数为信号强度值
+CSQ: 31,99  //信号强度取值为0-31,信号强度最好保持在23以上
OK
AT+CSQ           //查询信号强度 第一个参数为信号强度值
CSQ: 31,99  //信号强度取值为0-31,信号强度最好保持在23以上
OK
AT+CGATT=1   //附着网络,如果需要上网,这条指令是必选的
+CGATT:1
OK
AT+CGDCONT=1,“IP”,“CMNET”   /设置PDP参数
OK
AT+CGACT=1,1     //激活PDP,正确激活以后就可以上网了
OK
AT+CIPSTATUS? //查询ip连接情况,共有8路,实际最多支持同时开4路tcpip连接
+CIPSTATUS:
0,IP GPRSACT 
1,IP INITIAL 
2,IP INITIAL 
3,IP INITIAL 
4,IP INITIAL 
5,IP INITIAL 
6,IP INITIAL 
7,IP INITIAL 
OK

AT+CIPSTART=“TCP”,“122.114.122.174”,36779 //连接TCP服务器,用户请修改自己的服务器
CONNECT OK
OK

AT+CIPSEND=5,qwert	//发送5个字节的字符,注意此种方式只支持可见字符
OK
AT+CIPSEND=5	//发送5字节的数据,此种方式可以发送任意二进制数据
12345
OK
AT+CIPSEND//发送字符,以CTRL+Z(16进制的0x1a)结尾
qwert
OK
+CIPRCV:21,Server Send Data Test //收到服务器发送过来的数据,内容也可以是二进制任意数据

AT+CIPSTATUS?          //查询链路状态
+CIPSTATUS:
0,CONNECT OK 
1,IP INITIAL 
2,IP INITIAL 
3,IP INITIAL 
4,IP INITIAL 
5,IP INITIAL 
6,IP INITIAL 
7,IP INITIAL 
OK
AT+CIPCLOSE  //关闭该链路
OK
AT+CIPMUX? /查询是否开启多连接
+CIPMUX:0
OK

AT+CIPMUX=1     //开启多链接
OK

AT+CIPSTART=“TCP”,“122.114.122.174”,36779  //发起第一个TCP连接
+CIPNUM:0    //只有点开启多链接的时候才会有,1为返回的链路号
CONNECT OK
OK
AT+CIPSTART=“TCP”,“www.baidu.com”,80   //发起第二路连接  
+CIPNUM:1    //只有点开启多链接的时候才会有,1为返回的链路号
CONNECT OK
OK
AT+CIPSTART=“TCP”,“www.hao123.com”,80      //发起第三路连接
+CIPNUM:2    //只有点开启多链接的时候才会有,2为返回的链路号
CONNECT OK
OK
AT+CIPSTATUS
+CIPSTATUS:
0,CONNECT OK 
1,CONNECT OK 
2,CONNECT OK 
3,IP INITIAL 
4,IP INITIAL 
5,IP INITIAL 
6,IP INITIAL 
7,IP INITIAL 
OK
AT+CIPCLOSE=3   //关闭链路号为3的连接
+CME ERROR:50   //链路3实际上没有创建
AT+CIPCLOSE=2   //关闭链路号为2的连接
OK
AT+CIPCLOSE=1   //关闭链路号为1的连接
OK
AT+CIPSTATUS
+CIPSTATUS:   //只剩下链路0,其他两路关闭
0,CONNECT OK 
1,IP CLOSE 
2,IP CLOSE 
3,IP INITIAL 
4,IP INITIAL 
5,IP INITIAL 
6,IP INITIAL 
7,IP INITIAL 
OK

AT+CIPSTART="TCP","www.baidu.com",80
+CIPNUM:1
CONNECT OK
OK

AT+CIPSTART="TCP","www.hao123.com",80
+CIPNUM:2
CONNECT OK
OK

AT+CIPSTART="UDP","121.41.97.28",60006
+CIPNUM:3
UDP BIND OK
OK

AT+CIPSTATUS?
+CIPSTATUS:   //可以看到0-3链路号都被占用,建立了4路IP连接
0,CONNECT OK 
1,CONNECT OK 
2,CONNECT OK 
3,SOCKET OK 
4,IP INITIAL 
5,IP INITIAL 
6,IP INITIAL 
7,IP INITIAL 
OK
AT+CIPSEND=0,5,qwert//链路0发送5个字节的字符,“qwert”,本指令只支持可见字符
OK

A9/A9G使用安信可微信公众号以及A9Tracker_app获取定位信息

相关指令

AT+GIZQRCODE	//获取二维码字符串,用来制作二维码扫码绑定,或者直接在微信上手动该字符串输入绑定
AT+GIZTRACKER=1,0,10,1	//连接服务器 
http://wiki.ai-thinker.com/gprs/a9g/a9tracker	APP对接教程
http://wiki.ai-thinker.com/gprs/a9g/MP		微信对接教程

指令解析

AT+GIZTRACKER=< on/off >,[server],[upload interval],[use LBS],[pk],[ps]
n/off      值:0/1.该参数为0时关闭,设置为1为自动上传
serve      选择服务器:0为安信可服务器;1为自定义服务器(第一次使用的时候必须附带PK,PS参数,连接成功后,这两个参数会被保存)
up in      上传数据的时间间隔(s),默认值为0(不上传)
use LBS    值:0/1;设置1,从LBS获得定位信息;设置0,从GPS获取定位信息。当GPS信号弱,可以选择从LBS获取信息(A9只能从LBS获取信息)。默认值为0。
pk ps      产品的key 和secret.这些是在自己创建产品时用到的,详见9/A9G十分钟对接机智云创建属于自己产品的程:http://www.jianshu.com/p/e3d86a263be5

示例

AT+GIZQRCODE
+GIZQRCODE:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//一长串字符串
AT+GIZTRACKER=1,0,10,1 —>参数3为上传定位信息的时间间隔,参数4为选择使用基站定位功能还是GPS功能上传定位信息1->LBS,0->GPS
+GIZTRACKER:Start —>返回值
OK
+GIZWITS:sign in end
+GIZWITS:conn end —>连接服务器成功
OK
注意:该命令会自动保存,开机之后自动运行该命令连接服务器。如果需要停止运行使用At+GIZTRACKER=0;

A9/A9G十分钟对接机智云创建属于自己产品的教程

功能解读 该功能的实现,需要客户首先子机智云官网申请开发者账号,创建产品,获得产品的 Product Key和 Product Secret ,然后,常见上报的数据点类型,按以下方式发送数据即可上传到机智云服务器。

A9G(GPS)

===== GPS(简化版) ===== 相关指令 AT+LOCATION=X 示例 At+LOCATION=0(return:<latitude>,<longitude>OK) xx.xxxxx,xxx.xxxxxx(小数点后固定为6位) OK

GPS

相关指令

AT+GPS=1,开 GPS	
AT+GPS=0,关闭 GPS
AT+GPS? ,查询 GPS 的状态
AT+GPSRD=N,N 是数字表示 N 秒输出一条 NEMA 信息从 AT 串口。

注意,在打开GPS之后,模组的GPS_TXD会以9600波特率默认输出定位信息,这个不影响整个模组的波特率,例如A9G模组的工作波特率是115200,发送AT指令开启GPS,这个时候GPS_TXD会以9600波特率输出信息,AT串口依然是115200。
另外,请注意,改定位信息会输出GNGGA GNRMC而不是 GPGGA和GPRMC,模组使用的是混合定位系统,包括了GPS,BDS和GNNS(全球导航系统)。解释一下输出信息头的组成,例如GPGGA,拆分为GP+GGA->定位系统+输出数据类型 ,GP为GPS定位系统,GGA为时间、位置、卫星数量的输出信息,同理GNGGA即为GN+GGA->定位系统+输出数据类型,GN为全球导航系统, GGA为时间、位置、卫星数量的输出信息,其他指令请依次类推。后面我会放上标准协议,所以,用户在PDF中搜索对应输出信息的时候直接搜索数据输出类型。例如直接搜索GNGGA是搜不到的,因为文档都是以GPS定位系统为例的,直接搜索数据类型GGA即可。
最后,模组默认的是GPS+BDS混合模式输出,那么输出的信息即为GN开头的数据,如果设置为单独模式,则为该模式开头的数据输出,例如设置为GPS模式,则输出信息为GPGGA。

示例

AT+GPS=1
OK
AT+GPSRD=N
+GPSRD:
$GNGGA,000840.261,2236.3719,N,11350.4081,E,0,0,,153.2,M,-3.2,M,,*4F
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$BDGSA,A,1,,,,,,,,,,,,,,,*0F
$GPGSV,1,1,00*79
$BDGSV,1,1,00*68
$GNRMC,000840.261,V,2236.3719,N,11350.4081,E,0.000,0.00,060180,,,N*5C
$GNVTG,0.00,T,,M,0.000,N,0.000,K,N*2C

GPS扩展指令

相关指令

AT+GPSMD=1    GPS模式(暂时不支持单独的BD模式,bd系统暂时只覆盖亚洲)
AT+GPSMD=2    GPS+BD模式
模组默认的是GPS+BDS混合模式输出,那么输出的信息即为GN开头的数据,如果设置为单独模式,则为该模式开头的数据输出,例如设置为GPS模式,则输出信息为GPGGA。

示例

AT+GPS=1      先打开GPS
AT+GPSMD=x    x=1或者2,选择开启那个模式, 默认为GPS+BDS模式
At+GPSRD=x    数字x表示 x 秒输出一条 NEMA 信息从 AT 串口

AGPS

相关指令

AT+AGPS=1,开 AGPS,同时会打开 GPS 使用时先关闭GPS功能。
AT+AGPS=0,关闭 AGPS,
AT+AGPS? ,查询 AGPS 的状态
AT+GPSRD=N,N 是数字表示 N 秒输出一条 NEMA 信息从 AT 串口。
注意,AGPS是辅助定位功能,加快GPS的定位时间,在使用之前建议先附着和激活网络,因此,要先使用命令附着和激活网络。
注意,在打开GPS之后,模组的GPRS_RXD(因为GPS的芯片是接在gprs模组上进行通信,所以模组的GPRS_RXD实际上是gps芯片的TXD引脚)会以9600波特率默认输出定位信息,这个不影响整个模组的波特率,例如A9G模组的工作波特率是115200,发送AT指令开启GPS,这个时候GPRS_TXD会以9600波特率输出信息,AT串口依然是115200。

示例:

AT+CGATT=1  //附着网络,如果需要上网,这条指令是必选的
+CGATT:1
OK
AT+CGDCONT=1,“IP”,“CMNET” //设置PDP参数
OK
AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
OK
AT+GPS=0
OK

AT+AGPS=1
+AGPS:GPD OK
+AGPS:OK
OK

AT+GPSRD=N
OK
+GPSRD:
$GNGGA,050041.129,2236.1052,N,11350.2770,E,0,0,,3.2,M,-3.2,M,,*4D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$BDGSA,A,1,,,,,,,,,,,,,,,*0F
$GPGSV,4,1,14,05,59,296,,02,53,008,,06,37,068,,19,35,142,*74
$GPGSV,4,2,14,13,32,180,,12,28,252,,20,20,255,,25,15,288,*7F
$GPGSV,4,3,14,17,14,145,,29,11,323,,09,10,040,,15,08,205,*76
$GPGSV,4,4,14,30,03,112,,193,,,*75
$BDGSV,1,1,00*68

教程:http://www.jianshu.com/p/e3d86a263be5