map_pin

GPS Parte 3: Localizador GPS com a BeagleBone Green

Na primeira parte sobre GPS, vimos como este sistema de rastreamento por satélite funciona. Já na segunda parte, vimos uma sentença NMEA funciona e como fazemos para decodificá-la.

Neste artigo, iremos colocar tudo o que vimos em prática. Sendo assim, vamos a lista de material necessária:

No meu caso, irei utilizar uma BeagleBone Green, que foi fornecida pela FILIPEFLOP e um modulo GPS ublox NEO-6m.

Antes de mais nada, vou explicar o que vamos fazer. Basicamente, iremos utilizar a BBG para controlar o GPS e servir como servidor de página para exibir um mapa com a localização atual do GPS. Na imagem abaixo você pode observar o resultado.

Código

Para criar a parte de templates e rotas foi utilizado o micro framework Bottle. O Bottle é um WSGI para Python, muito similar ao Flask. Optei por ele pelo fato de ser distribuido em um único arquivo, facilitando a vida de quem usa sistemas embarcados.

Outra dependência é o parser NMEA implementado na segunda parte deste tutorial.

No arquivo abaixo temos o template da página do mapa.

Como podemos observar o código é bem simples, e toda a parte de inicialização do mapa é feito nas linhas 20 a 38. O mapa faz parte da Google Maps Javascript API, o que facilita muito o desenvolvimento.

No arquivo abaixo temos o módulo responsável por conversar com o GPS.

Na linha 3 é importado o módulo UART do Adafruit, se você estiver usando um Raspberry Pi lembre-se de alterar o import. O método listen é quem faz praticamente todo o trabalho. Ele configura o UART, e fica escutando o GPS na porta serial. Ao receber os dados do GPS, é feita a decodificação da sentença, e se for uma sentença válida adicionamos na fila. A sentença VTG é ignorada pois ela não possui latitude e longitude.

O método start cria uma Thread para não dar lock na aplicação inteira enquanto a porta serial estiver em uso. Isto é necessário para iniciar o servidor WSGI, pois ele é que fica em lock na aplicação. Por fim, o método get_current_position retorna a posição atual do GPS se disponível.

No arquivo abaixo temos o setup do nosso WSGI.

Esta parte não tem muitos mistérios, mas é necessário resaltar que na linha 13, é necessário colocar a sua chave da Google Api para que o mapa seja carregado no browser, isto porque o JavaScript do mapa faz acesso as APIs do Google. Não se preocupe, este serviço é gratuito. 🙂

Na linha 19, podemos observar que é necessário iniciar a Thread do GPS, e na linha 20, o próprio WSGI.

O projeto em si é relativamente simples, sendo a parte do GPS a com complexidade maior. O intuito desta série de artigos, era mostrar como é simples interpretar os dados recebidos do GPS. Apesar de presente em nosso dia a dia, muitos nem fazemos ideia de como esta tecnologia funciona.

Você pode conferir o código fonte na íntegra no repositório de exemplos do Buteco.