Оглавление:

GPS-мониторинг с помощью проекта OLED-дисплея: 5 шагов (с изображениями)
GPS-мониторинг с помощью проекта OLED-дисплея: 5 шагов (с изображениями)

Видео: GPS-мониторинг с помощью проекта OLED-дисплея: 5 шагов (с изображениями)

Видео: GPS-мониторинг с помощью проекта OLED-дисплея: 5 шагов (с изображениями)
Видео: Вывод изображения с Arduino и ESP32 на монитор 2024, Ноябрь
Anonim
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея
GPS-мониторинг с помощью OLED-дисплея

Всем привет, в этой быстрой статье я поделюсь с вами своим проектом: GPS-модуль ATGM332D с микроконтроллером SAMD21J18 и дисплеем SSD1306 OLED 128 * 64, я построил для него специальную печатную плату на Eagle Autodesk и запрограммировал ее с помощью Atmel studio 7.0 и ASF4, поэтому в этой статье я поделюсь с вами этим путешествием и файлами, которые я использовал, если вам интересно сделать это самому.

Теперь, если вы программируете свой MCU / плату разработки с помощью Arduino, этот проект должен быть для вас относительно простым, но здесь я буду использовать ASF4 (Advanced software framwork 4) от Atmel / Microchip, который основан на языке C и даст вам представление чтобы узнать, как читать сообщение GPS NMEA с помощью асинхронного драйвера USART (обратный вызов), и предоставить вам простую библиотеку, которую вы можете использовать с любым микроконтроллером и другой платформой, просто добавив соответствующий драйвер, который вы используете для получения сообщения от GPS (сообщение NMEA).

Я разделю эту статью на:

  1. Дизайн печатной платы.
  2. Спецификация, необходимая для сборки печатной платы
  3. Быстрый просмотр программного обеспечения и самого кода, а также проверка аппаратного и программного обеспечения.
  4. наконец, но не в последнюю очередь, некоторые улучшения для этого проекта.

Вы найдете все материалы, связанные с этим проектом, на Github (здесь)

Шаг 1: проектирование печатной платы с использованием Eagle

Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle
Дизайн печатной платы с использованием Eagle

Этот проект в основном основан на модуле GPS ATGM332D, простом в использовании GPS, поскольку для работы требуется всего пара пассивных компонентов, и мы могли бы добавить резервную батарею, чтобы сэкономить время / дату, если мы отключим основной источник питания от модуля.

и для управления всеми сигналами в схеме я использовал микроконтроллер ATSAMD21J18B, пакет TQFP64, поскольку он имеет 128 Кбайт памяти программ и 32 Кбайт памяти данных (и у меня их много на рабочем месте).

Схема должна питаться от источника USB 5V, также USB может действовать как виртуальный COM-порт (CDC USB), и вы можете добавить для него код, если хотите общаться с устройством через USB.

Для дисплея я выбрал 0,96-дюймовый OLED-дисплей SSD1306 с шиной SPI, он небольшой, но подходит для размера печатной платы, который я хотел, размер платы 100x31 мм.

Программирование микроконтроллера будет осуществляться через программатор SWD (я использую Atmel ICE) и подключать его через 1,27-мм 10-контактный разъем.

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

Шаг 2: Пайка печатной платы

Пайка печатной платы
Пайка печатной платы
Пайка печатной платы
Пайка печатной платы
Пайка печатной платы
Пайка печатной платы

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

паять нижнюю часть немного проще, так как на ней есть только штекер SWD и резервная батарея, которую вы можете припаять с помощью паяльника.

перед подключением схемы к любому источнику питания USB проверьте отсутствие короткого замыкания.

Подключите антенну GPS и убедитесь, что вы правильно припаяли ее разъем, я закрепил антенну на нижней стороне платы.

Шаг 3. Программное обеспечение… Функциональность… результаты

Image
Image
Программное обеспечение… Функциональность… результаты
Программное обеспечение… Функциональность… результаты
Программное обеспечение… Функциональность… результаты
Программное обеспечение… Функциональность… результаты

