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

这篇具有很好参考价值的文章主要介绍了Arduino开发之如何连接GPS模块?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.引言

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

1.GPS模块说明

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

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

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

  本文使用野火多功能调试助手软件,该软件可以从浏览器或者CSDN中搜索下载。
  Arduino开发之如何连接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.功能演示

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

参考资料:
[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].文章来源地址https://www.toymoban.com/news/detail-508374.html

到了这里,关于Arduino开发之如何连接GPS模块?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    Arduino UNO开发板 Arduino IDE环境 数据线 NEO-6M GPS模块(+配套的陶瓷天线 可选) 1.GPS模块(在室内时,一般获取不到位置信息) 常见的GPS模块的参数都差不多,除了有些个别输出格式不同。 ● 接口:RS232 TTL ● 电源:3.3V至5V均可(内置降压模块) ● 默认波特率:9600 bps(有些可

    2023年04月16日
    浏览(24)
  • 红外传感器模块与 Arduino 连接

    原文地址 Arduino 红外传感器接口 红外**接近传感器或红外传感器它发射红外光以感知周围环境, 并可 用于检测物体的运动。由于这是一个无源传感器,它只能测量红外辐射。如果您曾经尝试过设计避障机器人或任何其他基于接近检测的系统,那么您很可能已经知道这个模块

    2023年04月21日
    浏览(36)
  • STM32GPS定位 NEO_6M

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言: 一、使用HAL库生成代码          1、HAL库设置 二、程序编写 1.串口 2.gps.c        GPS.h 3、串口1开启接收 4、main.c 总结 使用stm3f103c8t6, GPS是NEO-6M                     选择使用的芯片  

    2023年04月08日
    浏览(35)
  • Arduino uno 通过esp8266WIFI模块连接onenet平台(TCP协议)(1接线、代码篇)

    1.可以用esp8266开发板,也可以用esp01s,有引脚说明(左)或esp01(右)  ESP8266Node-MCU(ESP-12E) esp01s接线如下:  esp01接线: 2.代码1:设置连接方式,WiFi账号密码,tcp协议等 打开串口监视器(右上角放大镜图标) 等待显示“ok ready” 输入AT 返回ok 输入AT+RST 返回 ok 一长段乱码

    2024年02月04日
    浏览(41)
  • ESP32 Arduino开发 网络连接

    目录 ESP32 Arduino开发 网络连接 1. 编写相关程序 1.1. 引入头文件 1.2. 调用WiFi连接函数 1.3. 检测网络连接状态 1.4. 连接超时处理 2. STA模式与AP模式 WiFi.h 并不是第三方的库,所以不需要先加载库 WiFi连接函数需要2个参数:网络名称以及网络密码,在 setup() 函数之外先对参数进行定

    2024年01月16日
    浏览(33)
  • 【雕爷学编程】Arduino动手做(172)---WeMos D1开发板模块4

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)

    2024年02月15日
    浏览(27)
  • Arduino 合宙 ESP32 S3 + OV2640 实现低成本SD存储卡相机(ESP32连接SD模块引脚)

    合宙ESP32 S3 板载16M flash,8m psram和一个FPC相机接口,价格却不到30元,无疑比价格将近50元的第三方ESP32 S3和将近30的ESP32 Cam更具性价比。 但是虽然板载FPC,由于接口冲突,导致相机与psram不能同时开启,作为ESP32 Cam的替代品来看,还缺少了板载SD卡,而且作为一块发布不久的开发

    2024年02月04日
    浏览(38)
  • Arduino| IDE下载、安装和设置以及开发板的连接

    第一步 :进入Arduino官网https://www.arduino.cc。 第二步 :选择导航栏的Software,然后找到自己要的安装包。因为我的系统是Win 10,所以后续我以Win 10安装为例。但如果是Win7 8老点的版本,需要页面往下拉,找到1.8.X版本的IDE。 第三步:如果有能力捐赠Arduino官方,可以选择捐赠并

    2024年04月27日
    浏览(36)
  • arduino学习之开发板连接电脑端口不识别或开发软件端口呈现灰色

    现象:arduino UNO开发板连接电脑后,电脑未识别出端口 解决方案:更换串口线,建议使用带有滤波环的串口线 此时电脑可正常识别开发板 1、安装驱动精灵等驱动检查软件进行自动补全驱动 2、手动下载驱动进行安装 上述方法的具体操作步骤可参考下述链接(点击蓝色字体即

    2024年02月12日
    浏览(63)
  • esp32在Arduino环境下“不存在或开发板没有连接问题

    程序编译完出现Connecting…时 esptool.py v3.3 Serial port COM8 Connecting… 这时出错,显示 选择的串口 For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html 不存在或开发板没有连接 ESP32开发板在使用串口烧录程序的时候需要进入烧录模式,也就是需要将默

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包