如何使用Arduino对SIMCOM A7670的GNSS功能进行编程
SIMCOM A7670SA GNSS功能启用与编程指导
一、硬件检查先做足
- 确认GNSS天线插对接口:A7670SA的GNSS和LTE天线接口是分开的,别插混,GNSS接口一般标
GNSS_ANT - 把设备拿到室外开阔处测试,室内GNSS信号弱,定位慢甚至搜不到星
- 模块供电要稳:A7670SA峰值电流大,别用Arduino板载5V供电,建议外接5V/2A以上电源
二、先用串口助手调试AT指令(排除代码问题)
拿USB-TTL模块连A7670SA的AT串口,发以下指令:
- 测试通信:
AT→ 回OK说明串口通了 - 查GNSS状态:
AT+CGNSTST?→ 回+CGNSTST: 0就是没启动 - 启动GNSS:
AT+CGNSPWR=1→ 回OK就启动成功(部分版本用AT+CGNSTST=1,两种都试试) - 等30-60秒,拿定位数据:
AT+CGNSINF→ 返回的字符串里有经纬度、时间这些关键信息,格式是+CGNSINF: <mode>,<time>,<lat>,<lon>,<alt>,<speed>,<course>,<fix>,<sat>,<hdop>,<vdop>,<pdop>,<reserved1>,<reserved2>,<reserved3>
三、Arduino代码示例
用软串口或硬串口都行,下面是极简实现:
#include <SoftwareSerial.h> // 软串口引脚,根据实际接线改 SoftwareSerial simSerial(10, 11); // RX接模块TX,TX接模块RX void setup() { Serial.begin(9600); simSerial.begin(115200); // 模块默认AT波特率大多是115200,不对就换9600/19200 delay(1000); // 启动GNSS simSerial.println("AT+CGNSPWR=1"); delay(200); readSimResponse(); // 可选:设置只输出RMC格式定位数据,也可以设成GGA等 simSerial.println("AT+CGNSSEQ=\"RMC\""); delay(200); readSimResponse(); } void loop() { // 每5秒请求一次定位数据 simSerial.println("AT+CGNSINF"); delay(200); readSimResponse(); delay(5000); } // 读取模块响应并打印到串口监视器 void readSimResponse() { while(simSerial.available()) { String resp = simSerial.readStringUntil('\n'); Serial.println(resp); } }
四、常见坑排查
- 发
AT+CGNSPWR=1没反应/报错:先重启模块,确认你的A7670SA版本带GNSS功能(你买了配套天线应该没问题) AT+CGNSINF返回全是逗号:说明还没定位成功,继续在室外等,或者检查天线有没有插紧- AT指令没响应:换波特率试试,9600、19200、115200都试一遍
内容的提问来源于stack exchange,提问作者Khaleel Khaki
相关产品推荐
相关产品推荐