Программа будет разделена на 4 части:

  1. USART для связи с GPS-модулем ATGM332.
  2. SPI для связи с OLED.
  3. USB CDC.
  4. GPIO для управления светодиодами

сначала подключите разъем USB для подачи питания на схему, а затем подключите ленточный кабель к разъему SWD.

Загрузите код с github (ссылка здесь).

Чтобы получить данные о геолокации, у вас есть 3 различных варианта сообщений NMEA:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Я использовал предложение GPRMC для получения местоположения, времени и даты (время 0,0 GMT), поэтому в коде вы найдете:

GPRMC. Enable = 1; / * 0, если в этом сообщении нет необходимости * /

GPGGA. Enable = 0; / * 0, если в этом сообщении нет необходимости * /

GPGLL. Enable = 0; / * 0, если в этом сообщении нет необходимости * /

вы можете включить их все вместе и читать их, одновременно получая нужные данные.

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

просто, если Fix равен «A», это означает, что местоположение доступно, если Fix равно «V», это означает, что местоположение недоступно.

обратите внимание, что ATSAMD21 имеет внутренний RTC, но здесь я не использую его, а вместо этого использую время и дату непосредственно с GPS, поэтому, если вы не хотите использовать резервную батарею CR1220, как только вы отключите источник питания USB, вы потеряете время / дату, и в следующий раз, когда вы включите схему, область времени / даты на дисплее будет пустой до тех пор, пока GPS не получит действительное значение времени / даты.

дисплей покажет вам текущий статус GPS и покажет географическое местоположение, как только оно станет доступным, однако на плате есть 3 светодиода:

  1. Зеленый светодиод подключен к PA06 и будет мигать, если есть допустимое значение географического местоположения.
  2. Оранжевый светодиод подключен к PA07 и будет мигать раз в секунду, если нет действительного географического местоположения.
  3. Красный светодиод, подключенный к контакту PPS модуля GPS, будет мигать только при наличии действительного сигнала, связанного с местоположением.

Полученные результаты

Схема работала очень хорошо со мной, получение геолокации от GPS заняло 20-30 секунд на открытом воздухе с ясным видом на небо и между зданиями без каких-либо проблем, даже с антенной на нижней стороне платы.

Шаг 4. Чехол с 3D-печатью… Что-то вроде

Чехол с 3D-принтом… Что-то вроде
Чехол с 3D-принтом… Что-то вроде

Я подготовил простой футляр (более точный держатель) для этой схемы, но из-за эпидемии COVID-19 и блокировки, в которой я сейчас нахожусь, я не смог добраться до своего 3d-принтера, чтобы распечатать его, поэтому я обновлю этот раздел с помощью stl. файл и фотографии для владельца, когда они будут доступны.

Шаг 5. Что нужно улучшить…

Что нужно улучшить…
Что нужно улучшить…
Что нужно улучшить…
Что нужно улучшить…
Что нужно улучшить…
Что нужно улучшить…
  1. Переместите разъем SWD на верхнюю сторону, так как его легче соединить с вашим программатором.
  2. Питая схему от литиевой батареи, я сделал это, припаяв перемычку, и она работала нормально, учитывая, что линейный (LDO) регулятор имеет падение напряжения V, если (Vbat - Vout) меньше предела Vdrop, схема может не работать. должным образом.
  3. сделать пользовательскую кнопку немного больше, чтобы ее было легче нажимать.
  4. добавление кода USB CDC, чтобы вы могли общаться / создавать специальную программу для MAC / PC / linux.
  5. В качестве антенны GPS я использовал активную антенну для этого проекта, возможно использование пассивной антенны путем добавления малошумящего операционного усилителя, такого как AT2659 (также см. Схему на ATGM332 Datasheet P.14).
  6. для OLED 0.96 'SSD1306, официальная библиотека от микрочипа, изначально предназначенная для отображения 128 * 32, чтобы изменить код для работы с 128 * 64, вам нужно перейти на ssd1306.c и изменить код (проверьте изображение).

Рекомендуемые: