Arduino开发之如何连接GPS模块?

news2025/1/21 2:49:42

文章目录

  • 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].

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译原理考试大题分析【太原理工大学】

有些基本公式可以看这里&#xff0c;大题内容请以本篇为准&#xff01;https://blog.csdn.net/m0_52861684/article/details/130071191?spm1001.2014.3001.5501 之前说错了&#xff0c;考试题型没有简答题和填空题&#xff0c;只有十个选择题是 20 分&#xff0c;其余全是大题…

ESP32设备驱动-VEML6075紫外线(UV)光传感器驱动

VEML6075紫外线(UV)光传感器驱动 文章目录 VEML6075紫外线(UV)光传感器驱动1、VEML6075介绍2、硬件准备3、软件准备4、驱动实现1、VEML6075介绍 VEML6075 可感应 UVA 和 UVB 光,并使用 CMOS 工艺将光电二极管、放大器和模拟/数字电路集成到单个芯片中。 应用 UV 传感器时,它…

ChatGPT和GPT-4带你选笔记本电脑

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

最近ChatGPT封号太严重了,这里是解封攻略步骤(建议收藏)

这个周末&#xff0c;先是意大利暂时封杀ChatGPT&#xff0c;限制OpenAI处理本国用户信息。 接着&#xff0c;据韩国媒体报道&#xff0c;三星导入ChatGPT不到20天&#xff0c;便曝出机密资料外泄。 还没结束&#xff0c;又有大量网友发现ChatGPT目前停止注册&#xff0c;开始…

【vue】vue中下载文件的方法

文章目录1. 下载后端返回文件1.1 后端为post请求返回二进制流文件URL.createObjectURLFileReader1.2 后端直接返回get请求文件2. 下载本地文件1. 下载后端返回文件 1.1 后端为post请求返回二进制流文件 Blob Blob对象标识一个不可变、原始数据的类文件对象。Blob表示的不一定…

RabbitMQ( 发布订阅模式 ==> FanoutExchange )

本章目录&#xff1a; 何为发布订阅模式FanoutExchange具体使用一、何为发布订阅模式 在上一篇文章中&#xff0c;我们创建了Work Queue并且发送任务&#xff0c;在Work Queue中&#xff0c;每个任务只会被一个消费者消费&#xff0c;任务消费后就被清除了。 而在本篇中&…

0202心跳和服务续约源码解析-nacos2.x-微服务架构

文章目录1 客户端心跳任务2 服务端处理2.1 服务注册时开启客户端心跳检查2.2 客户端发送心跳任务续约2.3 服务实例移除2.4 心跳任务闭环结语1 客户端心跳任务 在上一篇文章0201服务注册源码解析-nacos2.x-微服务架构分析客户端服务注册的时候&#xff0c;流程在NacosNamingSer…

重装系统下载网址

[置顶]无论会不会安装系统&#xff0c;都一定会需要&#xff0c;觉得内容不错欢迎一键三连哦 稳定 | 方便 | 好用 1、MSDN 用过最简单好用&#xff0c;下载不限速&#xff0c;支持迅雷、IDM多种下载方式 https://www.xitongku.com 2、Windows系统下载仓储站 为小白重装系统提供…

KIOPTRIX: LEVEL 4通关详解

环境配置 vulnhub上下载的文件没有vmx 去3的文件里偷一个 记事本打开把所有Kioptrix3_vmware改成Kioptrix4_vmware 然后网卡地址随便改一下 打开后会提示找不到虚拟机,手动选一下就行了 信息收集 漏洞发现 web一上去就是一个登录框 扫路径发现database.sql 但是密码是错的…

高通开发系列 - linux arm64 toolchain交叉编译器编译错误

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述下载aarch64交叉编译器编译使能编译环境使能defconfig编译问题1:address-of-packed-member问题2:attribute-alias=问题3:array…

Kubernetes 笔记(14)— 滚动更新、定义应用版本、实现应用更新、管理应用更新、添加更新描述

滚动更新&#xff0c;使用 kubectl rollout 实现用户无感知的应用升级和降级。 1. 定义应用版本 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 对象&#xff0c;而是两个命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;当然它们也要搭配部署应用所需要…

人工智能作业之遗传算法

遗传算法1.遗传算法定义2.相关术语3.遗传算法的主要步骤4.遗传算法的参数设计原则5.代码实现1.遗传算法定义 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法&am…

java 婚恋交友网站Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 婚恋交友网站是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

IMX6ULL学习笔记(22)——eLCDIF接口使用(TFT-LCD屏显示)

一、TFT-LCD简介 TFT-LCD&#xff08;Thin Film Transistor-Liquid Crystal Display&#xff09; 即薄膜晶体管液晶显示器。TFT-LCD 与无源 TN-LCD、 STN-LCD 的简单矩阵不同&#xff0c;它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管&#xff08;TFT&#xff09;&#…

智慧网点解决方案 | 助推银行“营销-销售-服务”一体化建设

传统网点的智慧化变革已成为新形势下银行创新业务服务模式与产品、优化客户体验、提质增效的一大阵地。如何在网点转型过程中充分发挥边缘计算等新技术的价值&#xff0c;引领行业数字化转型新趋势&#xff0c;成为银行业面临的共同课题。 在传统银行网点向智慧网点的转型过程…

基于Java+SpringBoot+vue的家具销售电商平台设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;300套&#xff09; 目录 一、效果演示 二、…

真00后整顿职场?公司新来了个00后卷王,3个月薪资干到20K.....

最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业。想要获得更好的待遇和机会&#xff0c;不断提升自己的技能栈成了测试老人迫在眉睫的问题。 不论是面试哪个级别的测试工程师&#xff0c;面试官都会问一句“会编程吗&#xff1f;有没有自动化测试…

Redis基础总结-redis简介

Redis基础Redis基础目标&#xff1a;1. Redis 简介1.1 NoSQL概念1.1.1 问题现象1.1.2 NoSQL的概念1.2 Redis概念1.2.1 redis概念1.2.2 redis的应用场景1.3 Redis 的下载与安装1.3.1 Redis 的下载与安装1.4 Redis服务器启动1.4.1 Redis服务器启动1.4.2 Redis客户端启动1.4.3 Red…

数字化转型迫在眉睫!药企如何应用AI技术加速创新?

导语 | 近年来&#xff0c;随着 AI 等技术的发展应用&#xff0c;数字化、智能化日渐成为各行各业转型升级的新兴力量&#xff0c;其与医药产业的融合创新也逐渐成为当前的新趋势&#xff0c;众多医药制造企业蓄势待发&#xff0c;搭乘数字化的快车&#xff0c;驶入高速发展的快…

论文笔记:Fully Convolutional Networks for Semantic Segmentation

摘要 卷积网络是产生特征层次结构的强大视觉模型。我们展示了卷积网络本身&#xff0c;经过端到端、像素到像素的训练&#xff0c;超过了语义分割的最新技术水平。我们的主要见解是构建“全卷积”网络&#xff0c;该网络接受任意大小的输入并通过有效的推理和学习产生相应大小…