电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>如何将GPS模块与Arduino连接

如何将GPS模块与Arduino连接

2022-10-21 | zip | 0.65 MB | 次下载 | 2积分

资料介绍

描述

一、GPS信息

什么是全球定位系统

全球定位系统 (GPS) 是一种基于卫星的导航系统,由至少 24 颗卫星组成。GPS 全天 24 小时在任何天气条件下工作,在世界任何地方工作,无需订阅费或设置费。

GPS的工作原理

GPS 卫星在精确的轨道上每天绕地球两次。每颗卫星都传输独特的信号和轨道参数,使 GPS 设备能够解码和计算卫星的精确位置。GPS 接收器使用此信息和三边测量来计算用户的确切位置。本质上,GPS 接收器通过接收发射信号所需的时间量来测量到每颗卫星的距离。通过更多卫星的距离测量,接收器可以确定用户的位置并显示它。

要计算您的二维位置(纬度和经度)并跟踪运动,GPS 接收器必须锁定至少 3 颗卫星的信号。在视野中有 4 颗或更多卫星的情况下,接收器可以确定您的 3-D 位置(纬度、经度和高度)。通常,GPS 接收器将跟踪 8 颗或更多卫星,但这取决于一天中的时间和您在地球上的位置。

确定您的位置后,GPS 单元可以计算其他信息,例如:

  • 速度
  • 轴承
  • 追踪
  • 行程范围
  • 到目的地的距离

什么信号?

GPS 卫星至少传输 2 个低功率无线电信号。信号通过视线传播,这意味着它们将穿过云层、玻璃和塑料,但不会穿过大多数固体物体,例如建筑物和山脉。然而,现代接收器更敏感,通常可以跟踪房屋。

GPS 信号包含 3 种不同类型的信息:

  • 伪随机码是识别哪个卫星正在传输信息的 ID 码。您可以在设备的卫星页面上查看从哪些卫星接收信号。
  • 需要星历数据来确定卫星的位置,并提供有关卫星健康状况、当前日期和时间的重要信息。
  • 年历数据告诉 GPS 接收器,每颗 GPS 卫星在一天中的任何时间都应该在哪里,并显示该卫星和系统中所有其他卫星的轨道信息。

2. 下载并安装 GPS 所需的库以在 Arduino IDE 中工作

3.NEO-6M GPS模块

NEO-6M GPS模块它带有一个外部天线,不带有插头引脚。所以你需要焊接它。

 
  • NEO-6M GPS芯片

该模块的核心是 u-blox 的 NEO-6M GPS 芯片。它可以在 50 个通道上跟踪多达 22 颗卫星,并达到业界最高水平的灵敏度,即 -161 dB 跟踪,同时仅消耗 45mA 电源电流u-blox 6 定位引擎还拥有不到 1 秒的首次定位时间 (TTFF)。该芯片提供的最佳功能之一是省电模式 (PSM)。它可以通过选择性地打开和关闭接收器的某些部分来降低系统功耗。这将模块的功耗显着降低至仅 11mA,使其适用于 GPS 手表等对功率敏感的应用。NEO-6M GPS 芯片的必要数据引脚被拆分为“0.1” 间距接头。这包括通过 UART微控制器通信所需的引脚。

注意:- 模块支持波特率从 4800bps 到 230400bps,默认波特率为 9600。

 
pYYBAGNPRQ6AcfYoAAAVgFG_0xI234.png
 

 

位置固定 LED 指示灯

NEO-6M GPS 模块上有一个 LED,用于指示定位状态。它会根据它所处的状态以不同的速率闪烁

  • No Blinking ==> 表示正在搜索卫星
  • 每 1 秒闪烁一次- 表示已找到定位

 

 
poYBAGNPRRCAa0G_AAAVRAwnVQc828.png
 
  • 3.3V LDO 稳压器

