Блог о программировании, электронике и рыбалке

Подключение GPS модуля Skylab SKM53 к Arduino Mega 2560

Skylab SKM53Сегодня у меня праздник. Удалось запустить GPS модуль Skylab SKM53 на моей Arduino Mega 2560.

Пару месяцев я с ним провозился и все безрезультатно. На Arduino UNO работает, а на моей Arduino Mega 2560 не хотел. За это время я перебрал кучу сторонних скетчей, написал не меньшую кучу своих,но результат был нулевым.

К сожалению причину неполадки мне выяснить так и не удалось, но вот заставить работать SKM53 с Arduino Mega получилось.

Сегодня я просто начал перебирать дискретные порты по порядку и на портах 50-51 и 52-53 этот GPS модуль заработал и показал мне долгожданные координаты. Ну вот закон подлости – заработало на последних контактах.

Теперь займемся подключением. Как и в прошлый раз, вначале будем использовать схему подключения экрана к Adruino.

Теперь займемся подключением самого GPS модуля Skylab SKM53.

  • RXD – цифровой пин 50 Arduino Mega (можно не подключать)
  • TXD – цифровой пин 51 Arduino Mega
  • RST
  • NC
  • GND – GND Arduino Mega
  • VCC - +5 В Arduino Mega

Для работы с GPS нам понадобится установить дополнительную библиотеку TinyGPS.

tinygps.rar (10,6 KiB, 742 hits)

Скачайте архив и распакуйте его содержимое в \arduino-1.0\libraries\

Загрузим проверочный скетч, который нам покажет координаты (широта и долгота), скорость (км/ч), количество спутников, высоту над уровнем моря, дату и время (по Гринвичу) – последние параметры будут заменять друг друга в нижних строках экрана каждую секунду:

#include <LiquidCrystal.h>
#include <TinyGPS.h>
#include <SoftwareSerial.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

TinyGPS gps;
// Дискретные пины, к которым подключен GPS SKM53
SoftwareSerial skm53(51, 50);

bool line=false; // переменная для смены информации в 3 и 4 строках экрана

void setup()
{
/* Инициализируем дисплей: 4 строки по 16 символов */
lcd.begin(16, 4);
// Скорость работы с GPS модулем (для SKM53 9600)
skm53.begin(9600);
//Serial.begin(115200);

// Выводим на экран текст о том, что идет поиск спутников
lcd.setCursor(0, 0);
lcd.print("Find satellites");
lcd.setCursor(0, 1);
lcd.print("  Please  Wait  ");
}

void loop()
{
bool newData = false;

// Каждую секунду парсим GPS данные
for (unsigned long start = millis(); millis() - start < 1000;) /* между millis() – start  стоит минус, просто WordPress заменяет его на черточку.*/
{
while (skm53.available())
{
char c = skm53.read();
if (gps.encode(c)) newData = true;
}
}

if (newData)
{
float lat, lon;
unsigned long age;

int year;
byte month, day, hour, minutes, second, hundredths;

// Получаем координаты
gps.f_get_position(&lat, &lon, &age);
// Получаем дату и время
gps.crack_datetime(&year, &month, &day, &hour, &minutes, &second, &hundredths, &age);

lcd.clear();

// Строка 1 - широта
lcd.setCursor(0, 0);
lcd.print("Lat: ");
lcd.print(lat,6);

// стока 2 - долгота
lcd.setCursor(0, 1);
lcd.print("Lon: ");
lcd.print(lon,6);

if (line==true) {
// Строка 3 - скорость км/ч
lcd.setCursor(-4, 2);
lcd.print("Speed: ");
lcd.print(gps.f_speed_kmph());
lcd.print("     ");

// Строка 4 - количество спутников и высота в метрах
lcd.setCursor(-4, 3);
lcd.print("Sat:");
lcd.print(gps.satellites());
lcd.print(" Alt:");
lcd.print(gps.f_altitude());
lcd.print("     ");
}

if (line==false) {
// Строка 3 ' - дата
lcd.setCursor(-4, 2);
lcd.print("Date:");
lcd.print(year);
lcd.print("-");
lcd.print(month);
lcd.print("-");
lcd.print(day);
lcd.print("     ");

// Строка 4 ' - время
lcd.setCursor(-4, 3);
lcd.print("Time:");
lcd.print(hour);
lcd.print(":");
lcd.print(minutes);
lcd.print(":");
lcd.print(second);
lcd.print("     ");
}

line=!line;
}
}

Skylab SKM53

Свои вопросы оставляйте в комментариях или задавайте их в нашей группе в Телеграм

Geek Electronics
  • keyboard_arrow_downПодключение GPS модуля Skylab SKM53 к Arduino Mega 2560
    • Автор:
    • Миниатюра: Подключение GPS модуля Skylab SKM53 к Arduino Mega 2560
    • Рубрика: Arduino от А до Я
    • Обновлено: 26.12.2017
    • Комментариев: 10
    • Просмотров: 7 774
      • searchПоисковые боты
        Дата Бот
        2018-09-20 02:14:08 DotBot
        2018-09-19 18:33:05 Yandex
        2018-09-19 13:50:34 Yandex
        2018-09-18 09:11:07 Yandex
        2018-09-18 04:13:33 Yandex
        2018-09-16 19:46:27 Google
        2018-09-16 15:04:48 Yandex
        2018-09-15 22:45:54 Bing
        2018-09-15 17:36:42 Google
        2018-09-15 05:10:01 Google
  • Оцените пожалуйста статью
    1 Star2 Stars3 Stars4 Stars5 Stars
    Loading Загрузка...
  • Поделитесь с друзьями
GeekElectronics

Похожие записи

Комментариев: 10

  • Avatar for source
    4igo4ek:

    А расскажи пожалуйста как ты завел этот модуль на UNO?
    У меня он отказывается определять координаты =(

  • Avatar for source
    4igo4ek:

    Спасибо, завелось. Точнее и заводилось, только нужно было подождать пока спутники появятся =)

  • Avatar for source
    Juris:

    А нет ли там такого, что у Ардуино Мега на ногах 50-53 стоят выводы MISO, MOSI и т.п. Может быть это как-то с этим связано? Например, читалка SD карточек только через эти входы запустилась, причем обнаружил это тоже не сразу. Везде писали подключать к ногам 10-12, а потом накопал что на Меге надо именно на 50-53, иначе не работает.

  • Avatar for source
    AL MICH:

    Подключил модуль GT-1613-skr , загрузил библиотеку, но в резудьтате на монитор выдает билеберду! Вместо букв какие то символы! Как это обЪяснить?

    • Avatar for source
      Juris:

      Во-первых проверьте скорость передачи данных на/через COM(USB) порт. Посмотрите какое число написано в Serial.begin(), такое же надо и на компьютере в терминале выставить. Сам пару раз так натыкался.

  • Avatar for source
    AL MICH:

    Получилось!! А всего то Serial.begin(115200); поменял на Serial.begin(9600); Пошел нормальный текст!

    • Avatar for source
      РНС:

      Здравствуйте.
      Если можно хотелось бы посмотреть скетч.

      И схему подключения.

      За ранее спасибо.

Добавить комментарий

arrow_upward