qiuri2008

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

A6(GPRS)

 博文转自安信科技:
  http://wiki.ai-thinker.com/gprs/examples

相关指令

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

以百度为例(前面的步骤要按流程配置,一定不能忘记)(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)

 

模组软复位及关机

AT+RST=X   //X=1表示软重启,X=2表示关机

示例

AT+RST=1 //软件重启
Init...
+CREG: 2
+CTZV:18/03/30,06:59:43,+08
+CREG: 1
+CTZV:18/03/30,06:59:44,+08
OK
A9/A9G
V02.00.20180327RC
Ai_Thinker_Co.LTD
READY

示例2:

AT+RST=2	//运行这条指令模组会进入管断状态,前提是模组的供电管教是VBAT3.5V~4.2V

相关指令

ATDxxxxx;//xxx为电话号码

示例 打电话

ATD10086
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"	//列出所有短信->  txt格式,使用这条命令参数为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内容,发送数据,之后请取消”发送新行”选项,勾选"HEX(16进制发送)"选项,最后发送0x1a即可。

中文发送短信

另外可以使用PUD的编码方式发送信息: 
AT+CMGS=XX //要发送的字节数
>xxxxxxxxxxxxxxxxxxxxx  //PUD码(最后的操作方式和txt操作方式相似)
+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进制,第一个字符串得到的是LAC,第二个字符串得到的是CI
基站定位可以到该网站查询: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

相关指令:

AT+HTTPGET=<url>	//统一资源标志符,可以是域名或者是IP地址
AT+HTTPPOST=<url>,<content_type>,<body_content>   //<content_type> : 网络文件的类型和网页的编码的内容类型
					          //<body_content> : body的文本

示例

AT+CGATT=1  //附着网络,如果需要上网,这条指令是必选的
+CGATT:1
OK
AT+CGDCONT=1,"IP","CMNET" //设置PDP参数
OK
AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
OK
AT+HTTPGET="http://wiki.ai-thinker.com/gprs_download"	//连接网站,请求网站资源
OK
紧接着接受的是服务器响应的信息

示例:

 AT+CGATT=1          //附着网络
 OK
 AT+CGDCONT=1,"IP","CMNET" //设置PDP参数
 OK
 AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
 OK
 AT+MQTTCONN="www.anthinkerwx.com",1883,"12345",120,0  //客户端等待和连接服务器,同时发送CONNECT
 OK// 注意:(MQTT的服务器需要自己搭建)
 AT+MQTTPUB="test","124563",0,0,0			      //客户端向服务端传输一个应用消息
 +MQTTPUBLISH: 1, test, 6, 124563
 OK
 AT+MQTTSUB="test",1,0				     //客户端向服务端发送SUB报文用于创建订阅
 OK
 AT+MQTTDISCONN					     //客户端发给服务端的DISCONNECT控制报文,表示客户端正常断开连接

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=1  // =1的时候是查询网络状态,模组上电默认为1
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

相关指令

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;

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

A9G(GPS)

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

相关指令

AT+GPS=1,开 GPS	
AT+GPS=0,关闭 GPS
AT+GPS? ,查询 GPS 的状态
AT+GPSRD=N,N 是数字表示 N 秒输出一条 NEMA 信息从 AT 串口。
AT+LOCATION=X	//X=1获取的是基站的地址,X=2是获取的是GPS的地址

注意,在打开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		//开启GPS功能
OK

AT+GPSRD=N		//N秒输出一条 NEMA 信息 从 AT 串口
+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

AT+LOCATION = 2				//获取GPS的地址信息,前提是GPS能够看得到卫星才能够返回,否则会返回GPS NOT FIX NOW

相关指令

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 串口

相关指令

AT+GPSLP=x	//GPS的低功耗设置,x的取值分别是0,1,2
AT+GPSLP=0	//正常模式		   ----  电流的值测试在0.063A左右
AT+GPSLP=1	//串口低功耗模式	
AT+GPSLP=2	//GPS低功耗模式    ----  电流的值测试在0.034A左右
//模组GPS的默认的默认模式是正常模式,设置GPS模式的时候不会立即生效,需要过一段时间才会生效

示例:

AT+GPS=1	//开启GPS
AT+GPSRD=10     //10秒输出一条 NEMA 信息
AT+GPSLP=2      //设置GPS模式为低功耗模式

相关指令

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

相关指令

AT+GPNT=x  	//设置GPS指示灯的状态,x=0或者x=1;
AT+GPNT=0	//GPS灯为闪烁状态
AT+GPNT=1	//GPS灯为电平状态 
      

示例

AT+GPNT=?   //查询x可以设置的值
+GPNT: (0:led flash,1:led notice)
OK
AT+GPNT=0	//设置GPS灯的状态
OK

相关指令:

AT+SLEEP=x	//设置模组的低功耗模式,x的取值分别是0,1,2
AT+SLEEP=0	//关闭低功耗模式  --- 进入低功耗的电流值是00.213A
AT+SLEEP=1	//进入GPIO低功耗模式,GPIO25引脚拉低进入模组低功耗,引脚拉高将退出低功耗,GPIO25默认是高电平
AT+SLEEP=2	//串口低功耗模式,可以通过串口唤醒  ----  还有那么一点问题********
 注意: 在低功耗模式下,无法通过串口发送任何指令或者数据,但可以接受到数据
       进入串口低功耗模式,在该模式下接受到数据,短信,电话会自动唤醒
       通过控制低功耗引脚进入低功耗模式,在接受到数据。短信,电话不会被唤醒,需要控制低功耗引脚退出低功耗模式
       GPIO26用于低功耗模式的通知GPIO(如果进入了GPIO低功耗模式,通过用示波器连接GPIO26引脚,可以检测GPIO26引脚的电平判断是否收到数据)
       

示例1(GPIO低功耗)

AT+SLEEP=1  //GPIO低功耗模式 	
OK
//发送命令成功之后,将GPIO25引脚和GND引脚进行相连,之后继续发送AT指令是没有任何效果的:

示例2(串口低功耗)

 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", 35408	//以安信可透传云为例
 CONNECT OK
 OK
 AT+SLEEP=2  //串口低功耗模式
 OK
 //进入低功耗模式之后,发送AT指令是没有效果的,可以通过透传云发送数据给模组,模组会自动唤醒,才可以继续发送AT指令
posted on 2018-04-10 10:48  江召伟  阅读(3001)  评论(0编辑  收藏  举报