Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】168种传感器模块系列实验(75)--- 6MV2飞控GPS模块

[复制链接]
 楼主| 发表于 2022-5-23 09:10 | 显示全部楼层
2、NEO-6M特性
1)u-blox 6 定位引擎:
o 跟踪灵敏度 –162dBm ,冷启动灵敏度–148 dBm
o 更快的捕获速度,带有 AssistNow Autonomous功能
o 可配置的电源管理
o GPS/SBAS 混合型引擎(WAAS、EGNOS、MSAS)
o 抗干扰技术
2)易于与 u-blox 无线模块集成
3)A-GPS:AssistNow Online 和 AssistNow Offline 服务,符合 OMA SUPL 规范
4)向后兼容(硬件和固件);可从 NEO-5 系列或NEO-4S 轻松迁移
5)采用可靠的 LCC 封装,制造性价比高
6)工作温度范围:–40° C 至 85° C

8.6-11.jpg

8.6-12.jpg

 楼主| 发表于 2022-5-23 09:12 | 显示全部楼层
3、精确度
定位2.5MCEP
SBAS 2.0mCEP
捕获冷启动29s
温启动27s
辅助启动<3s
热启动<1s

灵敏度
捕获-162dBm
跟踪-147dBm
冷启动-146dBm

多径抑制
智能化多径检测与抑制
A-GPS
支持AssistNow Online及AssistNow Offline

运行限制
速度515m/s(1000节)
串口1个UART接口
1个USB V2.0,全速12Mbit/s
1个DDC接口
1个SPI接口
串口和I/O电压3V电平
协议NMEA、UBX二进制
数字I/O接口可配置的时间脉冲
1个EXTINT输入接口
电压2.7V – 3.6V
功耗<80mW @ 1.8V 
120mW @ 3.0V
备用电源1.3V -4.8V有 30uA
天线类型有源与无源
运行温度-40℃- +85℃  
存储温度-40℃- +85℃




 楼主| 发表于 2022-5-23 09:15 | 显示全部楼层
二、GPS陶瓷有源天线
1、GPS就是通过接受卫星信号,进行定位或者导航的终端。而接收信号就必须用到天线。 GPS卫星信号分为L1和L2,频率分别为1575.42MHZ和1228MHZ,其中L1为开放的民用信号,信号为圆形极化。信号强度为-166dBW左右,属于比较弱的信号。 这些特点决定了要为GPS信号的接收准备专门的天线。GPS天线是由接收天线和前置放大器两个部件组成。GPS接收天线的作用,是将卫星来的无线电信号的电磁波能量变换成接收机电子器件可摄取应用的电流。绝大部分内置GPS天线为右旋极化陶瓷介质,其组成部分为:陶瓷天线、低噪音信号模块、线缆、接头。

8.6-13.jpg

 楼主| 发表于 2022-5-23 09:17 | 显示全部楼层
2、GPS天线工作原理
1)陶瓷片:陶瓷粉末的好坏以及烧结工艺直接影响它的性能。现市面使用的陶瓷片主要是25×25、18×18、15×15、12×12。陶瓷片面积越大,介电常数越大,其共振频率越高,接受效果越好。陶瓷片大多是正方形设计,是为了保证在XY方向上共振基本一致,从而达到均匀收星的效果。
2)银层:陶瓷天线表面银层可以影响天线共振频率。理想的GPS陶瓷片频点准确落在1575.42MHz,但天线频点非常容易受到周边环境影响,特别是装配在整机内,必须通过调整银面涂层外形,来调节频点重新保持在1575.42MHz。
3)馈点:陶瓷天线通过馈点收集共振信号并发送至后端。由于天线阻抗匹配的原因,馈点一般不是在天线的正中央,而是在XY方向上做微小调整。这样的阻抗匹配方法简单而且没有增加成本。仅在单轴方向上移动称为单偏天线,在两轴均做移动称为双偏。
4)放大器:承载陶瓷天线的PCB形状及面积。由于GPS接收信号有触地反弹的特性,当背景是7cm×7cm无间断大地时,天线的效能可以发挥到极致。虽然受外观结构等因素制约,但尽量保持相当的面积且形状均匀。放大器增益的选择必须配合后端LNA增益。Sirf的GSC3F要求信号输入前总增益不得超过29dB,否则信号过饱和会产生自激。

GPS天线在室外空旷地区接受信号较好,在车内,因金属外壳和玻璃的防爆膜尤其是含金属粉的车膜,以及车内音响等都会对内置GPS天线接收信号产生干扰甚至阻碍,在室内受钢筋混凝土的遮挡,甚至无法接受GPS信号。

8.6-14.jpg

 楼主| 发表于 2022-5-23 09:20 | 显示全部楼层
8.6-20.jpg


模块引脚
VCC:电源脚输入3.3-5.5V
GND:电源地
RXD:串口接收脚-- 接单片机串口TXD 发送
TXD:串口发送脚-- 接单片机串口RXD 接收

