
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04




Всем привет, в этой быстрой статье я поделюсь с вами своим проектом: 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).
Я разделю эту статью на:
- Дизайн печатной платы.
- Спецификация, необходимая для сборки печатной платы
- Быстрый просмотр программного обеспечения и самого кода, а также проверка аппаратного и программного обеспечения.
- наконец, но не в последнюю очередь, некоторые улучшения для этого проекта.
Вы найдете все материалы, связанные с этим проектом, на Github (здесь)
Шаг 1: проектирование печатной платы с использованием 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. Программное обеспечение… Функциональность… результаты




Программа будет разделена на 4 части:
- USART для связи с GPS-модулем ATGM332.
- SPI для связи с OLED.
- USB CDC.
- GPIO для управления светодиодами
сначала подключите разъем USB для подачи питания на схему, а затем подключите ленточный кабель к разъему SWD.
Загрузите код с github (ссылка здесь).
Чтобы получить данные о геолокации, у вас есть 3 различных варианта сообщений NMEA:
- GPGGA
- GPRMC
- 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 светодиода:
- Зеленый светодиод подключен к PA06 и будет мигать, если есть допустимое значение географического местоположения.
- Оранжевый светодиод подключен к PA07 и будет мигать раз в секунду, если нет действительного географического местоположения.
- Красный светодиод, подключенный к контакту PPS модуля GPS, будет мигать только при наличии действительного сигнала, связанного с местоположением.
Полученные результаты
Схема работала очень хорошо со мной, получение геолокации от GPS заняло 20-30 секунд на открытом воздухе с ясным видом на небо и между зданиями без каких-либо проблем, даже с антенной на нижней стороне платы.
Шаг 4. Чехол с 3D-печатью… Что-то вроде

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



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

Как сделать RADAR с помощью Arduino для научного проекта | Лучшие проекты Arduino: Привет, друзья, в этом руководстве я покажу вам, как создать удивительную радарную систему, построенную с использованием Arduino nano, этот проект идеально подходит для научных проектов, и вы можете легко сделать это с очень меньшими инвестициями и шансами, если выиграть приз будет большим
Псевдоним проекта: 5 шагов (с изображениями)

Project Alias: Alias - это обучаемый «паразит», который призван дать пользователям больше контроля над своими умными помощниками, как в плане настройки, так и в отношении конфиденциальности. С помощью простого приложения пользователь может обучить Псевдонима реагировать на настраиваемое слово / звук пробуждения, а однажды
Создание профессионального пульта дистанционного управления для вашего проекта Arduino дома: 9 шагов (с изображениями)

Создание профессионального пульта дистанционного управления для вашего проекта Arduino дома: я сделал проект, в котором для управления парой вещей использовались arduino и ИК-библиотека, поэтому в этой инструкции я покажу вам, как вы можете перепрофилировать любой пульт дистанционного управления, чтобы он был использовали ваш следующий проект. И вам не нужно ничего особенного, чтобы сделать хороший туалет
Управление устройствами с помощью голосовых команд с помощью NodeMCU: 7 шагов (с изображениями)

Управление устройствами с помощью голосовых команд с помощью NodeMCU: я просто хочу сказать всем привет, я впервые пишу обучающий проект. Английский не является моим родным языком, поэтому я постараюсь изложить его как можно короче и понятнее. Управление устройствами с помощью голосовых команд - вещь не странная
8 Управление реле с помощью NodeMCU и ИК-приемника с помощью Wi-Fi, ИК-пульта ДУ и приложения для Android: 5 шагов (с изображениями)

8 Управление реле с помощью NodeMCU и ИК-приемника с помощью Wi-Fi и ИК-пульта дистанционного управления и приложения для Android: управление 8 релейными переключателями с помощью nodemcu и ИК-приемника через Wi-Fi, ИК-пульт и приложение для Android. ИК-пульт работает независимо от Wi-Fi-соединения. ЗДЕСЬ