文章目录

  • 0.引言
  • 1.GPS模块说明
  • 2.接调试助手测试GPS模块接收数据
  • 3.代码编写
  • 4.功能演示

0.引言

  NEO-6M/7M GPS模块,具有高灵敏度、低功耗、小型化、高追踪灵敏度,大大扩大了其定位的覆盖面,在普通GPS接收模块不能定位的地方,如狭窄都市天空下、密集的丛林环境,NEO-6M都能高精度定位。模块的高灵敏度、小静态漂移、低功耗及轻巧的体积,适用于车载、手持设备如PDA,车辆监控、手机、摄像机及其他移动定位系统的应用,是GPS产品应用的好选择。内嵌在使用GPS服务的智慧型手机、平板电脑、PND、DVR、可携式装置,测量设备,人员定位管理,测速设备,授时设备,交车跟踪定位、出租车跟踪定位、公司车辆跟踪定位、物流车辆跟踪定位、汽车故障检测、汽车油量检测、汽车物联网、挖掘机定位等等。本文在【Arduino如何进行开发?】基础上,借鉴现有网络资料,阐述Arduino如何连接GPS模块。

1.GPS模块说明

  
  GPS模块情况:
    NEO-7M GPS模块。PPS指示灯(即PPS引脚),在默认条件下(没经过程序设置),有2个状态:常亮,表示模块已开始工作,但还未实现定位;闪烁(100ms灭,900ms亮),表示模块已经定位成功。
  

  引脚说明:
    “VCC”:接Arduino的5V
    “GND”:接Arduino的GND
    “TXD”:本文接Arduino的D10
    “RXD”:本文接Arduino的D11
    “PPS”:不接

2.接调试助手测试GPS模块接收数据

  

3.代码编写

  GPS_lib.ino

