zl程序教程

您现在的位置是:首页 >  其他

当前栏目

GPS+北斗定位借助Arduino的数值显示

定位 显示 数值 借助 Arduino GPS 北斗
2023-09-11 14:19:58 时间

一、前言

较多的导航软件在生活中层出不穷,但是卫星定位同样也适用于轨迹记录、经纬分析、授时系统等,多样的功能使其能够应用于各个不同的场景。

二、硬件要求

本次使用的就是这款ATGM336H模块 ,它是搭载了中科微第四代低功耗GNSS SOC单芯片—AT6558。支持多种卫星导航系统,包括中国的BDS(北斗卫星 导航系统),美国的GPS,俄罗斯的GLONASS,欧盟的GALILEO,日本的QZSS 以及卫星增强系统SBAS(WAAS,EGNOS,GAGAN,MSAS)。

AT6558 是一 款真正意义的六合一多模卫星导航定位芯片,包含32 个跟踪通道,可以同时接收这六个卫星导航系统的GNSS 信号,并且可以直接替换Ublox MAX系列模块。
在这里插入图片描述

三、参数基础

支持 A-GNSS
冷启动捕获灵敏度:-148dBm
跟踪灵敏度:-162dBm
定位精度:2.5 米(CEP50,开阔地)
首次定位时间:32 秒
低功耗:连续运行<25mA(@3.3V)
内置天线检测及天线短路保护功能
输出协议:ATGM332D-5N 系列模块通过 UART 作为主要输出通道, 按照NMEA0183 的协议格式输出,具体信息请参照《CASIC 多模卫星导航接收机协议规范》 。

四、原理剖析

该模块主要由ATGM332D-5N搭载诸多的元器件构成,其中不乏预留天线口、uart协议脚、iic协议脚,最终成型的也是vcc和gnd电源脚,rx、tx的协议脚,以及pps脚。
本电路中,3.3v供电即可看到指示灯亮起,伴随芯片运作,整个端口的输入输出联系起来,实现远程收发的时候天线就作用起来了。
在这里插入图片描述

五、使用方式

主要以uart的协议,进行数值反馈。
可以在电脑window系统上面的上位机软件,利用usb转ttl,连接到电脑上可以看到相关的定位信息、经纬度、授时信息,更为全面。

同样该协议也适用于开发板的程序应用,包括stm32、arduino、单片机等。
在这里插入图片描述

六、程序概要

//ATGM336H接线 vcc接3.3v  gnd接gnd  tx接0引脚 其余不接
//led灯接线 红接13引脚 黑接gnd
#define GPSSerial  Serial 
#define DEBUGSerial Serial
int L = 13; //LED指示灯引脚

void setup()	//一次循环
{
  GPSSerial.begin(9600);			//定义波特率9600,刷新
  DEBUGSerial.begin(9600);          //定义波特率9600,刷新
  DEBUGSerial.println("GPS information");//输出换行
  DEBUGSerial.println("Please wating...");
  pinMode(L, OUTPUT);
 
}

void loop()		//主循环
{    
	if (GPSSerial.available()) {   
    	DEBUGSerial.write(GPSSerial.read());//如果收到GPS数据则通过Serial输出
}
else{
	digitalWrite(L,1);//否则灯亮起
    }
}

七、成果展示

在这里插入图片描述
在这里插入图片描述

八、数据解析

举例第1行

$GNGGA,132506.000,2233.87430,N,11407.13740,E,1,13,1.0,103.3,M,-2.8,M,*5E

$GNGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,*CS

GGA接收机定位数据。GN是GPS+北斗双模式

<1> 132506.000:UTC时间,hhmmss.sss(时分秒.毫秒)格式

<2> 2233.87430:纬度ddmm.mmmm(度分)格式(前导位数不足补0)

<3> N:纬度半球N(北半球)或S(南半球)

<4> 11407.13740:经度dddmm.mmmm(度分)格式(前导位数不足补0)

<5> E:经度半球E(东经)或W(西经)

<6> 1: GPS状态:0=未定位,1=非差分定位,2=差分定位,3=PPS模式

<7> 13:正在使用解算位置的卫星数量(00~24)(前导位数不足补0)

<8> 1.0:HDOP水平精度因子(0.5~99.9)

<9> 103.3:海拔高度(-9999.9~99999.9)

<10> M:高度单位

<11> -2.8:地球椭球面相对于海平面的高度

<12> M:高度单位

<13> :差分修订时间。如果不是差分定位,此项为空

* 5E:校验和,$和之间(不包括 $和)所有字符的异或结果

  • 模块使用NMEA-0183协议的报文,其余行详细说明见《CASIC多模卫星导航接收机协议规范》

九、总结

1、本次仅测试模块在arduino的正常接收,实际应用中ATGM336H注意应在高海拔和户外测试,数值更加精确
2、如果需要最为简单、直观的数据查看,依旧推荐usb转ttl连接至电脑上,使用上位机查看。
在这里插入图片描述
在这里插入图片描述