
Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03




Olá a todos, neste artigo rápido compartilharei com vocês meu projeto: Módulo ATGM332D GPS com Microcontrolador SAMD21J18 e display SSD1306 OLED 128 * 64, construí uma placa de circuito impresso especial para ele no Eagle Autodesk e programei usando Atmel studio 7.0 e ASF4. neste artigo compartilharei com vocês essa jornada e os arquivos que usei se você tiver interesse em fazê-lo sozinho.
Agora, se você está programando seu MCU / placa de desenvolvimento usando Arduino, este projeto deve ser relativamente fácil para você, mas aqui vou usar ASF4 (Advanced software framwork 4) da Atmel / Microchip que é baseado na linguagem C e lhe daria uma ideia para saber como ler a mensagem GPS NMEA usando o driver assíncrono USART (retorno de chamada) e fornecer uma biblioteca simples que você pode usar com qualquer microcontrolador e plataforma diferente, basta adicionar o driver apropriado que você está usando para receber a mensagem do GPS (mensagem NMEA).
Vou dividir este artigo em:
- Design de PCB.
- BOM que você precisa para montar o PCB
- Dê uma olhada rápida no software e no próprio código e faça um teste para o hardware e o software.
- por último, mas não menos importante, algum ponto de melhoria para este projeto.
Você encontrará todo o material relacionado a este projeto noGithub (aqui)
Etapa 1: Projeto de PCB usando Eagle




Este projeto é baseado principalmente em torno do Módulo GPS ATGM332D, GPS simples de usar, pois só precisa de alguns componentes passivos para funcionar, e poderíamos adicionar uma bateria de backup para economizar a hora / data se desligarmos a fonte de alimentação principal do módulo.
e para controlar todos os sinais no circuito, usei o microcontrolador ATSAMD21J18B, pacote TQFP64, uma vez que tem 128KByte de armazenamento de memória de programa e 32KByte de memória de dados (e tenho muitos deles em minha bancada).
o circuito deve ser alimentado por fonte USB 5V, também a USB pode atuar como porta COM virtual (CDC USB) e você pode adicionar um código para ela se quiser se comunicar com o dispositivo via USB.
para o display eu selecionei SSD1306 0,96 'display OLED com barramento SPI, é pequeno mas é o adequado para o tamanho de PCB que eu queria, a dimensão da placa 100x31 mm.
A programação do Microcontrolador será através do programador SWD (eu uso Atmel ICE) e conectarei através de um conector de pino de 1,27mm 10p.
também usei Fusion360 para obter uma visão 3D para a placa e você pode ver algumas imagens renderizadas para ela também.
Etapa 2: Soldando o PCB



Você tem a opção de pedir um estêncil com o seu PCB, é mais fácil aplicar a pasta de solda na placa usando o estêncil, usei uma placa quente para soldar os componentes, usar ar quente também está OK, mas tenha cuidado ao soldar o LED, pois eles são tão sensíveis ao calor.
soldar o lado inferior é um pouco mais fácil, pois ele tem apenas o conector do pino SWD e a bateria de backup, que você pode soldar usando o ferro de solda.
antes de conectar o circuito a qualquer fonte de alimentação USB, verifique se há curto-circuito.
conecte sua antena GPS e certifique-se de soldar o conector corretamente, eu fixei a antena na parte inferior da placa.
Etapa 3: Software … Funcionalidade … resultados