NEO-6M 芯片的工作电压为 2.7 至 3.6V。但是,该模块配备了MICREL的MIC5205超低压差3V3稳压器。逻辑引脚也可以承受 5 伏电压,因此我们可以轻松地将其连接到 Arduino 或任何 5V 逻辑微控制器,而无需使用任何逻辑电平转换器

 
poYBAGNPRRKADJ7mAAAUeKQcSpI140.png
 

 

电池和 EEPROM

该模块配备一个 HK24C32 两线串行 EEPROM。它大小为4KB,通过I2C连接到NEO-6M芯片。模块还包含一个可充电纽扣电池,用作超级电容器

EEPROM 与电池一起有助于保留电池支持的 RAM (BBR)。BBR 包含时钟数据、最新位置数据(GNSS 或位数据)和模块配置。但它并不意味着永久数据存储。

由于电池保留时钟和最后位置,首次定位时间 (TTFF) 显着减少到 1 秒。这允许更快的位置锁定。

如果没有电池,GPS 总是冷启动,因此初始 GPS 锁定需要更多时间。通电时电池会自动充电,并且可以在没有电源的情况下保持数据长达两周。

 
poYBAGNPRRSAZePyAAAfz5Vv4Ns841.png
 

引脚排列

 

 
poYBAGNPRRaAJGGtAABBs0CWijY382.png
 
  • GND 是接地引脚,需要连接到 Arduino 上的 GND 引脚。
  • TxD(发送器)引脚用于串行通信。
  • RxD(接收器)引脚用于串行通信。
  • VCC 为模块供电。您可以直接将其连接到 Arduino 上的 5V 引脚。

阿杜诺

Arduino 是一个基于易于使用的硬件和软件的开源电子平台。Arduino 板能够读取输入——传感器上的光、按钮上的手指或 Twitter 消息——并将其转换为输出——激活电机、打开 LED、在线发布内容。您可以通过向板上的微控制器发送一组指令来告诉您的板该做什么。为此,您需要使用 Arduino 编程语言(基于 Wiring)和基于 Processing 的 Arduino 软件 (IDE)。

 
poYBAGNPRRiABWCVAAA3hTCGAeA592.png
 

引脚排列

 
pYYBAGNPRRuAEcEoAAIOgns0X5g862.png
 

引脚说明

Arduino Uno 是一款基于 8 位 ATmega328P 微控制器的微控制器板。除 ATmega328P 外,它还包括其他组件,如晶体振荡器、串行通信、稳压器等,以支持微控制器。Arduino Uno 有 14 个数字输入/输出引脚(其中 6 个可用作 PWM 输出)、6 个模拟输入引脚、一个 USB 连接、一个电源桶插孔、一个 ICSP 接头和一个复位按钮。

在 Arduino 编程中使用 pinMode()、digitalRead() 和 digitalWrite() 函数可以将 14 个数字输入/输出引脚用作输入或输出引脚。每个引脚工作电压为 5V,可提供或接收最大 40mA 的电流,并具有一个 20-50 KOhms 的内部上拉电阻,默认断开。在这 14 个引脚中,一些引脚具有如下所列的特定功能

  • 串行引脚 0 (Rx) 和 1 (Tx) ==> Rx 和 Tx 引脚用于接收和传输 TTL 串行数据。它们与相应的 ATmega328P USB 转 TTL 串行芯片相连。
  • 外部中断引脚 2 和 3 ==> 这些引脚可配置为在低值、上升沿或下降沿或值变化时触发中断。
  • PWM 引脚 3、5、6、9 和 11 ==> 这些引脚通过使用模拟写入()函数提供 8 位 PWM 输出。
  • SPI 引脚 10 (SS)、11 (MOSI)、12 (MISO) 和 13 (SCK) ==> 这些引脚用于 SPI 通信。
  • 内置 LED 引脚 13 ==> 此引脚与内置 LED 连接,当引脚 13 为高电平时 - LED 亮,当引脚 13 为低电平时,它关闭。

