Em suas horas vagas o autor deste blog é um corredor de rua amador (das provas de 10km, 21km e 42km). Todo corredor de rua (e outros tipos de esporte também) considera importante marcar/acompanhar o seu tempo, distância, pace, altitude, batimentos cardíacos, etc. 
   Acompanhar tempo de atividade é fácil, basta possuir um relógio de pulso (preferencialmente com cronômetro) ou celular; acompanhar batimentos cardíacos é relativamente barato e simples hoje em dia, visto que existe uma infinidade de “relógios de pulso” que fazem isso, como este da marca Polar na foto abaixo.
   Quando se fala em acompanhar altitude, velocidade, distância e pace, a brincadeira/atividade física se torna bem mais cara pois é necessária a utilização de um dispositivo com GPS (Sistema de posicionamento global). A partir de alguns anos atrás ficou um pouco mais fácil carregar um GPS na atividade física, pois todo telefone celular (smart phone) possui esta tecnologia; mas convenhamos que correr na rua ou em uma trilha por horas e horas carregando um celular não é nada prático, certo?.
   A preferência de todo atleta ao carregar um GPS é na forma de uma relógio de pulso, pois é prático, leve e (na maioria das vezes) à prova da água. O grande vilão dos GPS’s de pulso é o custo, que varia entre US$90 (para este da marca Tom-Tom) e US$300 (para este da marca Suunto).
___________________________________________________
   No artigo de hoje vou mostrar os detalhes de como eu fiz um GPS “de bolso” para me acompanhar nas corridas de rua, que ficou muito mais barato que qualquer relógio de pulso com GPS. Eu fiz este produto em pouco mais de três horas, incluindo soldar fiação entre as placas, programação do Arduino (controlador) e testes. 
   Obs: não existem milagres, obviamente eu não posso prometer pra ninguém que vai ser fácil (ou é possível) fazer um produto completo em três horas; eu só consegui tal feito pois já tinha conhecimento de todos os componentes, código e ajustes necessários.
   Eu defini que queria um sistema para ler dados do GPS e salva-los em um cartão de memória (micro SD), para que eu pudesse posteriormente ler, plotar e analisar os dados da minha corrida. Decidi não colocar um display no projeto por dois motivos: 1- o consumo de energia da bateria aumenta e 2- durante a corrida não é viável ficar tirando o GPS do bolso para olhar em um display.   
   O diagrama esquemático do produto pode ser visto logo abaixo (clique na imagem para ampliar). Ele consiste em cinco (5) componentes:
Arduino Pro Mini: é quem faz todo o controle da leitura do GPS e escrita no cartão de memória
Módulo de cartão de memória: é um breakout board da Catalex com um slot para cartão micro SD e regulador de tensão de 5V para 3.3V
Módulo GPS: é um GPS com antena; da marca uBlox, modelo Neo-6M
Regulador de tensão: é um conversor boost (elevador) de 1-4.5V para 5V destes que você compra por R$2 no eBay.
Bateria de Lítio: uma bateria 3.7V/600mAh, pois o GPS e o SD card consomem muita energia para funcionar (na imagem abaixo coloquei uma bateria de 100mAh, porque é a única que o Fritzing tem disponível).
   O código (sketch) do Arduino Pro mini foi criando na IDE do Arduino versão 1.6.8 (a mais atual no momento da criação deste produto), e  consiste na junção de dois sketchs: o ‘Datalogger.ino” que vem junto com a IDE na pasta de exemplos “SD” e outro que se faz uso da biblioteca TinyGPS++ (download aqui), que cuida da manipulação de dados no formato NMEA vindo do GPS.
   Ao conectar a bateria ao produto, ele automaticamente começa a procurar por satélites de GPS e salvar dados para o cartão microSD, somente parando quando a bateria for removida. Os dados salvos estão no formado “.csv”, mas nada impede que sejam salvos em qualquer outro formato (.gps, .txt, xls, etc..).
   O código completo que utilizei para este projeto pode ser baixado clicando na imagem abaixo (logotipo do GitHub).
   Segue fotos da montagem (clique na imagem para ampliar): 

   E também do percurso de teste do produto, a meia-maratona (21km) de Joinville-SC realizada em 13/03/2016, 

   O custo do produto foi US$19,20 (R$76,8) e está divido entre os seguintes componentes:
