"#include <SoftwareSerial.h>\n\nSoftwareSerial gpsSerial(10, 11); // 创建一个新的串口对象,连接到Arduino的引脚10和11\n\nvoid setup() {\n Serial.begin(9600); // 初始化Arduino的串口通信\n gpsSerial.begin(9600); // 初始化GPS模块的串口通信\n}\n\nvoid loop() {\n if (gpsSerial.available()) { // 检查GPS模块是否有可用数据\n String gpsData = gpsSerial.readStringUntil('\n'); // 读取一行数据\n if (gpsData.startsWith("$GPGGA")) { // 检查数据是否为GGA格式\n // 解析GGA数据,获取经纬度信息\n String latitude = getField(gpsData, ',', 2);\n String longitude = getField(gpsData, ',', 4);\n \n // 打印经纬度信息\n Serial.print("Latitude: ");\n Serial.println(latitude);\n Serial.print("Longitude: ");\n Serial.println(longitude);\n \n // 获取当前时间戳\n unsigned long timestamp = getTimeStamp();\n Serial.print("Timestamp: ");\n Serial.println(timestamp);\n }\n }\n}\n\nString getField(String data, char separator, int index) {\n int separatorCount = 0;\n int startIndex = 0;\n int endIndex = -1;\n for (int i = 0; i < data.length(); i++) {\n if (data.charAt(i) == separator) {\n separatorCount++;\n if (separatorCount == index) {\n startIndex = i + 1;\n } else if (separatorCount == index + 1) {\n endIndex = i;\n break;\n }\n }\n }\n if (endIndex == -1) {\n endIndex = data.length();\n }\n return data.substring(startIndex, endIndex);\n}\n\nunsigned long getTimeStamp() {\n // 在这里实现获取时间戳的逻辑,可以使用RTC模块或者通过网络获取时间\n}\n" 使用Arduino和GPS模块获取经纬度信息,并利用此信息获取时间戳。文章包含代码示例,演示如何通过串口与GPS模块通信,解析数据并获取经纬度信息,以及如何获取时间戳。


原文地址: https://www.cveoy.top/t/topic/pOeU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录