8.6-21.jpg

 楼主| 发表于 2022-5-23 09:30 | 显示全部楼层
8.6.3. GY-NEO6MV2飞控GPS模块的实验环境
1GY-NEO6MV2飞控GPS模块实验所需硬件清单

TM1637四位数码管X1
0.96寸OLED液晶屏X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
高电平触发有源蜂鸣器模块X1
LED发光二极管(绿、蓝色)X2
IIC/I2C 1602 LCD液晶屏模块X1
高电平触发单路5V继电器模块X1
Proto Shield原型扩展板(带mini面包板)X1

8.6-22.jpg

 楼主| 发表于 2022-5-23 09:32 | 显示全部楼层
2、传感器模块实验所需软件平台
代码编程 Arduino IDE   (版本1.8.19
仿真编程 Linkboy      (版本V4.6.3
图形编程 Mind+  (版本 V1.7.0 RC2.0
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino
3、下载并安装GPS模块 所需的库以在 Arduino IDE 中工作
2)打开网页https://github.com/,搜索SoftwareSerialTinyGPS
8.6-23.jpg

 楼主| 发表于 2022-5-23 09:33 | 显示全部楼层
8.6-24.jpg
 楼主| 发表于 2022-5-23 09:38 | 显示全部楼层
4、实验接线示意图
8.6-25.jpg
5、模块实验说明
1)位置固定 LED 指示灯
NEO-6M GPS 模块上有一个 LED,用于指示定位状态。它会根据它所处的状态以不同的速率闪烁
不闪烁 ==> 表示正在搜索卫星
1 秒闪烁一次- 表示已找到定位
2)3.3V LDO 稳压器
NEO-6M 芯片的工作电压为 2.7 至 3.6V。但是,该模块配备了MICREL的MIC5205超低压差3V3稳压器。逻辑引脚也可以承受 5 伏电压,因此我们可以轻松地将其连接到 Arduino 或任何 5V 逻辑微控制器,而无需使用任何逻辑电平转换器。
3)电池和 EEPROM
该模块配备一个 HK24C32 两线串行 EEPROM。它大小为4KB,通过I2C连接到NEO-6M芯片。模块还包含一个可充电纽扣电池,用作超级电容器。EEPROM 与电池一起有助于保留电池支持的 RAM (BBR)。BBR 包含时钟数据、最新位置数据(GNSS 或位数据)和模块配置。但它并不意味着永久数据存储。由于电池保留时钟和最后位置,首次定位时间 (TTFF) 显着减少到 1 秒。这允许更快的位置锁定。如果没有电池,GPS 总是冷启动,因此初始 GPS 锁定需要更多时间。通电时电池会自动充电,并且可以在没有电源的情况下保持数据长达两周。


 楼主| 发表于 2022-5-25 12:45 | 显示全部楼层
程序三:使用TinyGPS库解码GPS数据
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序三:使用TinyGPS库解码GPS数据
  4. */

  5. #include <SoftwareSerial.h>//导入驱动库
  6. #include <TinyGPS.h>

  7. TinyGPS gps;//初始化
  8. SoftwareSerial ss(9, 8);//设置软串口为D9\D8

  9. void setup() {
  10.   Serial.begin(9600);
  11.   ss.begin(9600);

  12.   Serial.print("简单的 TinyGPS 库 v. ");
  13.   Serial.println(TinyGPS::library_version());
  14.   Serial.println("NEO-6M准备就绪!");
  15.   Serial.println();
  16. }

  17. void loop() {
  18.   bool newData = false;
  19.   unsigned long chars;
  20.   unsigned short sentences, failed;

  21.   // 一秒钟我们解析 GPS 数据并报告一些关键值
  22.   for (unsigned long start = millis(); millis() - start < 1000;){
  23.     while (ss.available()){
  24.       char c = ss.read();
  25.       // Serial.write(c); // 如果您想查看 GPS 数据流,请取消注释此行
  26.       if (gps.encode(c)) // 新的有效数据进来了吗?
  27.         newData = true;
  28.     }
  29.   }

  30.   if (newData){
  31.     float flat, flon;
  32.     unsigned long age;
  33.     gps.f_get_position(&flat, &flon, &age);
  34.     Serial.print("经度=");
  35.     Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
  36.     Serial.print(" 纬度=");
  37.     Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
  38.     Serial.print(" 卫星数=");
  39.     Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
  40.     Serial.print(" 接收=");
  41.     Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
  42.   }

  43.   gps.stats(&chars, &sentences, &failed);
  44.   Serial.print(" 字符=");
  45.   Serial.print(chars);
  46.   Serial.print(" 句子=");
  47.   Serial.print(sentences);
  48.   Serial.print(" 失败=");
  49.   Serial.println(failed);
  50.   if (chars == 0)
  51.     Serial.println("** 没有从 GPS 接收到数据:检查接线 **");
  52. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-11-29 23:29 , Processed in 0.078470 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表