GNSS/NMEA 0183 О навигационных модулях, парсинге NMEA данных и навигации для микроконтроллеров STM32

Поделиться
HTML-код
  • Опубликовано: 5 окт 2024
  • Навигационные приложения получили широкую распространенность. В ролике рассказывается о возможностях парсинга данных по протоколу NMEA 0183.
    Канал в телеграмм - t.me/vladimir_...
    Канал Яндекс.Дзен - zen.yandex.ru/...
    Канал на RuTube - rutube.ru/chan...
    Канал на RUclips - / vladimirmedintsev
    ------------------------------------------
    Если вы хотите поддержать автора канала номер карты Сбер:
    2202-2023-2480-4008
    ------------------------------------------
    Не забывайте подписываться.
    github.com/kos...
    gpsd.gitlab.io...

Комментарии • 49

  • @Michael_Kaa
    @Michael_Kaa 4 года назад +4

    Спасибо! Вы очень мотивируете меня не лениться, а идти писать код!

  • @gutyaaaaa
    @gutyaaaaa 4 года назад +2

    Спасибо. Лично для меня очень актуальная информация

  • @igor0242
    @igor0242 4 года назад +1

    Большое спасибо за информацию! Для меня она очень интересна.

  • @tornilua6520
    @tornilua6520 4 года назад +1

    Спасибо, много полезной информации, очень классные примеры

  • @ruslangabitov5202
    @ruslangabitov5202 4 года назад +3

    Спасибо большое. Недавно нарвался на ваш канал и залип уже дня на 4. Тонны бесценной информации!
    Если пики и атмелы ещё как-то представлены, то по стмам очень грустно. Ардуино-подход меня раздражает: есть вопрос - подключи библиотеку. А как оно работает, почему - авторы материалов, как правило такие вопросы не освещают.
    Только "кровавый советский режим" готовил инженеров, готовых разобраться с любым вопросом и объяснить его другим. Ещё раз вам спасибо.
    Отдельная благодарность за делители. Не любит мир микроконтроллеров "плавающую точку". А тут такое красивое решение. Под капотом - целые числа, а в конце - одно преобразование к float, да и то, только если необходимо. Кстати, если использовать двоичный делитель, а не десятичный, можно умножение/деление сдвигом заменить. Нужно это обдумать.
    Ещё одно огромное спасибо за ваш труд. Здоровья и счастья.

  • @igor_v._kuznetsov
    @igor_v._kuznetsov 4 года назад +1

    Очень познавательно. Поверхностно знал, но не все

  • @МитяЯрков-ц1п
    @МитяЯрков-ц1п 4 года назад +1

    Владимир спасибо за парсер!

  • @RadioTexnik
    @RadioTexnik 4 года назад +1

    Больше спасибо! Как раз планирую GSM tracker замутить) контент очень интересный! Лайк!

  • @slgraf2
    @slgraf2 4 года назад +2

    Года 3 назад тоже игрался с GPS модулем. И написал на PIC офигенные часы, которые сами настраиваются ))

    • @intelektum
      @intelektum 4 года назад

      Если проект не закрыт, может исходниками поделитесь ?

    • @slgraf2
      @slgraf2 4 года назад

      @@intelektum Откопал ))
      char hh[3], mm[3], ss[3], buf[18], a[1];
      int8 t1, h, m, s;
      int1 f1;
      lcd_init();
      lcd_putc(" MOSCOW TIME");
      t1 = 0;
      f1=0;
      while(TRUE)
      {

      if(f1 == 1)
      {
      if(buf[3] == 'M' && buf[4] == 'C')
      {
      a[0] = buf[17];
      hh[0] = buf[6];
      hh[1] = buf[7];
      hh[2] = '\0';
      mm[0] = buf[8];
      mm[1] = buf[9];
      mm[2] = '\0';
      ss[0] = buf[10];
      ss[1] = buf[11];
      ss[2] = '\0';
      h = atoi(hh);
      m = atoi(mm);
      s = atoi(ss);
      h = h + 3;
      if(h >= 24)
      h = h - 24;
      lcd_gotoxy(1,2);
      printf(LCD_PUTC, " %02u %02u %02u %c", h, m, s, a[0]);
      f1=0;
      }
      f1 = 0;
      t1 =0;
      }
      if(kbhit(PORT1))
      {
      if(fgetc(PORT1) == '$')
      {
      while(!kbhit(PORT1) && t1 < 19)
      {
      buf[t1] = fgetc(PORT1);
      t1++;
      }
      f1 =1;
      t1 = 0;
      }
      }
      }
      Это было написано в среде CCS PICC для дисплея 1602 (вроде) просто поиграться. где-то даже видео есть работы этого кода
      #use rs232(UART1,baud=9600,parity=N,bits=8,stream=PORT1) // Это в h-файле

  • @taraserker_isr
    @taraserker_isr 4 года назад +1

    Спасибо.

  • @kavajno
    @kavajno 2 года назад +1

    Супер

  • @Avrora707
    @Avrora707 3 года назад +1

    Делал я как-то парсер для EVA8-M. Вначале взял NMEA и маленько прифигел, от их запятых, букв и цифр. Забил и сделал на GNSS - там байтовая строка и никаких символов и цифр, которые для начала надо еще конвертировать из чара с цифру

  • @ДмитрийЯровицын-ь8ж
    @ДмитрийЯровицын-ь8ж 4 года назад +1

    Хорош контент!

  • @raminsattarov5705
    @raminsattarov5705 4 года назад

    Здравствуйте. Спасибо за полезные информации. Можете рассказывать о том что как принимаете sentence на uart
    ?

  • @sovchem1275
    @sovchem1275 4 года назад

    Просто коммент для статистики

  • @semax5263
    @semax5263 4 года назад

    А поднималась ли в ваших видео тема того,как правильно делать замер питания процессором аккумуляторов-батареек в портативных устройствах с выводом объема оставшегося заряда на экран? Логичное прямое решения - замер с помощью АЦП напряжения с элемента питания часто даёт переменные результаты,результат чего скачки в отображении величины заряда.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

      Если у вас АЦП дает "скачки" значит делаете что-то не так. Ну и фильтрацию никто не отменял.

    • @semax5263
      @semax5263 4 года назад

      Вполне допускаю, что делаю неправильно и не учитываю какие-то особенности, поэтому и спрашиваю не было ли у вас видео посвященному вопросу измерения питания элементов питания в портативных приборах и если не было, то возможно вам было бы интересно об этом рассказать в будущем. Скачки в основном того плана, что устройство показывает разряд. Но стоит выключить -включить устройство показывает вполне еще заряженный элемент.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

      @@semax5263 Нет, по измерению заряда ничего не было.

  • @ОбычныйЧеловек-щ7м
    @ОбычныйЧеловек-щ7м 4 года назад

    Вы в Южно-Сахалинске живёте? Часто мелькает город.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      Южно-Сахалинск это мой любимый город. Я туда отдыхать езжу и за корюшкой.

  • @sovchem1275
    @sovchem1275 4 года назад

    Будет куда интереснее и доходнее сделать код-подмену координат GPS/ГЛОНАС и выложить на фрикере ;)
    1000-5000$ за прибор в лет расхватают! По сути нужен эмуль спутника долбящий нужные координаты на 1-2вт
    На гитхабе есть рабочий проект, но выполнен на ноуте, а нужна автономность. Сам бы сделал, но времени.. :(((

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      у меня проблемы с ВЧ частью. я сильно плохо в этом соображаю.

  • @korskantevin
    @korskantevin Год назад

    спасибо. а может посоветуете также библиотеку для encode nmea? нужен обратный процесс. тоже для stm32

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад

      Так ее написать дело 10 минут. Структуру в строку преобразовать очень просто.

  • @golyakoff
    @golyakoff 3 года назад

    Здравствуйте, очень полезно, спасибо, вообще, открыл ваш канал и не нарадуюсь (пришел в МК и электронику из высокоуровнего программирования, трудновато, если честно... пытаюсь вырасти из Ардуино - не нравится бесструктурный подход к коду - наверное, профдеформация))). Есть идея маленького учебного проекта для себя (и, разумеется, масс), сделать трекер для авто-/мотопутешествия с последующей выгрузкой трека (в gpx-формате). Буду очень признателен за критику соображений: Если я правильно понял идею, на скорости движения автомобиля имеет смысл запрашивать часто, наверное, не реже 1 Гц, чтобы графически трек на дорогу ложился красиво. Писать этим координаты надо... В память по размеру страницы флешки, причем в каком-то виде сокращённом формате. А дальше с флешки уже конвертим на лету в gpx при подключении телефона по какой-то беспроводной сети к спец приложению... Помня ваше видео о планировании "проекта" и стадии "торгов" (поиске компромиссов) - наверное нужно одёрнуть себя и начать с простого - просто класть напрямую на флешку готового gpx? Фишка мой разработки - поставил и забыл, устройство пишет треки по движению и позволяет его скачать в телефон при обнаружении телефона поблизости. Понятно, что не ноу-хау, но если честно, все стараются залить трек к себе и доступ по подписке. А у меня полный альтруизм))) Буду рад критике, советам, может ещё какие-то полезные мысли по теме? Спасибо!

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад +1

      Если вы говорите, что пришли из высокоуровневого программирования и уже имеете профдеформацию, значит есть опыт. А если опыт есть то вы можете за пару часов накидать приложение на андроид (да хоть в том же Qt) и работать и вести лог в своем телефоне. И все, ваши потребности закрыты. И пусть он (телефон) у себя данные хранит или на сервер кидает, да вообще все что хотите.
      А если все таки вам по каким то причинам обязательно это делать именно с микроконтроллерами, то надо понимать, что скорости даже самых простых микроконтроллеров вполне хватает для обработки и 10 и 100 раз в секунду этого несчастного парсинга, преобразования координат, вычисления векторов перемещения и ещё и для записи всего этого в сжатом формате.
      Так что суть вопроса не совсем понятна как и цель. Просто я почему скептически к этому отношусь. Вы делаете устройство, значит надо просчитать его энергопотребление, а там сразу два устройства это sd карточка (ну или флешка) и модуль gps являются достаточно прожорливыми. И это что теперь с собой электростанцию возить и заряжать каждый день. Закончится все это тем, что человек забудет зарядить. Так что на мой взгляд иногда проще совместить с телефоном и не плодить устройства с дублирующими функциями.

    • @golyakoff
      @golyakoff 3 года назад

      @@VladimirMedintsev , спасибо за ваш ответ, отрезвляете прагматизмом, это - полезно. Надеюсь, я не отнял много времени, вы как-будто немного раздражены. Цель - протестировать идею соображениями опыта - достигнута. В начале пути очень мало возможности оценить критически, насколько жизнеспособную вещь ты затеял. Ещё раз спасибо и удачи каналу!

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад +1

      Я не раздражен, я на самом деле опечален. Я все мечтаю о чем-то таком масштабном необычном и интересном, а народ продолжает делать трекеры. Ничего личного. Просто ворчу.

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад

      @@golyakoff Есть кстати хорошая бизнес идея. Делаем миниатюрные трекеры и вешаем их на стада баранов. А потом данные на сервер и треку присваиваем уникальный код. Этот код печатаем QR кодом и крепим на баранину при продаже. И любой желающий заходит на сайт "Где Гулял Мой Шашлык" и может оценить маршруты своего шашлыка. Опять таки поддержка производителей.

    • @golyakoff
      @golyakoff 3 года назад

      ​@@VladimirMedintsev Вот же ж... я на самом деле с минуту пытался понять, иронизируете вы про баранов и трекер или нет (признаться, до сих пор допускаю, что так и есть). Однако, это мне напомнило двухгодичной давности выступление Марка Руссиновича на MS Build. Он рассказывал про возможные перспективы использования блокчейн-технологии в схожей сфере. Идея заключалась в том, что добросовестные поставщики, например, товаров ограниченного срока жизни (тут как раз баранина и шашлык сыграли), могли бы с помощью технологии блокчен гарантировать неподдельности информации в ключевых временных точках жизни товара. Транзакции приёма-передачи товара в каждом промежуточном узле, накладываясь "поверх" предыдущих транзакций, "гарантирует" их "достоверность". И вы вечером пьёте молоко, будучи уверенными, что оно в 6:17 ещё гуляло по лужайке, в 10:40 было разлито в пакеты, в 12:35 отгружено поставщику и т.д...
      Бизнес-идея за бизнес-идею )
      Вообще, кстати, выступление мне было интересно доступным объяснением, как мир bitcoin устроен, гуглится по словам "microsoft ignite russinovich blockchain".

  • @НиколайКрасиков-ы8й

    Можно какой-то проект сделать типа прием этих координат на stm32f4discovery и вывод на дисплей или хотя бы в терминал? Я так понимаю должно быть какой-то передатчик, который будет отправлять NMEA, а на stm32 какой-то приемник, который будет принимать их и парсить, да? А какой приемник можно подключить или сделать на stm32 подскажи? Я новичок, но очень интересно, хочется разобраться. Напиши пожалуйста поподробнее)

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      Для этого проекта нужен:
      1. Навигационный приемник. Тут вариантов масса. В видео на 01:50 показан навигационный приемник на базе GSM модуля MC65, на самом деле подойдет абсолютно любой навигационный модуль с Aliexpress они там от 200 рублей начинаются. Ну к примеру - GY-NEO-6M-V2
      2. В качестве платы на которой вы будете расшифровывать и как-то визуализировать данные вы свободно можете использовать ЛЮБУЮ плату типа discovery с любым экраном.
      3. Подключение 2 провода rx - tx интерфейса uart и 2 провода питание.

    • @НиколайКрасиков-ы8й
      @НиколайКрасиков-ы8й 4 года назад

      @@VladimirMedintsev А принимать откуда NMEA? Найти Эмулятор данных NMEA или что, передатчик какой-то? Так понял по вашему сообщению как выглядит примерно схема.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      @@НиколайКрасиков-ы8й Не понял, вы меня троллить пытаетесь что-ли? Ну взяли бы в интернете статью прочитали про то как работает спутниковая навигация. В небе болтаются спутники группировок Глонасс, GPS и так далее. Их много. Они передают сигналы. Есть модули типа GY-NEO-6M-V2 которые антенной ловят сигнал со спутников и делают его математическую обработку. Эти модули имеют разную цену, она зависит от точности. Минимальная 200 - 500 рублей. Такой модуль на выходе дает поток данных NMEA. Вы берете этот поток заводите его на плату discovery и дальше обрабатываете или визуализируете как вам угодно.

    • @НиколайКрасиков-ы8й
      @НиколайКрасиков-ы8й 4 года назад

      @@VladimirMedintsev Извините, не капли, я просто только начал путь в МК и во всем , что связано с Радио/программированием. Спасибо большое, что объяснили!

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      Ну просто навигация это не то, с чего стоит начинать свой путь. Выберите что-нибудь проще и попробуйте.

  • @ИгорьАслаев
    @ИгорьАслаев 4 года назад

    а что мешает запрашивать информацию с частотой 10 Гц ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      А зачем? в навигаторе, в коптере я понимаю. А в отслеживании местоположения груза вам это для чего надо?

    • @ИгорьАслаев
      @ИгорьАслаев 4 года назад

      @@VladimirMedintsev вопрос не в том, для чего, а в том, что мешает ? Если чип готов отдавать инфу с частотой 10 Гц, то не вижу проблем запрашивать у него информацию с той же частотой. Или, в чем я не прав ? Протокол обмена я не обсуждаю... что есть - с тем и работаю

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      В моем конкретном случае мешает энергопотребление. У меня устройство просыпается, получает координаты с желаемой точностью обрабатывает и снова засыпает. Мне лишние движения не нужны. да и у контроллера тоже есть чем заняться.

    • @ИгорьАслаев
      @ИгорьАслаев 4 года назад

      @@VladimirMedintsev так в том то и дело, что вы про это не сказали. Я думаю, если вы делаете обзоры для новичков, нужно эти нюансы описывать. А опытных зрителей это только смущает. примите это, как взвешенную критику. Или не принимайте )

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +3

      @@ИгорьАслаев На самом деле я всегда рад критике, но здесь уж простите ее нету, потому, что я так же не сказал и о том, на каких скоростях работают эти модули, я ничего не сказал о настройках UART и упустил еще огромное количество деталей касательно самого протокола. Более того, некоторые мелочи я исказил. Уместить все мелочи в одном видео просто невозможно. Вам кажется важным одно, другим людям совершенно другое. В этом наверное и прелесть мы все разные.