O software será dividido em 4 partes:
- USART para se comunicar com o módulo GPS ATGM332.
- SPI para se comunicar com OLED.
- USB CDC.
- GPIO para controlar LEDs
primeiro conecte o conector USB para ligar o circuito e, em seguida, conecte o cabo de fita com o conector SWD.
Baixe o código do github (link aqui).
para obter a geolocalização, você tem 3 opções diferentes de mensagens NMEA:
- GPGGA
- GPRMC
- GPGLL
Usei a frase GPRMC para obter a localização, hora e data (hora é 0,0 GMT), portanto, no código você encontrará:
GPRMC. Enable = 1; / * 0 se não houver necessidade desta mensagem * /
GPGGA. Enable = 0; / * 0 se não houver necessidade desta mensagem * /
GPGLL. Enable = 0; / * 0 se não houver necessidade desta mensagem * /
você pode ativá-los todos juntos e lê-los ao mesmo tempo, obter os dados de que precisa.
assim que houver uma frase GPRMC válida, theGPRMC. Ready passará a ser 1 e você poderá obter todos os dados disponíveis nesta frase, verifique este link para ver os dados disponíveis nesta frase.
simplesmente se Fix for 'A', isso significa que o local está disponível, se Fix for 'V', isso significa que o local não está disponível.
note que ATSAMD21 tem RTC interno, mas aqui eu não uso e em vez disso uso hora e data diretamente do GPS, então se você não quiser usar a bateria de backup CR1220, assim que desligar a fonte de alimentação USB você irá perca a hora / data e, da próxima vez que ligar o circuito, a área da hora / data no visor ficará vazia até que o GPS tenha um valor de hora / data válido.
o display mostrará o status atual do GPS e mostrará a geolocalização assim que estiver disponível, no entanto, existem 3 LEDs na placa:
- LED verde conectado ao PA06 e piscará se houver um valor de geolocalização válido.
- LED laranja conectado ao PA07 e piscará uma vez por segundo se não houver geolocalização válida.
- O LED vermelho está conectado ao pino PPS do Módulo GPS e piscará apenas quando houver um sinal válido relacionado ao Local.
Resultados
O circuito funcionou muito bem comigo, pegar a Geo-localização do GPS levou 20-30 segundos ao ar livre com visão clara para o céu e entre prédios sem nenhum problema mesmo com antena na parte inferior da placa.
Etapa 4: Caixa impressa em 3D … Mais ou menos

Preparei uma caixa simples (suporte mais preciso) para este circuito, mas por causa da epidemia de COVID-19 e do bloqueio em que estou agora, não consegui acessar minha impressora 3D para imprimi-lo, então irei atualizar esta seção com stl arquivo e uma foto para o titular assim que estiver disponível.
Etapa 5: Coisas para melhorar …



- Mova o conector SWD para o lado superior, pois é mais fácil conectá-lo ao seu programador.
- Alimentando o circuito com bateria de lítio, fiz isso soldando um jumper e funcionou bem, lembrando que o regulador Linear (LDO) tem queda de tensão V se (Vbat - Vout) menor que o limite Vdrop o circuito pode não funcionar devidamente.
- tornando um botão do usuário um pouco maior para que seja mais fácil pressioná-lo.
- adicionando o código USB CDC para que você possa se comunicar / projetar um programa especial para MAC / PC / Linux.
- Para a antena GPS, usei antena ativa para este projeto, usando uma antena passiva é possível, adicionando baixo ruído op-Amp como AT2659 (verifique também o esquema no ATGM332 Datasheet P.14).
- para OLED 0.96 'SSD1306, a biblioteca oficial do microchip originalmente para exibição de 128 * 32, para modificar o código para funcionar com 128 * 64 você deve ir para ssd1306.ce modificar o código (verifique a imagem).
Recomendado:
Menu de exibição OLED do Arduino com opção de seleção: 8 etapas

Menu de exibição OLED do Arduino com opção de seleção: Neste tutorial, aprenderemos como fazer um menu com uma opção de seleção usando exibição OLED e Visuino. Assistir ao vídeo
Digital Ludo Dice com Arduino Projeto de exibição de 7 segmentos: 3 etapas

Ludo Dice digital com projeto de exibição de 7 segmentos Arduino: Neste projeto, a exibição de 7 segmentos é usada para exibir um número de 1 a 6 aleatoriamente sempre que pressionamos o botão. Este é um dos projetos mais legais que todo mundo gosta de fazer. Para aprender a trabalhar com display de 7 segmentos clique aqui: -7 segme
Programação de exibição Oled: 5 etapas

Programação do display Oled: Oled é o display mais simples e eficaz. Você pode fazer wearables ou qualquer tipo de dispositivo de monitoramento. usando OLED você pode fazer a estação meteorológica ou você pode exibir animações engraçadas. Eu procuro muitos artigos DIY no display OLED e não há uma exp adequada
Como controlar a exibição I2C Oled com Arduino: 9 etapas (com imagens)

Como controlar a exibição I2C Oled com Arduino: Este é um tutorial muito simples de como controlar a exibição I2C Oled com Arduino
Temperatura de exibição no módulo de exibição de LED P10 usando Arduino: 3 etapas (com imagens)

Exibir temperatura no módulo P10 LED Display usando Arduino: No tutorial anterior foi dito como exibir texto no módulo Dot Matrix LED Display P10 usando Arduino e conector DMD, que você pode verificar aqui. Neste tutorial, daremos um tutorial de projeto simples, utilizando o módulo P10 como meio de exibição