• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Получение GPS данных на D1 mini

sstyle

New member
Добрый день.

Я совсем новичок. Купил D1 mini и GPS к нему. Подключил к . Пытаюсь написать какой нибудь код, чтобы получить число спутников, скорость и тд. Добавил библиотеку TinyGPSPlus и такой код

#include <TinyGPSPlus.h>
TinyGPSPlus gps;

void setup() {
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
while (Serial.available() > 0) {
Serial.println(Serial.read());
gps.encode(Serial.read());
Serial.print("LAT="); Serial.println(gps.location.lat(), 6);
Serial.print("LONG="); Serial.println(gps.location.lng(), 6);
Serial.print("ALT="); Serial.println(gps.altitude.meters());
Serial.print("SPD="); Serial.println(gps.speed.kmph());
Serial.print("SAT="); Serial.println(gps.satellites.value());
Serial.flush();
delay(2000);
Serial.swap(); // переключение на 0,1
}
delay(50);
}

Но не работает, выводит такое:

53
LAT=0.000000
LONG=0.000000
ALT=0.00
SPD=0.00
SAT=0
77
LAT=0.000000
LONG=0.000000
ALT=0.00
SPD=0.00
SAT=0

Что я делаю не так? Спасибо
 

sstyle

New member
Разобрался. На 9600 работает, но как поднять скорость до 115200?

void loop() {
while (Serial.available() > 0) {
printInt(gps.satellites.value(), gps.satellites.isValid(), 5);
printFloat(gps.location.lat(), gps.location.isValid(), 11, 6);
printFloat(gps.location.lng(), gps.location.isValid(), 12, 6);
printFloat(gps.altitude.meters(), gps.altitude.isValid(), 7, 2);
printFloat(gps.speed.kmph(), gps.speed.isValid(), 6, 2);
Serial.println(F(" "));
}
}
 

sstyle

New member
Модуль Beitian Bn-280, но гугл не выдаёт ничего интересного, в той документации что есть - ни слова

Пробовал подключить через USB-UART адаптер к u-connect и ничего толкового не вышло.

Пробовал подключить GPS к D7/8 и SoftwareSerial вместо hardware (tx/rx) использовать и тоже мимо.
 

sstyle

New member
Коллеги, кто то готов помочь за деньги? У меня уже кончаются моральные силы..
 

sstyle

New member
И так и дайте ей команду перейти на эту скорость.
Так пробовал (не помогло):
Serial.print( F("$PMTK251,115200*1F\r\n") );
Serial.flush(); // wait for the command to go out
delay( 100 ); // wait for the GPS device to change speeds
Serial.end(); // empty the input buffer, too
Serial.begin( 115200 ); // use the new baud rate
gps.print( F("$PMTK220,100*1F\r\n") );
 

nikolz

Well-known member
Модуль Beitian Bn-280, но гугл не выдаёт ничего интересного, в той документации что есть - ни слова

Пробовал подключить через USB-UART адаптер к u-connect и ничего толкового не вышло.

Пробовал подключить GPS к D7/8 и SoftwareSerial вместо hardware (tx/rx) использовать и тоже мимо.
для начала - вот спецификация из которой видно что скорость можно поднять до 921 000.
1635087651999.png
 

nikolz

Well-known member
данный модуль работает по протоколу NMEA 0183.
Чтобы изменить скорость UART найдите этот протокол или библиотеку
и передайте в модуль на скорости 9600 команду с новой скоростью
после этого измените скорость UART со стороны компьютера
 

sstyle

New member
данный модуль работает по протоколу NMEA 0183.
Чтобы изменить скорость UART найдите этот протокол или библиотеку
и передайте в модуль на скорости 9600 команду с новой скоростью
после этого измените скорость UART со стороны компьютера
Спасибо! А в итоге я правильно подключаю к TX/RX, а не к D7/D8?
 
Сверху Снизу