一、实物图(型号:ATGM332D-5N)
二、原理图
编号 | 名称 | 功能 |
1 | VCC | 电源正 |
2 | GND | 电源地 |
3 | TXD | 串口数据发送引脚,接单片机上的RX引脚 |
4 | RXD | 串口数据接收引脚,接单片机上的TX引脚 |
三、简介
ATGM332D-5N系列模块是12X16 尺寸的高性能BDS/GNSS 全星座定位导航模块系列的总称。该系列模块产品都是基于中科微第四代低功耗GNSS SOC单芯片—AT6558,支持多种卫星导航系统,包括中国的BDS(北斗卫星导航系统),美国的GPS,俄罗斯的GLONASS,欧盟的GALILEO,日本的QZSS 以及卫星增强系统SBAS(WAAS,EGNOS,GAGAN,MSAS)。AT6558 是一款真正意义的六合一多模卫星导航定位芯片,包含32 个跟踪通道,可以同时接收六个卫星导航系统的GNSS 信号,并且实现联合定位、导航与授时。
ATGM332D-5N系列模块具有高灵敏度、低功耗、低成本等优势,适用于车载导航、手持定位、可穿戴设备,可以直接替换U-blox NEO 系列模块。
四、性能指标
1、出色的定位导航功能,支持BDS/GPS/GLONASS卫星导航系统的单系统定位,以及任意组合的多系统联合定位,并支持QZSS和SBAS系统。
2、支持A-GNSS。
3、冷启动捕获灵敏度:-148dBm。
4、跟踪灵敏度:-162dBm。
5、定位精度:2.5 米(CEP50)。
6、首次定位时间:32 秒。
7、低功耗:连续运行
8、内置天线检测及天线短路保护功能。
五、模块功能图
六、应用领域
1、车载定位与导航。
2、手机、平板电脑,手持设备。
3、嵌入式定位设备。
4、可穿戴设备。
七、输出协议
ATGM332D-5N系列模块通过 UART作为主要输出通道,按照 NMEA0183的协议格式输出,具体信息请参照《CASIC多模卫星导航接收机协议规范》。
八、数据解析
GPS有效数据:
$GPRMC,031845.00,A,3144.8072,N,11717.2281,E,0.034,,201121,,,D*75
$GPVTG,,T,,M,0.034,N,0.063,K,D*24
$GPGGA,031845.00,3144.99012,N,11717.02791,E,2,07,1.21,70.9,M,-2.2,M,,0000*7F
$GPGSA,A,3,24,18,23,15,10,05,13,,,,,,1.87,1.21,1.43*04
$GPGSV,3,1,11,05,15,118,12,10,29,316,24,12,11,143,,13,10,058,25*75
$GPGSV,3,2,11,15,38,053,37,18,57,222,32,23,61,339,27,24,75,084,46*7D
$GPGSV,3,3,11,25,02,172,,32,13,264,19,50,52,162,41*41
$GPGLL,3144.99012,N,11717.02791,E,031845.00,A,D*6A
GPS无效数据:
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGLL,,,,,,V,N*64
部分程序:
void GPS_Get_Data(void)
{
uint N_du; //纬度的度
float N_fen; //纬度的分
uint E_du; //经度的度
float E_fen; //经度的分
char *result = NULL; //结果
if(UART_WaitRecive() == 0) //通过GPS获取一次经纬度
{
if(strstr(uart_buf,”RMC”))
{
result = strstr(uart_buf,”A,”); //获取纬度
if(result != NULL)
{
result = result+2;
N_value = (float)atof(result);
N_du = (uint)(N_value / 100.0);
N_fen = N_value-N_du*100;
N_value = N_du + N_fen/60.0;
}
result = strstr(uart_buf,”N,”); //获取经度
if(result != NULL)
{
result = result+2;
E_value = (float)atof(result);
E_du = (uint)(E_value / 100.0);
E_fen = E_value-E_du*100;
E_value = E_du + E_fen/60.0;
}
if(E_value 150 || N_value 60) //中国的经度范围:73°33′E至135°05′E 纬度范围:3°51′N至53°33′N
{
N_value = 0;
E_value = 0;
}
}
UART_Clear();
}
}
九、流程设计
首先初始化引脚,然后初始化串口,接着等待模块向单片机发送数据,单片机通过串口接收数据,然后进行解析。首先判断接收的数据中是否包含“RMC”字符串,如果包含,则利用“A,”和“N,”字符串分割出纬度和经度,最后判断是否是国内范围的经纬度值,如果不是,则判断此次数据为无效数据值,如果是,则为有效数据值。