提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 1.1 器件选择
- 1.2 接线方案
- 二、驱动实现
- 2.1 核心代码解析(arduino/ESP32-S3)
- 三、坐标解析代码
- 四、典型问题排查
- 总结
前言
北斗卫星导航系统(BDS)作为我国自主研发的全球卫星导航系统,其定位精度在亚太地区已达2.5米级别
。结合GPS系统形成双模定位,可显著提升可用卫星数量及定位可靠性。本文将以Arduino uno和ESP32-S3-DevKitC-1为例,详解基于ArduinoIDE的北斗/GPS开发全流程,并提供OLED实时定位显示方案。# 一、硬件准备
1.1 器件选择
- ESP32-S3-DevKitC-1或者Arduino uno
- ATGM336H版本模块(任意GPS模块都行)
- 陶瓷有源天线
注:实验要在空旷的场地,室内GPS会没信号。阳台不一定。
1.2 接线方案
方案一:
Arduino | 北斗模块 |
---|---|
3.3V | VCC |
GND | GND |
0(rx,不是A0) | TX |
方案二:
ESP32 | 北斗模块 |
---|---|
3.3V | VCC |
GND | GND |
3 | TX |
注:实验要在空旷的场地,室内GPS会没信号。阳台不一定。
第一次测试,北斗模块需要一分钟时间激活后,串口才能接收到
二、驱动实现
2.1 核心代码解析(arduino/ESP32-S3)
测试代码如下(示例):
/*
ESP32-S3 的默认 UART 配置如下:
UART0:
TX (发送): GPIO11
RX (接收): GPIO31
UART1:
TX (发送): GPIO171
RX (接收): GPIO16
*/
#define GPSSerial Serial
#define DEBUGSerial Serial
void setup() //初始化内容
{GPSSerial.begin(9600); DEBUGSerial.begin(9600); DEBUGSerial.println("Wating...");
}void loop() //主循环
{while (GPSSerial.available()) { DEBUGSerial.write(GPSSerial.read());//收到GPS数据则通过Serial输出}
}
三、坐标解析代码
在这里插入代码片
四、典型问题排查
现象 | 解决方案 |
---|---|
无数据输出 | ①检查TX-RX是否反接 ②测量模块供电电压 ③更换USB数据线 |
坐标值异常(0,0) | ①确认天线方向 ②等待被动模块激活完成(约1分钟) |
数据帧不完整 | ①核对波特率设置 ②检查地线连接 ③避开强电磁干扰源 |
总结
本文是为验证《基于ArduinoIDE的任意型号单片机 + GPS北斗BDS卫星定位》