NO.8 模型用GPS测速仪(已完成)(更新第二版本)

这个是用显示屏显示的


定位精度2.5m
GPS模块VCC————–Arduino的5v
GPS模块GND————–Arduino的GND
GPS模块TXD————–Arduino的D0(数字IO 0)
GPS模块RXD不接
GPS模块PPS不接
其中GPS的天线记得要接,并且要室外放置,因为GPS模块是室外定位的,室内没有卫星信号。在室外时需要大概1分钟左右的时间来获取当前位置数据。
Arduino自测程序:

void setup()
{Serial.begin(9600);           //定义波特率9600Serial.println("Wating...");
}void loop()
{while (Serial.available()) {   Serial.write(Serial.read());//收到GPS数据则通过串口输出}
}

一组数据如下:

$GNGGA,,,,,,0,00,25.5,,,,,,*64
$GNGLL,,,,,,V,N*7A
$GPGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*02
$BDGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*13
$GPGSV,1,1,00*79
$BDGSV,1,1,00*68
$GNRMC,,V,,,,,,,,,,N*4D
$GNVTG,,,,,,,,,N*2E
$GNZDA,,,,,,*56
$GPTXT,01,01,01,ANTENNA OK*35$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48
$GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C
$GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E
$BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24
$GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71
$GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F
$GPGSV,3,3,09,32,42,334,*43
$BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A
$GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,141216,,,A*7
5
$GNVTG,292.44,T,,M,0.53,N,0.98,K,A*2D
$GNZDA,084852.000,14,12,2016,00,00*48
$GPTXT,01,01,01,ANTENNA OK*35

数据里面我们看到三种数据类型
GN、GP、BD 分别代表双模模式、GPS 模式、北斗模式
(1) $GPGGA (GPS 定位信息)

(2) $GPGLL (地理定位信息)

(3)$GPGSA (当前卫星信息)

(4) $GPGSV(可见卫星信息)

(5) $GPRMC(最简定位信息)这个可用信息较多

(6) $GPVTG(地面速度信息)

(7)天线状态输出
$GPTXT,01,01,01,ANTENNA OK*35
Ok 代表天线已经检测到,open 代表天线断开。

关于热启动温启动冷启动的阐述
冷启动是指在一个陌生的环境下启动GPS 直到GPS 和周围卫星联系并且计算出
坐标的启动过程。以下几种情况开机均属冷启动:
1、初次使用时;
2、电池耗尽导致星历信息丢失时;
3、关机状态下将接收机移动1000 公里以上距离。也就是说冷启动是通过硬件方
式的强制性启动,因为距离上次操作GPS 已经把内部的定位信息清除掉,GPS 接
收机失去卫星参数,或者已经存在的参数和实际接收到卫星参数相差太多,导致
导航仪无法工作,必须重新获得卫星提供的坐标数据,所以说车辆从地库里启动
导航百分百算冷启动,这也是从地库出来搜星时间长的原因。
温启动是指距离上次定位时间超过2 个小时的启动,搜星定位时间介于冷启动和
热启动之间。如果您前一日使用过GPS 定位,那么次日的第一次启动就属于温启
动,启动后会显示上次的位置信息。因为上次关机前的经纬度和高度已知,但由
于关机时间过长,星历发生了变化,以前的卫星接受不到了,参数中的若干颗卫
星已经和GPS 接收机失去了联系,需要继续搜星补充位置信息,所以搜星的时间
要长于热启动,短于冷启动。
热启动是指在上次关机的地方没有过多移动启动GPS,但距离上次定位时间必须
小于2

GPS解析程序:

#define GpsSerial  Serial
#define DebugSerial Serial
int L = 13; //LED指示灯引脚struct
{char GPS_Buffer[80];bool isGetData;     //是否获取到GPS数据bool isParseData;   //是否解析完成char UTCTime[11];       //UTC时间char latitude[11];      //纬度char N_S[2];        //N/Schar longitude[12];     //经度char E_W[2];        //E/Wbool isUsefull;     //定位信息是否有效
} Save_Data;const unsigned int gpsRxBufferLength = 600;
char gpsRxBuffer[gpsRxBufferLength];
unsigned int ii = 0;void setup()    //初始化内容
{GpsSerial.begin(9600);          //定义波特率9600,和我们店铺的GPS模块输出的波特率一致DebugSerial.begin(9600);DebugSerial.println("ILoveMCU.taobao.com");DebugSerial.println("Wating...");Save_Data.isGetData = false;Save_Data.isParseData = false;Save_Data.isUsefull = false;
}void loop()     //主循环
{gpsRead();  //获取GPS数据parseGpsBuffer();//解析GPS数据printGpsBuffer();//输出解析后的数据// DebugSerial.println("\r\n\r\nloop\r\n\r\n");
}void errorLog(int num)
{DebugSerial.print("ERROR");DebugSerial.println(num);while (1){digitalWrite(L, HIGH);delay(300);digitalWrite(L, LOW);delay(300);}
}void printGpsBuffer()
{if (Save_Data.isParseData){Save_Data.isParseData = false;DebugSerial.print("Save_Data.UTCTime = ");DebugSerial.println(Save_Data.UTCTime);if(Save_Data.isUsefull){Save_Data.isUsefull = false;DebugSerial.print("Save_Data.latitude = ");DebugSerial.println(Save_Data.latitude);DebugSerial.print("Save_Data.N_S = ");DebugSerial.println(Save_Data.N_S);DebugSerial.print("Save_Data.longitude = ");DebugSerial.println(Save_Data.longitude);DebugSerial.print("Save_Data.E_W = ");DebugSerial.println(Save_Data.E_W);}else{DebugSerial.println("GPS DATA is not usefull!");}}
}void parseGpsBuffer()
{char *subString;char *subStringNext;if (Save_Data.isGetData){Save_Data.isGetData = false;DebugSerial.println("**************");DebugSerial.println(Save_Data.GPS_Buffer);for (int i = 0 ; i <= 6 ; i++){if (i == 0){if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)errorLog(1);    //解析错误}else{subString++;if ((subStringNext = strstr(subString, ",")) != NULL){char usefullBuffer[2]; switch(i){case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break;   //获取UTC时间case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break;   //获取UTC时间case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break;  //获取纬度信息case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break;   //获取N/Scase 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break; //获取纬度信息case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break;   //获取E/Wdefault:break;}subString = subStringNext;Save_Data.isParseData = true;if(usefullBuffer[0] == 'A')Save_Data.isUsefull = true;else if(usefullBuffer[0] == 'V')Save_Data.isUsefull = false;}else{errorLog(2);    //解析错误}}}}
}void gpsRead() {while (GpsSerial.available()){gpsRxBuffer[ii++] = GpsSerial.read();if (ii == gpsRxBufferLength)clrGpsRxBuffer();}char* GPS_BufferHead;char* GPS_BufferTail;if ((GPS_BufferHead = strstr(gpsRxBuffer, "$GPRMC,")) != NULL || (GPS_BufferHead = strstr(gpsRxBuffer, "$GNRMC,")) != NULL ){if (((GPS_BufferTail = strstr(GPS_BufferHead, "\r\n")) != NULL) && (GPS_BufferTail > GPS_BufferHead)){memcpy(Save_Data.GPS_Buffer, GPS_BufferHead, GPS_BufferTail - GPS_BufferHead);Save_Data.isGetData = true;clrGpsRxBuffer();}}
}void clrGpsRxBuffer(void)
{memset(gpsRxBuffer, 0, gpsRxBufferLength);      //清空ii = 0;
}

传感器——ATGM332D 北斗定位模块相关推荐

  1. 车载GPS/北斗定位模块罕见功能

    GPS定位导航功能,相信大家都或多或少有一定了解了,对于车载导航定位什么的也都了然于心,只是,安装一块GPS/北斗定位模块只能定位.导航貌似有点浪费,功能有些单样了. 其实,GPS/北斗定位模块的功能 ...

  2. 智能交通应用GPS北斗定位模块

    智能手机,智能穿戴,智能家居-都是近几年的潮流话题,科技的发展,我们的生活也越来越智能.衣.食.住.行,是我们生活不可或缺的,到底出行是怎样智能的呢. 公交APP一出,立刻得到了我们的"公交 ...

  3. GPS北斗定位模块如何应用于智慧农业

    智慧农业的推行是建立与信息数字化与物联网感知设备的基础上,利用GPS.地理信息系统.遥感.物联网等高新技术提升农业生产经营,节约成本的,具体表现在: 1, 农机运输与导航 在运输或收割的农业机械上安装 ...

  4. 车贷行业配备GPS北斗定位模块的意义

    汽车,因为其便捷的交通属性而广泛使用,汽车贷款行业也迎来了发展高峰,对于汽车贷款企业来说,要尽量保证贷款购买汽车的安全和客户信贷风险都在管控之内,这就不可缺少定位功能的帮助. 车贷的风控管理分为两个方 ...

  5. GPS北斗定位模块如何购买到好用的

    内卷,在我国似乎体现在了每一行业,哪怕只是小小的GPS北斗定位模块,产品类型都有上百上千种,哪怕是同一个厂家生产的也有N多不同型号,如何选购就能了个问题. 要想选择性价比和价格都满足的定位模块,需要从 ...

  6. 北斗定位模块成就智慧物流

    尽管今年双十一双十二热度下降,没有获得大家广泛关注,但这并不代表网购没有前途,网购.快递早已与我们生活深度绑定了,这一经济活动的进行与物流.运输网络等不无关系. 传统物流运输模式存在着很多问题,如分散 ...

  7. 物流信息管理需要借助GPS北斗定位模块

    电商网购的便捷,相信大家都深有体会,这受益于互联网和通信技术的发展进步,也是物流行业发展的黄金时期.在现代物流风生水起的表象下,隐藏着物流企业缺乏对货物的实时定位跟踪.车辆空载率高.协调不畅.物流成本 ...

  8. 北斗定位模块对于电力行业有什么用

    电,早已与生活深度融合,我们无法想象停电会对生活工作带来什么样的不便,而北斗定位模块与电力行业貌似是风马牛不相及的两个行业,很难想象两者会产生怎样的火花? 授时功能 在电力系统时间同步方面存在三大难题 ...

  9. 四种常见的GPS北斗定位模块问题及解决办法

    GPS北斗定位模块使用上大多需要配置和设置下的,因此出现应用方面的问题也是可以理解的,下面罗列几项常见的使用问题及解决办法: 1. 在家或个别位置搜不到信号,定位模块靠直接接收卫星信号工作,可能是其他 ...

最新文章

  1. 两栏布局,三栏布局,等高布局,流式布局
  2. javax.xml.ws.webserviceexception class do not have a property of the name
  3. requirednew基于xml配置日志不回滚_Mybatis 系列 4:引入日志框架
  4. mysql使用jpa仓储查询报错_Jpa自动查询报错
  5. ssh解决root_unlock_time问题
  6. ionic4 引入外部字体ttf
  7. wenbao与最短路(Floyd)
  8. 【UIKit】UITableView 5
  9. 关于DynamipsGUI
  10. bean的生命周期(最全最细讲解)
  11. 计算机培训excel的制作,绵阳电脑excel表格制作教程
  12. C# vb .net实现胶片效果滤镜
  13. Android Emulator has terminated
  14. mysql nemesis后缀,YOUR FILES ARE ENCRYPTED
  15. <<算法很美>>——(七)——DFS典题(二):数独游戏
  16. Dobot的一些理解
  17. 淘宝排名查询接口,关键词排名api,淘宝商品排名查询api,淘宝关键词搜索查询接口
  18. imx6d overlay视频应用程序-mxc_v4l2_overlay分析
  19. 即将开班「中国图象图形学学会」前沿讲习班第2期——智能驾驶与机器视觉
  20. PR2018入门教程02-转换特效学习

热门文章

  1. AD7606时序分析与verilog HDL实现
  2. leetcode分类刷题笔记
  3. 张赐荣 | 安装版软件和绿色版软件究竟有什么区别?
  4. Mac和Deepin共享键盘鼠标Synergy
  5. SyntaxError: Non-ASCII character ‘\xe2‘ in file
  6. java毕业设计基于VUE的个人记账管理系统mybatis+源码+调试部署+系统+数据库+lw
  7. 给知网没有书签的pdf文件添加书签(利用python解析txt文件内容并为pdf添加目录)
  8. python 秒杀 app_Python版:实现双十一秒杀,防止超限
  9. 电脑安装有WPS和OFFICE时,将office设置为默认打开软件
  10. Python生成exe文件的方法