#include <SoftwareSerial.h>String data="";
int mark = 0;
boolean Mark_Start=false;
boolean valid=false;
String GGAUTCtime,GGAlatitude,GGAlongitude,GPStatus,SatelliteNum,HDOPfactor,Height,
PositionValid,RMCUTCtime,RMClatitude,RMClongitude,Speed,Direction,Date,Declination,Mode;
SoftwareSerial Serial1(10, 11); // RX, TX  void setup(){  Serial.begin(38400);  Serial1.begin(9600);  delay(1000);
}  void loop(){  while (Serial1.available()> 0){  if(Mark_Start){  data=reader();  Serial.println(data);  if(data.equals("GPGGA")){  //Serial.println(1);  GGAUTCtime=reader();  GGAlatitude=reader();  GGAlatitude+=reader();  GGAlongitude=reader();  GGAlongitude+=reader();  GPStatus=reader();  SatelliteNum=reader();  HDOPfactor=reader();  Height=reader();  Mark_Start=false;  valid=true;  data="";  }  else if(data.equals("GPGSA")){  Serial.println(2);  Mark_Start=false;  data="";  }  else if(data.equals("GPGSV")){  Serial.println(3);  Mark_Start=false;  data="";  }  else if(data.equals("GPRMC")){  //Serial.println(4);  RMCUTCtime=reader();  PositionValid=reader();  RMClatitude=reader();  RMClatitude+=reader();  RMClongitude=reader();  RMClongitude+=reader();  Speed=reader();  Direction=reader();  Date=reader();  Declination=reader();  Declination+=reader();  Mode=reader();  valid=true;  Mark_Start=false;  data="";  }  else if(data.equals("GPVTG")){  Serial.println(5);  Mark_Start=false;  data="";  }  else{  Serial.println(6);  Mark_Start=false;  data="";  }  }  if(valid){  if(PositionValid=="A"){  Serial.println("Position Valid");  }  else{  Serial.println("Your position is not valid.");  }  Serial.print("Date:");//日期  Serial.println(Date);  Serial.print("UTCtime:");//世界协调时间  Serial.print(RMCUTCtime);  Serial.print("   ");  Serial.println(GGAUTCtime);  Serial.print("Latitude:");//纬度  Serial.print(RMClatitude);  Serial.print("   ");  Serial.println(GGAlatitude);  Serial.print("Longitude:");//经度  Serial.print(RMClongitude);  Serial.print("   ");  Serial.println(GGAlongitude);  Serial.print("GPStatus:");//GP地位  Serial.println(GPStatus);  Serial.print("SatelliteNum:");//卫星数  Serial.println(SatelliteNum);  Serial.print("HDOPfactor:");  Serial.println(HDOPfactor);  Serial.print("Height:");//高度  Serial.println(Height);  Serial.print("Speed:");//速度  Serial.println(Speed);  Serial.print("Direction:");//方向  Serial.println(Direction);  Serial.print("Declination:");//赤纬  Serial.println(Declination);  Serial.print("Mode:");//模式  Serial.println(Mode);  valid=false;  }  if(Serial1.find("$")){  Serial.println("capture");  Mark_Start=true;  }  }
}  String reader(){  String value="";  int temp;
startover:  while (Serial1.available() > 0){  delay(2);  temp=Serial1.read();  if((temp==',')||(temp=='*')){  if(value.length()){  //Serial.println("meaningful message");  return value;  }  else {  //Serial.println("empty");  return "";  }  }  else if(temp=='$'){  //Serial.println("failure");  Mark_Start=false;  }  else{  //Serial.println("add");  value+=char(temp);  }  }  while (!(Serial1.available()>0)){  }  goto startover;
}

4.功能演示

  

参考资料:
[1] cacrle. Arduino如何进行开发?; 2023-03-28 [accessed 2023-04-15].
[2] liwenkangs. 【Arduino】GPS 定位模块的应用; 2021-11-30 [accessed 2023-04-15].
[3] shasuping. STM32F1 GPS模块NEO-7M; 2019-01-26 [accessed 2023-04-15].
[4] weixin_38691194. NEO-7M GPS模块应用说明-附STM32程序-电路方案 ; 2021-04-21 [accessed 2023-04-15].
[5] songhyong. NEO-7M中文版.pdf; 2020-06-12 [accessed 2023-04-15].
[6] SKCQTGZX. NEO-7M(GPS)模块软硬件开发资料包括PD原理图+AD集成封装+NEO-7M软件工具及设计
参考资料.zip ; 2021-09-06 [accessed 2023-04-15].
[7] Maximilian Gerhardt. ‘Serial1’ was not declared in this scope; 2018-03-06 [accessed 2023-04-15].

Arduino开发之如何连接GPS模块?相关推荐

  1. Arduino开发之如何连接继电器模块?

    文章目录 0.引言 1.继电器模块和交流同步电机说明 2.编写代码 0.引言   继电器的作用是扩大控制范围:例如,多触点继电器控制信号达到某一定值时,可以按触点组的不同形式,同时换接.开断.接通多路 ...

  2. python gps模块_树莓派连接GPS模块

    一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的G ...

  3. 树莓派连接GPS模块,python获取GPS数据

    文章主要内容: 模块之间的连接 树莓派识别gps模块 使用Python语言获取GPS数据 1.连线 ---- 使用 USB转TTL转换器,将树莓派和GPS模块连接 需要的设备:gps模块,gps天线, ...

  4. 如何使用Arduino开发板和DS1307 RTC模块制作智能提醒器

    在许多电子项目中,必须根据时间或日期运行操作.当系统关闭时,不应停止计算时间和日期.为此,使用实时时钟(RTC)模块.在本篇文章中,您将学习如何使用RTC DS1307模块和Arduino开发板制作一 ...

  5. Android 驱动和系统开发 2. 解析模拟器GPS模块 (原创)

    好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀. 好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了Android模拟器的gps模 ...

  6. Android 驱动和系统开发 2. 解析模拟器GPS模块

    好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀. 好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了android模拟器的gps模 ...

  7. Arduino 开发ESP8266(ESP12F)模块

    ①ESP12F模块的硬件说明如上图所示,其他引脚均引出. ②准备好硬件之后就是要下载Arduino IDE,目前版本为2.0.3,下载地址为:https://www.arduino.cc/en/sof ...

  8. Arduino开发之如何连接步进电机?

    文章目录 0.引言 1.步进电机说明 2.编写代码 3.转速测试结果分析 0.引言   某项目需要一个小电机转动装置进行测量,该装置本身可以测量角度(姿态),不需要电机的精确角度,但需要对速度要有控制 ...

  9. Arduino模块学习笔记(一)—GPS模块的使用

    Arduino模块学习笔记(一)--GSP模块的使用 文章目录 Arduino模块学习笔记(一)--GSP模块的使用 所需组件 一.模块使用介绍 1.GPS模块(在室内时,一般获取不到位置信息) 2. ...

最新文章

  1. Cosmos VS Palodat
  2. 中国杀菌剂行业需求趋势与投资战略规划研究报告2021-2027年版
  3. 取消计算机关机设置,旧驱动程序教您如何设置和取消计算机的自动关机命令
  4. 如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
  5. android 内存播放视频播放器,视频流媒体播放器EasyPlayer-RTSP安卓版在RK3399上运行APP崩溃问题...
  6. 大型网站技术架构:核心原理与案例分析 mobi_大数据技术经典学习路线
  7. Pytorch-NLU,一个中文文本分类、序列标注(实体识别、分词、词性标注)的极简工具包,基于pytorch与tramsforers
  8. 新手初用mybatis
  9. 计算机辅助翻译实践语料库,《计算机辅助翻译实践》
  10. html如何做站内搜索,站内搜索-Search.html
  11. 【python】类型约束(类型提示的作用)
  12. 从冯诺伊曼结构看AI
  13. java正则匹配下划线_正则表达式(匹配英文、中文、数字、下划线)
  14. 各大CMS采集资源站合集
  15. IT(软件)企业降低运营成本的方式
  16. 总在说双亲委派,但双亲委派是什么,双亲委派和类加载的关系,简单讲解
  17. Debian 一些基础操作
  18. PHPOffice / PhpSpreadsheet导入大量数据导致内存溢出
  19. oracle utl inaddr,Oracle包utl_inaddr
  20. 写得很好很真实的一篇高考作文居然得了0分

热门文章

  1. 国际化与本地化(i18n与l10n)
  2. C#对.CSV格式的文件--逗号分隔值文件 的读写操作及上传ftp服务器操作方法总结(转)
  3. 常用的SpringBoot时间格式化
  4. Java垃圾回收器Garbage Collection是什么?
  5. (转)Unity 3D中的无限大地形的生成和调度
  6. win11什么时候发布的_科技资讯:一加8t什么时候发布
  7. 写给未来跟我结婚的你,今后咱俩要干的小坏事!
  8. Jenkins Role-based用户鉴权插件
  9. Moba连接好虚拟机后怎么创建文件夹和解压配置jdk、hadoop环境变量
  10. 就大学毕业典礼的演讲所感触的