有 6 个模拟输入引脚,每个引脚提供 10 位分辨率,即 1024 个不同的值。它们的测量电压范围为 0 到 5 伏,但可以通过使用具有模拟 Reference() 功能的 AREF 引脚来增加此限制。

  • 模拟引脚 4 ( SDA ) 和引脚 5 ( SCA ) 也用于使用 Wire 库的 TWI 通信。
  • AREF ==> 用于通过analogReference() 函数为模拟输入提供参考电压。
  • 复位引脚==>将此引脚设为低电平,复位微控制器。

4. Arduino UNO与GPS模块的连接

将 UBLOX 的四个引脚连接到 Arduino,如下所示:

GPS模块==> Arduino

  • 接地 ==> 接地
  • TX ==> 数字引脚 (D3)
  • RX ==> 数字引脚 (D4)
  • VCC ==> 3.3 V

在这里,我建议您使用外部电源为 GPS 模块供电,因为 GPS 模块工作的最低功率要求是 3.3 V,而 Arduino 无法提供这么多的电压。

要提供电压,请使用多产的 USB TTL。

 
pYYBAGNPRR2ADuRnAAAW0FxDmWs220.png
 

我在使用带有模块的 GPS 天线时发现的另一件事是它在屋内没有接收到信号,所以我使用了这个天线。

要连接此天线,您必须使用连接器

 
poYBAGNPRR-AXX9zAAB0hE64Gi4628.png
 

5. JHD162a液晶显示器

 
pYYBAGNPRSKAbRPxAAAlXGYY1Bo915.png
 
  • 接地 ==> LCD 模块的接地引脚。
  • Pin2(Vcc) ==> LCD 模块的电源(+5V 电源提供给该引脚)
  • Pin3(VEE) ==>对比度调整引脚。这是通过将 10K 电位器的末端连接到 +5V 和接地,然后将滑块引脚连接到 VEE 引脚来完成的。VEE 引脚上的电压决定了对比度。正常设置在 0.4 和 0.9V 之间。
  • Pin4(RS) ==>寄存器选择引脚。JHD162A 有两个寄存器,即命令寄存器和数据寄存器。RS 引脚的逻辑高电平选择数据寄存器,RS 引脚的逻辑低电平选择命令寄存器。如果我们将 RS 引脚设为高电平并向数据线(DB0 到 DB7)提供一个输入,该输入将被视为显示在 LCD 屏幕上的数据。如果我们将 RS 引脚设为低电平并向数据线提供输入,那么这将被视为命令(要写入 LCD 控制器的命令——例如定位光标或清除屏幕或滚动)。
  • Pin5(R/W) ==>读/写模式。该引脚用于在读取和写入模式之间进行选择。该引脚的逻辑高电平激活读模式,该引脚的逻辑低电平激活写模式。
  • Pin6(E) ==>此引脚用于启用 LCD 模块。此引脚上的 HIGH 到 LOW 信号将启用模块。
  • Pin7(DB0) 到 Pin14(DB7) ==>这些是数据引脚。命令和数据通过这些引脚馈送到 LCD 模块。
  • Pin15(LED+) ==>背光 LED 的阳极。在 5V 电压下工作时,应在此引脚上串联一个 560 欧姆的电阻。在基于 arduino 的项目中,背光 LED 可以由 arduino 板上的 3.3V 电源供电。
  • Pin16(LED-) ==>背光 LED 的阴极。

6. Arduino UNO与JHD162a LCD的连接

LCD ==> Arduino

  • VSS ==> 接地
  • VCC ==> 5V
  • VEE ==> 10K 电阻
  • RS ==> A0(模拟引脚)
  • 读/写 ==> 接地
  • E ==> A1
  • D4 ==> A2
  • D5 ==> A3
  • D6 ==> A4
  • D7 ==> A5
  • LED+ ==> VCC
  • LED- ==> GND

编程

Arduino IDE

