差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
gprs:examples [2019/12/21 08:24] aithinker_fae [更新历史] |
gprs:examples [2020/04/13 03:03] (当前版本) aithinker_fae [GPS定位] |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== GSM/GPRS操作示例 ====== | ||
+ | 说明:本页面操作示例使用串口助手进行开发演示。 | ||
+ | |||
+ | **请先仔细看右边的目录,按模块,寻找自己需要的功能** | ||
+ | |||
+ | ====== 更新历史 ====== | ||
+ | 更新说明: | ||
+ | |||
+ | 2018年3月26日: | ||
+ | 固件版本:A9/A9_gV02.00.20180327RC | ||
+ | 添加: | ||
+ | 1.A9G的GPS低功耗模式 | ||
+ | 2.A9/A9G的HTTP和MQTT的功能 | ||
+ | 3.A9/A9G模组的串口低功耗以及GPIO低功耗 | ||
+ | 优化: | ||
+ | 1.A9/A9G的AT+RST指令进行优化 | ||
+ | 2.A9/A9G的AT+LOCATION指令进行优化 | ||
+ | | ||
+ | |||
+ | ====== 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即可。 | ||
+ | |||
+ | {{ :gprs:send_message_chinese.docx |中文发送短信}} | ||
+ | 另外可以使用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 | ||
+ | |||
+ | ===== HTTP ===== | ||
+ | |||
+ | 相关指令: | ||
+ | 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 | ||
+ | 紧接着接受的是服务器响应的信息 | ||
+ | |||
+ | |||
+ | |||
+ | ===== MQTT ===== | ||
+ | |||
+ | 示例: | ||
+ | |||
+ | 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,"Ai-thinker","123456" //客户端等待和连接服务器,同时发送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 | ||
+ | |||
+ | ===== 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) ====== | ||
+ | |||
+ | <del>===== GPS(简化版) =====</del> | ||
+ | <del>相关指令 | ||
+ | AT+LOCATION=X | ||
+ | 示例 | ||
+ | At+LOCATION=0(return:<latitude>,<longitude>OK) | ||
+ | xx.xxxxx,xxx.xxxxxx(小数点后固定为6位) | ||
+ | OK | ||
+ | </del> | ||
+ | ===== GPS定位 ===== | ||
+ | |||
+ | 相关指令 | ||
+ | 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为时间、位置、卫星数量的输出信息,其他指令请依次类推。 | ||
+ | 最后,模组默认的是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 | ||
+ | |||
+ | |||
+ | |||
+ | ===== 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 串口 | ||
+ | |||
+ | ===== GPS的低功耗模式 ===== | ||
+ | |||
+ | 相关指令 | ||
+ | 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模式为低功耗模式 | ||
+ | |||
+ | ===== 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 | ||
+ | |||
+ | ===== GPS指示灯的状态 ===== | ||
+ | |||
+ | 相关指令 | ||
+ | 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 //串口低功耗模式,可以通过串口唤醒 ---- 还有那么一点问题******** | ||
+ | 注意: 进入串口低功耗模式,在该模式串口可以接收和发送数据,模组会在低功耗和正常模式下正常切换。 | ||
+ | 进入GPIO口低功耗模式,在接受到数据。短信,电话不会被唤醒,需要控制引脚拉高,退出低功耗模式 | ||
+ | GPIO26用于低功耗模式的通知GPIO(如果进入了GPIO低功耗模式,通过用示波器连接GPIO26引脚,可以检测GPIO26引脚的电平判断是否收到数据) | ||
+ | |||
+ | 示例1(GPIO低功耗) | ||
+ | |||
+ | AT+SLEEP=1 //GPIO低功耗模式 | ||
+ | OK | ||
+ | //发送命令成功之后,将GPIO25引脚和GND引脚进行相连,之后继续发送AT指令是没有任何效果的: | ||
+ | |||
+ | 示例2(串口低功耗) | ||
+ | AT+SLEEP=2 //串口低功耗模式 | ||
+ | OK | ||
+ | //进入串口低功耗的时候,模组消耗的电流会降低,但是还是可以发送数据 | ||
+ | AT | ||
+ | OK | ||
+ | //模组发送数据,会自动退出低功耗,此时消耗电流又会升高 | ||
+ | |||
+ | |||
+ | 教程:http://www.jianshu.com/p/e3d86a263be5 |