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

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

Skylab SKM53 GPS Arduino Mega 2560 Arduino  arduino  Сегодня у меня праздник. Удалось запустить 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, 630 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 GPS Arduino Mega 2560 Arduino  arduino

  • vertical_align_bottomПодключение GPS модуля Skylab SKM53 к Arduino Mega 2560
    • Автор:
    • Язык: ru-RU
    • Миниатюра: https://geekelectronics.org/wp-content/uploads/2017/05/image_thumb5-1.png
    • Рубрика: Arduino
    • Метки: , , ,
    • Обновлено: 21.12.2016
    • Комментариев: 10
    • Просмотров: 7 127
  • Оцените статью - я старался
    1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 5,00 out of 5)
    Загрузка...
  • Поделитесь с друзьями
logo

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

  • 4igo4ek:

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

  • 4igo4ek:

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

  • Juris:

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

  • AL MICH:

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

    • Juris:

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

  • AL MICH:

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

    • РНС:

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

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

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

  • dfdfdfd@mail.ru:

    а с кетч в архиве не рабочий!

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

vertical_align_top
banner