概 述
A9G是一款完整的四频 GSM/GPRS+GPS 模块,使用RDA8955作为主控芯片。核心芯片的成本降低使得整个方案性价比更高。模块内部集成了GSM/GPRS等协议栈,能提供串口转GPRS/GPS/短信息/语音通话等信息传输功能,且可以广泛应用于物联网/车载/远程定位/电力环境检测等领域。
只需一张移动电话卡或物联网卡即可让设备拥有GPRS/GPS/短信息/语音通话等信息传输功能,支持AT指令控制使其能搭配其他的设备。模块有29个I/O口通过排针引出。拥有完整的SDK,功能强大,使用简单,为你的二次开发保驾护航。
产品参数
- 工作温度-20℃+70℃;
- 低功耗平均电流在2mA以下;
- 支持GSM/GPRS四个频段,包括850,900,1800,1900MHZ;
- GPRS Class 10;
- 灵敏度< -105dB;
- 支持语音通话;
- 支持SMS短信;
- GPIO电平在2.8V;
- 支持GPRS数据业务,最大数据速率,下载85.6Kbps,上传42.8Kbps;
- 支持标准GSM07.07,07.05 AT命令及Ai-Thinker扩展命令;
- AT命令支持标准AT和TCP/IP命令口;
引脚/接口说明
使用教程
准备
- 硬件
A9G模块
USB转TTL模块
- 软件
串口调试工具,点击下载
二维码生成器,点击下载
- 资源汇总
- SIM卡
本模块使用的是Micro SIM卡。
接线
模块使用AT固件,在调试的时候使用4根线连接USB-TTL,接到电脑上调试:VUSB→5V;GND→GND;TX1→RX;RX1→TX;
AT指令操作示例
1 模组软复位及关机
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 电话接收
相关指令
ATDxxxxx;//xxx为电话号码
示例打电话
ATD10086
OK
+CIEV: "CALL",1
+CIEV: "SOUNDER",1 //响铃
+CIEV: "SOUNDER",0 //挂断
+CIEV: "CALL",0
BUSY//显示BUSY
接到短话
(若想使用来电提醒功能,请使用AT+CLIP=1;注意,该功能必须需要你的SIM卡自带来电提醒功能)
RING
RING
3 短信设置
相关指令
AT+CPMS="SM","SM","SM" //设置短信存储单元
AT+CMGF=0/1 //设置短信格式,1为txt格式读取,0为pud格式读取
AT+CMGR=x //读取短信内容,x为第几条短信
AT+CMGL=4/"ALL" //查看短信列表 PUD格式发送AT+CMGL=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
4 基站定位(含简化指令)
相关指令
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
基站定位可以到该网站查询:https://www.opengps.cn/Data/Cell/Search.aspx
简化版指令->单独使用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;附着激活并保证具备联网能力
5 获取基站下发时间
相关指令 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
6 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="https://www.dfrobot.com" //连接网站,请求网站资源
OK
紧接着接受的是服务器响应的信息
7 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
8 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 串口
9 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模式为低功耗模式
10 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+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
11 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
12 设置模组的低功耗模式
相关指令:
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
//模组发送数据,会自动退出低功耗,此时消耗电流又会升高
12 其他教程请查看链接
13 SDK开发相关教程请查看链接
常见问题
还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们!
更多问题及有趣的应用,可以访问论坛进行查阅或发帖