Índice:

Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino): 8 etapas
Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino): 8 etapas

Vídeo: Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino): 8 etapas

Vídeo: Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino): 8 etapas
Vídeo: GPS com Arduino e Google MAPS 2024, Julho
Anonim
Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino)
Rastreador GPS em tempo real caseiro (SIM800L, Ublox NEO-6M, Arduino)

Então você tem um módulo GSM por aí como eu? Também um rastreador GPS?

Nós pensamos o mesmo!

Nestes instrutíveis, tentarei guiá-lo como atingir seu objetivo do ponto de vista de um novato.

Como eu não tinha nenhum conhecimento prévio de engenharia elétrica (para ser honesto, o projeto não precisa de tanto, mas nah), e não tinha ideia de como fazer um dispositivo que bombeia dados em tempo real para um servidor web, encontrei vários problemas. Ainda assim, finalmente consegui fazer as coisas funcionarem.

Portanto, neste tutorial, quero enfatizar os erros que um iniciante pode cometer e construir o projeto de acordo.

Lembre-se: sempre tome cuidado ao trabalhar com eletricidade!

NOTA: Não sou profissional. O código pode não ser sofisticado o suficiente para todas as suas necessidades. O projeto pretende ser um "projeto hobby", mas! funcionou para mim. E se funcionasse para mim, funcionaria para você também!

Etapa 1: Pré-requisitos

Pré-requisitos
Pré-requisitos
Pré-requisitos
Pré-requisitos
Pré-requisitos
Pré-requisitos

MÓDULO GSM - SIM800L

  • Muito pequeno, fácil de usar
  • Capaz de usar internet móvel (GPRS)
  • Barato

MÓDULO GPS - Ublox NEO6M

  • Também pequeno
  • Lida muito bem com seu trabalho

Um microcontrolador - pode ser qualquer coisa - você pode usar o famoso Arduino Uno ou o Nano para liberar espaço

Bateria - usei uma célula 18650 como principal e única fonte de alimentação (nominal 3,7 V)

Suporte de bateria - por quê? - porque soldar uma bateria 18650 é muito perigoso por causa do calor.

DC-DC Boost Converter Step Up Module 5V - Obrigatório, já que o Arduino que usei precisa de 5V

Ferramentas, coisas básicas que podem ser úteis:

Fios, ferro de solda, placa de ensaio para teste

Etapa 2: conceito principal

Conceito Principal
Conceito Principal

O conceito principal do sistema é o seguinte:

Consiste em 3 partes:

  1. Um dispositivo - que tem as coordenadas GPS adequadas e pode se conectar a um servidor remotamente e enviar dados para ele
  2. Um servidor web - que pode receber dados de entrada - armazena-os - e serve outros clientes
  3. A plataforma - onde podemos ver as coordenadas - Idealmente, agora deve ser um aplicativo móvel ou um site

Etapa 3: o módulo SIM800L

O Módulo SIM800L
O Módulo SIM800L
O Módulo SIM800L
O Módulo SIM800L

Tive momentos difíceis com o módulo.

Gostaria de começar com algumas características e referências.

De acordo com a folha de dados:

  • Opera entre 3,4 V - 4,4 V
  • Ele pode enviar SMS, fazer chamadas de voz para outros telefones e até mesmo conectar-se à Internet!
  • Podemos nos comunicar com ele por meio de comandos AT!
  • Ele pode usar até 2A nos horários de pico! Nota: você provavelmente não será capaz de medi-lo com um multímetro - por causa de suas baixas taxas de amostragem

Minha experiência é que o SIM800L abaixo de 3,8 V realmente não funciona.

Para mais informações visite: ficha técnica

Portanto, seu trabalho é fornecer pelo menos 3,8 V para o módulo (idealmente 4 V), uma fonte de alimentação que produza pelo menos 2 A.

Antes de usar o módulo no dispositivo final, sugiro que você estabeleça comunicação com seu SIM800L e seu computador para se certificar de que seu dispositivo está funcionando corretamente.

Em primeiro lugar, conecte o cartão SIM como na imagem acima.

