提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 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衛星定位》