Отладочная плата STM32F429I и GPS модуль. Получаем детальную информацию о спутниках

в 14:34, , рубрики: gps, stm32, Программинг микроконтроллеров, метки: ,

image

Приветствую читатели!

Не так давно мне в руки попала отладочная плата STM32F429I-DISCO на базе контроллера STM32F429ZI.
Пожалуй главной ее отличительно особенностью является помимо достаточно производительного процессора Cortex M4 — интегрированный экран на 2,4'' дюйма, которого вполне хватает для многих экспериментов.
Первым делом я естественно начал искать по нему документацию и примеры. Хорошая документация вместе с примерами нашлась прямо на сайта st.com, но естественно хотелось большего, туториалов и прочего. То чего так не хватает начинающему программисту под ARM. Но детальный поиск не дал каких то больших результатов. Поэтому пришлось собирать информацию по крохам, анализировать, пересматривать и тестировать ее.

И я решил как то попробовать поспособствовать популяризации данной удобной платформы.
Но данный пост не призван решить какие то всеобъемлющие проблемы, он ориентирован безусловно на начинающих и на тех, кто хотел бы попробовать, но считает, что это слишком сложно.

Тем кому это может показаться интересным, добро пожаловать под кат.

В двух словах скажу о себе

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

К делу

Теперь о сути проекта и кратко об истории, почему меня это заинтересовало.
Какое то время назад я захотел сделать свой собственный GPS-трекер и в процессе его создания столкнулся с рядом проблем. Одной из которых была проблема антенн, нужно было подобрать хорошую антенну, а так же правильно ее подключить. Другой проблемой, которая вытекала из первой — анализ той или иной GPS антенны на основании той информации которую предоставляет GPS-модуль. И с появлением данной отладки эта задача стала для меня легко реализуема.

За основу я взял модуль EB-500, который легко можно достать и ценник у него вполне гуманный, а главное в интернете достаточно много информации по нему. Например тут. В этом посте я не буду описывать как сделать свой GPS модуль. Его можно купить готовый, а можно легко спаять самому по ссылке выше.
Так же я считаю что данный код без адаптации сможет работать с разными модулями, поддерживающими протокол NMEA-0183, но подтвердить это не могу — не проверял лично.

Среда разработки

После непродолжительных метаний выбрал среду разработки KEIL. На мой взгляд это одна из самых удобных сред разработки из существующих под STM32.

Теперь программирование

Начал я естественно с более простых вещей, освоился с периферией, с дисплеем и начал заниматься непосредственно проектом.

Первой задачей было написать приличную библиотеку для работы с USART-ом для общения с GPS модулем.
Второй задачей было написать библиотеку для анализа данных приходящих от GPS модуля, в моем случае это разбор NMEA команд.
Последней задачей было вывести информацию на экран отладки и представить ее в более менее удобном для восприятия и анализа виде.

Так же для удобства отладки кода разобрался с SWO (Serial Wire Viewer), через этот порт очень удобно передавать отладочную информацию прямо через USB подключение отладочной платы.

В код, чтобы все не было слишком скучно добавил картинку спутника в качестве заставки, показывающуюся при включении платы.

Собственно что получилось посмотреть можно тут:

На видео показано 3 этапа. Первый — подключена активная антенна, которая висит на окне. Второй — антенна убрана от окна вглубь квартиры. Третий — активная антенна отключена от модуля.

Код

Я решил не вываливать весь код здесь, а выложил его на GitHub-е, он рабочий, проверенный и довольно простой, думаю ни у кого не возникнет проблем с ним, хотя сразу оговорюсь — до совершенства ему очень далеко, так как я только начинающий «C» программист, прошу это учитывать.

Один момент только мне кажется имеет смысл пояснить. У меня в коде настроена работа с USART1 и скорость 9600, но все эти настройки могут быть легко переключены в заголовочном файле /mylibs/usartlib.h

Код на GitHub

Дальнейшие планы по развитию проекта

Дальше я хочу реализовать функцию загрузки Эфемерид в модуль EB-500, подключив к отладке еще и GPRS модуль.

На этом все, надеюсь мои наработки кому-нибудь пригодятся. Удачи!

Автор: czuryk

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js