Что бы поменять конфигурацию если надо …
В смысле прошить?
То есть при обычном использовании в качестве передатчика о местоположении для ардуино провод RX подключать безсмысленно правильно я понимаю.
Если не будете ничего передавать на модуль, то и подключать не надо …
если уж совсем придираться то и если не используется (а по умолчанию он не используется) Flow control (8 databit, no parity, 1 stop bit, no flow controll)
Нет, правильно “бессмысленно”.
Только, при этом, лучше указать это в конфигурации UART, чтобы он не думал, что там что-то подключено.
Извените я в общем всех понимаю но хотелось бы конкретно узнать по модулю gy-gps6mv2 ну и подобным.
Нужно ли подключать провод rx при подключении к Ардуино да или нет если да то зачем.
Правда Flow control что-то в этом есть но опять я нигде не нашел сктча с применением Flow control
Документация на модуль есть в свободном доступе. Через программу по полному uart с rx и tx можно перенастроить работу модуля КАРДИНАЛЬНО !!!
Элементарно, Ватсон!
Если лично Вам нужно - “да”.
Если лично Вам не нужно - “нет”.
Мы же не знаем, что Вам нужно.
В том случае, если блоха преднастроена через u-center, RX не нужен.
RX нужен при необходимости на ходу менять конфигурацию (как частный случай - подключать любую блоху без преконфигурирования), к примеру - изменить набор сентеций, вкл/выкл выходные протоколы, активировать jamming detection. Но, при этом, данную часть конфигурирования придётся писать вручную.
#include <TinyGPSPlus.h> //Библиотека GPS модуля
#include <SoftwareSerial.h> //Библиотека для подключения пинов RX TX к любым назначеным контактам
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps; //Создаём объект gps класса TinyGPSPlus.
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
int hour; // обЪявление переменной час
int GMT = 5; // обЪявление переменной часовой пояс
// Подключения дисплея
#include <Wire.h> // библиот для общения по I2C
#include <LiquidCrystal_I2C.h> // библиот работы с символьным жк-дисплеем по I2C
LiquidCrystal_I2C lcd(0x27, 20, 4); // Устанавливаем характеристики дисплея
void setup() {
Serial.begin(9600); //задаем скорость общения по USB
ss.begin(GPSBaud); //задаем скорость c GPS модуллем
lcd.init(); // инициализация ЖК дисплея
lcd.backlight(); // Включаем подсветку дисплея
// Печатаем оформление на дисплее то что не меняется
lcd.clear(); //
lcd.print("Date");
lcd.setCursor(0, 1);
lcd.print("clock");
lcd.setCursor(0, 2);
lcd.print("spyt=");
lcd.setCursor(9, 2);
lcd.print("<=");
lcd.setCursor(0, 3);
lcd.print("H=");
lcd.setCursor(9, 3);
lcd.print("skor=");
delay(1000);
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0) // ПРОВЕРКА ЕСТЬ ЛИИ ДАННЫЕ в порте
if (gps.encode(ss.read())) { // ОБРАБОТКА ДАННЫХ ИЗВЛЕЧЕНИЕнужной информации
if (gps.date.isValid()) {
Serial.print(F(" Дата: "));
if (gps.date.day() < 10) Serial.print(F("0"));
Serial.print(gps.date.day());
Serial.print(F("/"));
if (gps.date.month() < 10) Serial.print(F("0"));
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.year());
Serial.print(F(" время: "));
if (gps.time.isValid())
hour = gps.time.hour() + GMT; // расчет переменной час с учетом часового пояса
if (hour > 23) hour = hour - 24; // Вычитаем 24 когда часы переходят за 23 часа
if (hour < 10) Serial.print(F("0")); //печать 0 перед часом если меньше 10
Serial.print(hour); // печать скоректируемой переменной час
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(" Спутники= "));
Serial.print(gps.satellites.value());
Serial.print(F(" Высота= "));
Serial.print(gps.altitude.meters());
Serial.print(F(" Угол направления="));
Serial.print(gps.course.deg());
Serial.print(F(" скорость="));
Serial.println(gps.speed.kmph());
lcd.setCursor(6, 0); // Устанавливаем курсор на 5 строку и 1.
if (gps.date.day() < 10) lcd.print("0"); //печать 0 перед месяцом если меньше 10
lcd.print(gps.date.day()); // месяц
lcd.print(F("/"));
if (gps.date.month() < 10) lcd.print(F("0")); //печать 0 перед часом если меньше 10
lcd.print(gps.date.month()); // выводим дату
lcd.print(F("/"));
lcd.print(gps.date.year()); // год
lcd.setCursor(7, 1); // Устанавливаем курсор на 5 строку и 1.
if (hour < 10) lcd.print("0"); //печать 0 перед месяцом если меньше 10
lcd.print(hour); // месяц
lcd.print(F(":"));
if (gps.time.minute() < 10) lcd.print(F("0")); //печать 0 перед часом если меньше 10
lcd.print(gps.time.minute()); // выводим дату
lcd.setCursor(6, 2);
lcd.print(gps.satellites.value()); //кол-чество спутн
lcd.setCursor(2, 3);
lcd.print(gps.altitude.meters()); //Высота
lcd.setCursor(12, 2);
lcd.print(gps.course.deg()); //Угол направления
lcd.setCursor(14, 3);
lcd.print(gps.speed.kmph()); //Скорость
}
}
}
Написал скетч отображения Gps даты, времени, кол-ва спутников, высоты ,скорости и угла направления на lsd дисплее. Но почему то данные скорости и угла очень редко обновляются при движении. Сможет ли кто подсказать в чем причина?
А по мне так - не редко, нормально для такого случая.
Переходите на протокол UBX…
Объясните подробнее что значит для токого случая ? много показателей выводится поэтому тормозит?
Да с чего вы взяли, что тормозит?
когда едешь на авто спутников больше 8 штук а скорость не меняется или меняется раз в 5 минут а то и реже .
удалил все кроме скорости и угла . Вечером на авто поеду посмотрю есть ли разница.
Нутк… Подключите к ноутбуку, через u-center проверьте как там скорость ловит блоха. Ардуина не виновата, если апдейты редко идут.
Удалил со сетча почти все . оставил лишь количество спутников и скорость. Проехал с этим на машине, а скорость все равно очень редко меняется. Подскажите пожалуйста может я какую то команду не прописал или купленный GY-NEO6MV2 не годится в роли спидометра?
#include <TinyGPSPlus.h> //Библиотека GPS модуля
#include <SoftwareSerial.h> //Библиотека для подключения пинов RX TX к любым назначеным контактам
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps; //Создаём объект gps класса TinyGPSPlus.
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
int hour; // обЪявление переменной час
int GMT = 5; // обЪявление переменной часовой пояс
// Подключения дисплея
#include <Wire.h> // библиот для общения по I2C
#include <LiquidCrystal_I2C.h> // библиот работы с символьным жк-дисплеем по I2C
LiquidCrystal_I2C lcd(0x27, 20, 4); // Устанавливаем характеристики дисплея
void setup() {
Serial.begin(9600); //задаем скорость общения по USB
ss.begin(GPSBaud); //задаем скорость c GPS модуллем
lcd.init(); // инициализация ЖК дисплея
lcd.backlight(); // Включаем подсветку дисплея
// Печатаем оформление на дисплее то что не меняется
lcd.clear(); //
lcd.print("Date");
lcd.setCursor(0, 1);
lcd.print("clock");
lcd.setCursor(0, 2);
lcd.print("spyt=");
lcd.setCursor(9, 2);
lcd.print("<=");
lcd.setCursor(0, 3);
lcd.print("H=");
lcd.setCursor(9, 3);
lcd.print("skor=");
delay(1000);
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0) { // ПРОВЕРКА ЕСТЬ ЛИИ ДАННЫЕ в порте
if (gps.encode(ss.read())) { // команда библиотеки TinyGPSPlus.h ОБРАБОТКА ДАННЫХ ИЗВЛЕЧЕНИЕ нужной информации
if (gps.speed.isValid() && gps.satellites.isValid()) {
Serial.print(F(" скорость="));
Serial.print(gps.speed.kmph());
Serial.print(F(" Спутники= "));
Serial.println(gps.satellites.value());
lcd.setCursor(14, 3);
lcd.print(gps.speed.kmph());
lcd.setCursor(6, 2);
lcd.print(gps.satellites.value()); //кол-чество спутн
}
}
}
}
ну вообще любой GPS слабо подходит к роли спидометра именно из-за задержек. Но так чтобы раз в пять минут обновлялось - это ненормально.
Может у вас чтение постоянно с ошибками идет, поэтому крайне редко собираются валидные данные? Или модуль реально ничего не ловит?