Para conectá-lo ao seu PC, você pode usar um conversor USB para TTL ou um Arduino.

Agora, vou com o Arduino.

Conecte o SIM800L VCC e o GND aos terminais da fonte de alimentação.

Conecte TX ao 10º pino digital do Arduino, RX ao 11º pino digital do Arduino.

Baixe o código, vinculado nesta etapa.

Com o código, você pode enviar comandos e recuperá-los em seu Monitor Serial.

Alguns comandos simples:

AT Retorna OK, se a conexão estiver OK.

ATD + 123456789; Ligue para um determinado número de telefone. Nota: Não se esqueça de terminar com ponto e vírgula.

AT + CPIN? Retorna o status do cartão SIM (bloqueado ou não)

Se você quiser enviar um SMS, você precisa terminar sua entrada com um caractere especial, isso pode ser feito com o símbolo '$'.

Para comandos mais interessantes, sugiro que você leia isto.

Existem vários comandos, familiarize-se com eles, são muito úteis.

Há um LED vermelho de status que informa em qual operação o SIM800L está.

64 MS LIGADO - 800MS DESLIGADO - SIM800L não está registrado na rede.

64 MS LIGADO - 3000MS DESLIGADO - SIM800L está registrado na rede.

64 MS LIGADO - 300MS DESLIGADO - SIM800l está no modo GPRS

Se o SIM800L continuar reiniciando após cerca de 8 a 10 piscadas, pode ser devido à falta de fonte de alimentação eficiente.

Se você não obtiver OK após AT, verifique a fiação! Se você tiver um multímetro, verifique a continuidade dos fios.

Verifique as conexões dos fios e juntas de solda! O módulo só funcionará quando estiver piscando.

Etapa 4: Ublox Neo 6m

Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m

Algumas características

  • Tensão máxima: 3,6 V - eu o alimentei com o pino de 3,3 V do Arduino
  • O consumo de corrente máximo é 67mA - então você pode ligá-lo a partir do Arduino
  • Faixa de temperatura: -40-85 Celsius (acho que vai caber em você)

A unidade que encomendei veio com uma antena vista na foto, basta conectá-la no slot correspondente.

O dispositivo quando possui sinais, pisca com LED azul.

Primeiro, verifique como funciona um GPS aqui, caso não saiba.

Quando o dispositivo está ligado e encontra 3 satélites, ele envia muitos valores separados por vírgulas para o Arduino como acima.

Para ajudar em nosso trabalho, podemos usar algumas bibliotecas externas para analisar esses dados para torná-los mais legíveis por humanos.

Você pode usar a biblioteca TinyGps ou a biblioteca NeoGPS. Usei o segundo porque é mais leve.

Para testar, você deve conectar os pinos de alimentação ao arduino 3.3V e GND.

Baixe este código e use-o com seu GPS. RX Digital pino 10, TX Digital pino 11

Nota: Não se esqueça de usar o módulo ao ar livre, de preferência quando não houver nuvem.

Depois de meio minuto, o dispositivo deve piscar e emitir suas coordenadas de GPS!:)

Depois de saber que o seu SIM800L e o módulo GPS estão funcionando adequadamente, você pode ir para a próxima etapa.

Etapa 5: Circuito

Circuito
Circuito

O circuito é como na foto.

Portanto, a bateria de 3,4 V - 4,2 V 18650 é a principal fonte de alimentação. O Sim800L obtém a energia diretamente dele. Existe um capacitor entre eles em paralelo para melhorar a estabilidade do circuito.

Ao escolher um capacitor, você deve escolher um capacitor de baixo ESR.

Um conversor elevador 5V aumenta a tensão da bateria para 5V (ir é necessário porque o Arduino funciona com 5V).

O barramento de alimentação de 5 V é conectado ao Nano aqui. O Sim800L e o Neo6m estão conectados ao Nano como na foto. (Sim Tx-D10, SimRx-D11; NeoTX-D3, NeoRX-D4)