– Arduino Pro Mini > US$ 1,99
– MicroSD card Breakout > US$ 2,00
– Cartão micro SD 2GB > US$ 2,49
– Módulo GPS > US$ 9,95
– Bateria de lítio > US$ 2,01
– Conversor 3.7V p/ 5V > US$ 0,76
 Conclusão: por menos de R$80 eu fiz um sistema de rastreamento por GPS, capaz de funcionar por várias horas (não fiz o teste, mas pelos meus cálculos são mais de 6h), salvar dados como posição, velocidade e altitude em um cartão micro SD para posterior análise e plotagem. Foram três horas muito bem aproveitadas!.
Da ideia ao protótipo em 3 horas – GPS data logger
Classificado como:                                                

11 ideias sobre “Da ideia ao protótipo em 3 horas – GPS data logger

  • maio 4, 2016 em 8:49 pm
    Permalink

    Curti seu projeto, mas não manjo nada disso infelizmente… Gostaria de saber se dá para adaptar para veículo, com as mesmas funções, mas com as seguintes diferenças: 1) a alimentação seria feita diretamente pela bateria do veículo (12V) com on/off através da alimentação veicular, ou seja, ligou começa a gravar, desligou termina a gravação; 2) o formato a ser salvo seria .gpx. Haveria possibilidade de fazer dessa forma? Obrigado,

    Resposta
  • maio 5, 2016 em 12:17 am
    Permalink

    Olá Ricardo. É perfeitamente possível fazer: você só vai ter que achar um regulador de tensão de 12V (da bateria do carro) para 5V (para alimentar o sistema). A questão do .gpx é super tranquila também, tem uma linha no código do Arduino onde você define a extensão do arquivo gerado, é só colocar .gpx lá (tenha em mente que você vai ter que reorganizar o código um pouco para que ele salve os dados de latitude e longitude na ordem correta).

    Resposta
  • maio 12, 2016 em 2:56 pm
    Permalink

    Olá. Está dando inúmeros erros de compilação. O arquivo foi modificado? Pode, por favor, verificar? obrigado.

    Resposta
  • maio 12, 2016 em 3:43 pm
    Permalink

    Olá amigo.
    – Tente olhar em qual linha do programa está dando o primeiro erro.
    – Você instalou a biblioteca TinyGPS++ ?
    – Você não esqueceu de copiar um colchete ou ponto-e-virgula no fina do programa?

    Resposta
  • maio 12, 2016 em 5:18 pm
    Permalink

    Olá, Clóvis. Eu simplesmente baixei o seu arquivo e, antes de promover qualquer alteração, solicitei a compilação/verificação. Nesse momento, surgiu o erro:
    exit status 1
    no matching function for call to 'SDLib::File::print(double, int, int)'

    Sabe como ajudar? Eu já tenho as blibiotecas citadas em seu arquivo. Obrigado.

    Resposta
  • maio 12, 2016 em 5:19 pm
    Permalink

    Ele marca a linha:
    dataFile.print(gps.location.lng(),2,6);

    mas se a excluo, a seguinte é indicada com o erro….

    Resposta
  • maio 12, 2016 em 10:51 pm
    Permalink

    Valeu.

    Achei o projeto muito interessante e tão logo tenha tempo vou tentar executa-lo.

    Parabéns !!!!

    Resposta
  • maio 13, 2016 em 6:17 pm
    Permalink

    Olá. Creio que o comando dataFile.print comporte apenas dois argumentos, e está com três…

    Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
1 + 29 =