#include  
#include  
#include  
float lat = 28.5458,lon = 77.1703; // create variable for latitude and longitude object  
SoftwareSerial gpsSerial(3,4);//rx,tx 
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); 
TinyGPS gps; // create gps object 
void setup(){ 
Serial.begin(9600); // connect serial 
//Serial.println("The GPS Received Signal:"); 
gpsSerial.begin(9600); // connect gps sensor 
lcd.begin(16,2); 
} 
void loop(){ 
  while(gpsSerial.available()){ // check for gps data 
  if(gps.encode(gpsSerial.read()))// encode gps data 
  {  
  gps.f_get_position(&lat,&lon); // get latitude and longitude 
  // display position 
  lcd.clear(); 
  lcd.setCursor(1,0); 
  lcd.print("GPS Signal"); 
  //Serial.print("Position: "); 
  //Serial.print("Latitude:"); 
  //Serial.print(lat,6); 
  //Serial.print(";"); 
  //Serial.print("Longitude:"); 
  //Serial.println(lon,6);  
  lcd.setCursor(1,0); 
  lcd.print("LAT:"); 
  lcd.setCursor(5,0); 
  lcd.print(lat); 
  //Serial.print(lat); 
  //Serial.print(" "); 
  lcd.setCursor(0,1); 
  lcd.print(",LON:"); 
  lcd.setCursor(5,1); 
  lcd.print(lon); 
 } 
} 
String latitude = String(lat,6); 
  String longitude = String(lon,6); 
Serial.println(latitude+";"+longitude); 
delay(1000); 
} 

 

7. 结果

 
poYBAGNPRSSAf91bAACFTEePaCA904.png
 

 

 
pYYBAGNPRSaAd62QAACPuWw1gvI879.png
 

视频

 


gps Arduino
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1矽力杰 Silergy SY7215A 同步升压调节器 规格书 Datasheet 佰祥电子
  2. 1.12 MB  |  5次下载  |  免费
  3. 2HT81696H 内置升压的30W立体声D类音频功放数据手册
  4. 1.21 MB   |  1次下载  |  免费
  5. 3HTA6863 3W超低噪声超低功耗单声道D类音频功率放大器数据手册
  6. 0.87 MB   |  次下载  |  免费
  7. 4南芯 Southchip SC8802C 充电控制器 规格书 Datasheet 佰祥电子
  8. 88.16 KB  |  次下载  |  免费
  9. 5矽力杰 Silergy SY7065 同步升压转换器 规格书 Datasheet 佰祥电子
  10. 910.67 KB  |  次下载  |  免费
  11. 6矽力杰 Silergy SY7066 同步升压转换器 规格书 Datasheet 佰祥电子
  12. 989.14 KB  |  次下载  |  免费
  13. 7WD6208A产品规格书
  14. 631.24 KB  |  次下载  |  免费
  15. 8NB685 26 V,12 A,低静态电流,大电流 同步降压变换器数据手册
  16. 1.64 MB   |  次下载  |  2 积分

本月

  1. 1EMC PCB设计总结
  2. 0.33 MB   |  12次下载  |  免费
  3. 2PD取电芯片 ECP5702规格书
  4. 0.88 MB   |  5次下载  |  免费
  5. 3矽力杰 Silergy SY7215A 同步升压调节器 规格书 Datasheet 佰祥电子
  6. 1.12 MB  |  5次下载  |  免费
  7. 4氮化镓GaN FET/GaN HEMT 功率驱动电路选型表
  8. 0.10 MB   |  3次下载  |  免费
  9. 5PD取电芯片,可取5/9/12/15/20V电压ECP5702数据手册
  10. 0.88 MB   |  3次下载  |  免费
  11. 6SY50655 用于高输入电压应用的伪固定频率SSR反激式稳压器英文资料
  12. 1.01 MB   |  3次下载  |  免费
  13. 7怎么为半导体测试仪选择精密放大器
  14. 0.65 MB   |  2次下载  |  免费
  15. 8SY52341 次级侧同步整流英文手册
  16. 0.94 MB   |  2次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233095次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191469次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183360次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81606次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73832次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分