O D12 está conectado ao RST, portanto, podemos reiniciar o sistema de maneira programática (exceto o SIM800L). NOTA: Este método de reinicialização pode não ser a melhor prática)

E por último, dois LEDS são conectados ao NANO, para que possamos avisar ao usuário se algum erro está ocorrendo.

Etapa 6: Código

O código está anexado ao Instructables ou dê uma olhada no github.

Você pode modificá-lo para funcionar adequadamente de acordo com as suas necessidades ou pode usar o código de outra pessoa, se desejar.

waitUntilResponse (); a função auxiliar foi retirada de seu código. Verifique o trabalho dele e o código também!

Resumidamente, na função de configuração, precisamos habilitar a conexão GPRS do nosso módulo SIM800L. Sabemos se foi bem-sucedido se o LED piscar rapidamente. (setupGPRSConnection ())

Na função de loop - a cada 15 segundos a função sendData () é chamada - que tem a solicitação

Usei strings de consulta para enviar dados ao servidor da web neste formato:

endereço IP / arquivo.php? key = value & key = value, por exemplo

Se ocorrer algum erro, o LED correspondente acenderá. (SIM, GPS)

Etapa 7: servidor da web

Servidor web
Servidor web

Para nosso uso, um servidor web simples e leve é suficiente.

Existem algumas opções que você pode escolher:

  1. Você pode usar um servidor remoto de uma empresa, pelo qual provavelmente precisará pagar regularmente.
  2. Você pode usar seu próprio computador. Eu apenas o sugiro para teste, não é muito eficiente operá-lo 24 horas por dia, 7 dias por semana, por causa do desperdício de energia, questões de segurança.
  3. Você pode usar um computador minúsculo, como o Raspberry PI. Leve, barato, não consome muita energia.

Tentei a 2ª e a 3ª opção, funcionaram bem. Bem, o objetivo principal não são os servidores deste instructables, mas sugiro alguns conselhos.

Se você usa um PC, provavelmente usa o Windows. Se eu fosse você, instalaria um servidor Apache ou XAMPP nele.

O XAMPP já possui PHP, além de incluir HTML, Perl e um Sistema de Gerenciamento de Banco de Dados. Com o PHP, você pode fazer um servidor dinâmico. Se você quiser usar o servidor local que acabou de criar de qualquer lugar do mundo, você precisa atribuir um IP estático ao seu PC e fazer algum redirecionamento de porta. Um tutorial útil para IP estático:

E toda a coisa do portforwarding:

Se você tem uma framboesa, é uma boa prática usá-la. Você pode se familiarizar com os comandos do Linux e executar seu próprio servidor 24 horas por dia, 7 dias por semana.

O sistema operacional era o Raspbian Jessie com uma configuração headless (sem teclado, monitor) - eu o controlei com meu computador com conexão SSH.

Usei o Putty para fazer login no meu Raspberry. Não se esqueça de mudar a senha da sua conta, para que outras pessoas não possam entrar em seu Pi. O padrão é: pi, passw: framboesa.

Eu instalei um servidor web lighttpd com sqlite3. Bom tutorial encontrado aqui:

Usei principalmente PHP no código do servidor. Com PHP você pode receber dados, ler / escrever bancos de dados - codificar uma consulta em um formato json, etc. … Este tutorial irá ajudá-lo muito, como gerenciar seu banco de dados com PHP.

Você também pode ver meu código no github, na pasta server_files.

E, claro, você deve habilitar o encaminhamento de porta para o seu Pi no seu roteador, se quiser acessá-lo remotamente.

Etapa 8: Fim / Experiência

Um cerco ainda está para ser feito.

Minha experiência é que o sistema não funciona muito mal. Mas há melhorias de estabilidade aguardando.

Se o rastreador não funcionou com o código que anexei, não se preocupe. Tente se certificar de que o SIM800L e o NEO 6M estão funcionando como deveriam. Você pode modificar livremente meu código ou procurar um melhor. Só espero poder mostrar um exemplo de como você pode completar este projeto.

Aceito qualquer conselho, correção de comentários. Sinta-se a vontade para perguntar.

Recomendado: