第二章:硬件选型指南——主流双模定位模块对比与天线选型
各位工程师朋友,大家好。我是老张,搞嵌入式定位系统有些年头了。今天咱们聊聊硬件选型这个事儿。说实话,选模块这事儿,看着简单,其实坑不少。我见过太多项目,方案选错了,后面调试到崩溃。
双模定位,说白了就是让GPS和北斗一起干活。为什么这么做?你想想看,单GPS在城市峡谷里经常掉链子,北斗在某些区域信号更好。两个一起上,互补嘛。我个人的习惯是,只要成本允许,优先上双模。
2.1 主流双模定位模块横向对比
市面上常见的双模模块,我接触最多的就是ATGM336H、NEO-8M和NEO-6M。这三个家伙各有脾气。咱们直接上表格,看得清楚。
| 参数项 | ATGM336H | NEO-8M | NEO-6M |
|---|---|---|---|
| 支持星座 | GPS + 北斗 + GLONASS | GPS + 北斗 | GPS 单模(可配北斗) |
| 定位精度 | 2.5m CEP | 2.5m CEP | 2.5m CEP |
| 冷启动时间 | ≤32s | ≤35s | ≤38s |
| 灵敏度 | -167dBm | -167dBm | -162dBm |
| 工作电压 | 2.7V ~ 3.6V | 2.7V ~ 3.6V | 2.7V ~ 3.6V |
| 工作电流 | 25mA(跟踪) | 28mA(跟踪) | 45mA(跟踪) |
| 接口协议 | UART / I2C | UART / SPI | UART |
| 参考价格 | ¥35 ~ ¥55 | ¥45 ~ ¥65 | ¥25 ~ ¥35 |
ATGM336H还有一个隐藏优势——它支持GLONASS。虽然咱们主要用GPS+北斗,但GLONASS在某些高纬度地区表现更好。不过说实话,国内用北斗就够了,GLONASS算是个备胎。
NEO-8M呢?它的优势在于生态成熟。Ublox的文档写得特别详细,寄存器手册、应用笔记一应俱全。如果你团队里有新手,我建议先用NEO-8M上手,调试起来省心。
至于NEO-6M,嗯,它有点老了。虽然便宜,但功耗高、灵敏度低。我只有在成本压到极致的时候才会考虑它。比如做一次性定位标签,用完就扔的那种。
2.2 天线选型——别让天线毁了你的定位
天线这事儿,我吃过不少亏。有一次项目定位一直飘,折腾了两天,最后发现是天线接地没处理好。你想想看,模块再好,天线不行,一切都是白搭。
2.2.1 有源天线 vs 无源天线
先搞清楚一个概念:有源天线自带LNA(低噪声放大器),无源天线没有。怎么选?看你的应用场景。
- 有源天线: 适合线缆长度超过1米、或者模块放在金属外壳里的情况。增益一般在25dB~35dB。我习惯用28dB的,够用又不贵。
- 无源天线: 适合模块直接放在PCB上、天线距离近的场景。比如手持设备、无人机飞控。优点是便宜、体积小。
2.2.2 关键参数怎么看
天线选型,我主要看三个参数:
- 增益(Gain): 不是越高越好。增益太高会引入噪声,反而降低信噪比。我个人推荐25~30dB。
- 驻波比(VSWR): 理想值是1.0,实际做到1.5以下就算不错了。超过2.0就别用了,反射损耗太大。
- 极化方式: GPS和北斗都用右旋圆极化(RHCP)。别买成线极化的,不然信号衰减严重。
2.3 接口说明——UART、I2C、SPI怎么选
模块和主控之间怎么通信?主流方案有三种:UART、I2C、SPI。我一个个说。
2.3.1 UART(串口)——最常用,也最简单
UART是绝大多数模块的标配。ATGM336H和NEO-8M都支持。波特率默认9600,我一般调到115200,速度快,数据更新及时。
接线就四根线:VCC、GND、TX、RX。注意交叉连接——模块的TX接主控的RX,模块的RX接主控的TX。这个我刚开始也搞反过,哈哈。
// 典型的UART初始化代码(STM32平台)
UART_HandleTypeDef huart2;
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
HAL_UART_Init(&huart2);
// 接收NMEA数据
uint8_t rx_buffer[256];
HAL_UART_Receive(&huart2, rx_buffer, 256, 1000);
2.3.2 I2C——省引脚,适合资源紧张的场景
ATGM336H支持I2C接口。如果你主控的UART口不够用,可以用I2C。地址一般是0x42(7位地址)。
不过说实话,I2C的速率不如UART快。标准模式100kHz,快速模式400kHz。如果你需要高频率的定位数据(比如10Hz以上),我建议还是用UART。
2.3.3 SPI——速度最快,但接线多
NEO-8M支持SPI接口。SPI的速率可以跑到几MHz,适合需要大量数据传输的场景。但代价是多占用几个IO口:CS、SCLK、MISO、MOSI。
我个人很少用SPI。为什么?因为定位模块的数据量不大,NMEA协议每秒也就几百字节,UART完全够用。除非你在做RTK或者原始观测量输出,否则没必要上SPI。
2.4 电源与PCB布局注意事项
最后聊几句电源和布局。定位模块对电源纹波比较敏感。我建议在模块的VCC引脚附近加一个10μF的钽电容和一个0.1μF的陶瓷电容。别省这两个电容,不然定位精度会受影响。
PCB布局上,天线要走微带线,阻抗控制在50Ω。天线下面不要铺铜,保持净空。我见过有人把天线放在金属外壳旁边,结果信号衰减了10dB以上。
嗯,硬件选型就聊到这儿。记住一句话:模块选对,天线选好,接口选简单。这三步走对了,后面调试就顺了。