GSM/GPRS操作示例


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指令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM