8 (800) 350-30-16

GPS-логгер на arduino

Дата: / Категория: Arduino / Автор: marsel

В этой статье расскажу о сборке так называемого GPS-логгер, работает оно так: arduino nano считывает данные с GPS-модуля (в нашем случае это NEO-6M) и записывает их на SD-карту в неизмененном виде. Итогом работы устройства будет один файл, в котором будет запись о местонахождении устройства через короткие промежутки, примерно в 1-2 секунды, что позволит наложить на интерактивную карту маршрут, данные о скорости, высоте и направлении движения устройства во время его работы.


GPS-модуль подключен к arduino посредством UART интерфейса, а модуль SD-карты по SPI, таким образом задействованы не все цифровые выводы arduino, что позволяет подключить к модулю дополнительные модули и датчики, например дисплей.
Для проверки стабильности устройства, оставил его включенным на несколько часов, погрешность за всё это время не превысила 15 метров, что говорит о высокой точности устройства.

#include <SoftwareSerial.h> 
#include <SD.h>
SoftwareSerial mySerial(2, 3); //сюда gps модуль
File GPS;
char buf[128];
byte bufSize;
bool waiting = true;
void setup() {
delay(800);
pinMode(4, OUTPUT);
while (!SD.begin()) {
digitalWrite(4,HIGH); delay(100);
digitalWrite(4,LOW); delay(100);
digitalWrite(4,HIGH); delay(100);
digitalWrite(4,LOW); delay(300);
}
GPS = SD.open("LOG.GPS", FILE_WRITE);
if (!GPS)
while (true) {
digitalWrite(4,HIGH); delay(100);
digitalWrite(4,LOW); delay(100);
digitalWrite(4,HIGH); delay(100);
digitalWrite(4,LOW); delay(300);
}
mySerial.begin(9600); // скорость GPS порта
Serial.begin(57600); //скорость порта
digitalWrite(4,HIGH);
}
void loop() {
digitalWrite(4,LOW);
while (mySerial.available()) {
bufSize = mySerial.readBytesUntil('\n', buf, 128);
if (waiting) {
if (bufSize > 70) {
waiting = false;
GPS.write(buf, bufSize);
Serial.println(buf);
}
} else if (bufSize > 0) {
GPS.write(buf, bufSize);
Serial.println(buf);
digitalWrite(4,HIGH);
}
GPS.flush();
}

Сервис для наложения трека на карты: http://www.gpsvisualizer.com

 Видео версия статьи:

Теги: #Arduino, #GPS, #SD

Ваша оценка:

Рейтинг: 10.0 (Оценок: 1)

Комментарии (4):

яв
2017-04-03 11:22
подскажите что за ошибка?
яв
2017-04-03 11:22
exit status 1
expected '}' at end of input
Андрей
2017-02-08 02:27
GPS = SD.open("LOG.GPS", FILE_WRITE);
Название переменной "GPS" в данном случае не очень удачное. Лучше назвать "LOG" или типа того.
GremLine
2017-04-02 23:24
@Андрей:или лучше даже лог+текущуюдату и время =)

Комментарий:

Copyright © RobOM.ru 2017 г. Все права защищены