Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Olá a todos!
Eu queria construir uma solução completa para um dispositivo anti-roubo GPS veicular, que seria:
o mais barato possível
o mais completo possível
já que funciona-não há mais nada a fazer possível
Então, acabei construindo uma solução baseada em Arduino que me custou um total de 25 $, mais ou menos.
Como você pode ver no vídeo, ele simplesmente funciona! Você liga o carro, recebe uma notificação em seu celular de que o carro está em movimento, depois abre o aplicativo móvel e pode ver o carro se movendo em tempo real (com um atraso de atualização de 10 segundos).
Este tutorial o guiará por todas as etapas, tendo em mente que há vários componentes na solução:
1) o hardware (baseado em Arduino)
2) o software (programa Arduino)
3) mais software (recebimento do lado do servidor dos locais de GPS)
4) ainda mais software (o aplicativo móvel)
Vamos começar..
Etapa 1: O Hardware
Lista de compras:
1) Arduino Uno R3 ou clone. Usei o clone "DCcEle DCcduino uno", que parece não estar mais disponível. Aqui está um equivalente: no Aliexpress - 3,75 $
2) Unidade GPS para Arduino (novo módulo GPS GY-NEO6MV2 com antena grande NEO6MV2 Flight Control Flight Control EEPROM MWC APM2.5). Eu usei este: no Aliexpress - 6,66 $
3) Unidade GPRS / GSM para Arduino (SIM800L V2.0 5V GSM GSM GPRS MODULE Quad-Band W / Antena Cable Cap). Eu usei este: no Aliexpress - 6,71 $
4) Cabos duvidosos sobressalentes como estes: no Aliexpress - 0,89 $
5) Cartão SIM de dados IoT (ou qualquer outro cartão SIM com conexão de dados). Eu usei isto: do Hologram.io. Eu tenho um desenvolvedor grátis, apenas frete pago - $ 7,50
Total: 25,51 $, mas eu já tinha os cabos, então é menos de 25 $!
As duas fotos mostram os componentes antes da montagem e o produto final. As conexões que você deve fazer são:
Arduino - SIM800L
10 - RESET
GND - GND (2 deles)
5v - 5v
7 - SIM_TXD
8 - SIM_RXD
Arduino - GY-NEO6MV2
GND - GND
5v - VCC
3 - RX
4 - TX
Conecte todos os cabos e antenas e certifique-se de ligar o Arduino a partir de uma fonte capaz de fornecer picos de 2A. O USB do computador mal está bom (estou usando um MacBook Pro), um carregador de telefone "aleatório" não será suficiente. A maioria dos carros usb outlets também são inferiores a 1A. Se for esse o seu caso, você também precisa de uma fonte de alimentação 12v para carro 5v com pelo menos 2A.
Insira o cartão SIM. Se você estiver usando o cartão SIM Hologram.io, certifique-se de se registrar no painel e ativar o cartão SIM (leva alguns minutos / horas).
Etapa 2: o software (programa Arduino)
Presumo que você esteja familiarizado com a programação do Arduino. Caso contrário, comece com este guia: em Instructables.
Você só precisa de uma biblioteca externa, tive que instalá-la manualmente. Vá aqui: TinyGPS, exporte a biblioteca e instale-a em sua pasta Arduino local.
A partir daí, iremos "roubar" algum código de seu exemplo básico e modificá-lo para nossos propósitos.
Em seguida, iremos "roubar" este guia e modificar o código novamente para nossos propósitos.
O resultado é o programa.ino anexado.
Existem algumas coisas que você pode e TEM que ajustar:
os "SEGUNDOS" definem e o "SERVIDOR" define.
Eu defini SECONDS como 10 e aqui está o motivo: o programa de desenvolvedor Hologram.io oferece 1 MB de dados grátis por mês. O que significa que queremos minimizar os bytes enviados, mas também precisamos atualizar nossa posição com certa frequência. Usaremos comandos de modem AT padrão para enviar pacotes UDP ao nosso servidor recebendo as mensagens, com lat / lon, cada um usando 4 bytes, e velocidade usando 1 byte. Portanto, a atualização total do GPS é de 20 bytes (cabeçalho IP) mais 8 bytes (cabeçalho UDP) mais 9 bytes (carga útil). São 37 bytes. Supondo que meu carro esteja ativo por não mais do que 2 horas por dia, posso fazer uma atualização a cada 10 segundos e consumir apenas 806kb por mês (31 dias). Isso me dá 218kb para o tempo de condução sobre o meu, ou seja, o ladrão de carros. O que me dá 16,76 horas de monitoramento por GPS fora do meu tempo de condução, com uma atualização a cada 10 segundos.
Agora, esses pacotes UDP precisam ir para algum lugar. Estou usando um servidor Ubuntu hospedado em nuvem CloudAtCost, que comprei por 8 $ com 80% de desconto, e que está me servindo para outras finalidades, portanto não entra no cálculo de custos. Se não quiser pagar por um servidor, você pode obter uma instância gratuita do Amazon AWS por 12 meses e instalar o Ubuntu nela. Depois de configurar o servidor (consulte a próxima etapa), obtenha seu endereço IP estático e coloque-o próximo à definição de SERVER.
Etapa 3: Mais software (recebimento dos locais de GPS no lado do servidor)
CloudAtCost e Amazon vêm com uma imagem Ubuntu pré-configurada (CloudAtCost está no Ubuntu 14.04). Portanto, não vou seguir as etapas para instalar o Ubuntu, pois você não precisará fazer isso. Se você estiver usando o CloudAtCost, talvez queira atualizar para o Ubuntu 16.04, isso é feito com um
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
Então você precisa instalar o LAMP (consulte este guia: aqui), embora não vamos usar o PHP.
Instale Python com
sudo apt-get install pip python-minimal
Em seguida, adicione alguns módulos:
pip install - solicitações de usuário urllib3
Precisamos definir / var / www gravável por você, então vamos fazer:
sudo adduser YOUR_USER www-datasudo chown -R www-data: www-data / var / www
sudo chmod -R g + rwX / var / www
Agora, precisamos de um "servidor" para i) receber os pacotes UDP, ii) construir a trilha, iii) enviar uma notificação para nosso telefone celular e um "servidor" para servir a trilha gps criada (será o apache).
Para o primeiro servidor, copie o código Python anexado. Você precisa configurar as seguintes coisas:
iftttuser = "SEU USUÁRIO IFTTT"
iftttpass = "SUA SENHA IFTTT"
iftttappletid = "SUA NOTIFICAÇÃO DE IFTTT APPLET"
iftttkey = "SUA CHAVE IFTTT"
iftttevent = "SEU EVENTO IFTTT"
Como você deve ter adivinhado, estamos usando o IFTTT para enviar notificações em tempo real para nossos telefones celulares. Siga este guia: aqui, mas em vez de selecionar "envie-me um sms", selecione "enviar uma notificação de aplicativo". Obtenha o ID do seu miniaplicativo (role na parte inferior da configuração do miniaplicativo para vê-lo) e use-o acima. Use também a chave criada nas configurações acima. O evento IFTTT é o nome que você deu ao seu miniaplicativo, eu dei a ele "carmoving".
Agora, não há plataformas de notificações em tempo real gratuitas, AFAIK. Se você souber de algum, me avise. O IFTTT tem um atraso. Esse atraso pode ser minimizado em alguns segundos se você usar o acionador de e-mail. Infelizmente, isso não é confiável. O webhook recém-criado tem um atraso de 15 minutos. Mas não queremos esperar 15 minutos para saber que nosso carro está sendo roubado, certo? Essa é a senha para solicitar que você defina todas as configurações acima. Se você rolar o código Python, verá que há algumas linhas, a saber, 45-53, para automatizar a funcionalidade "verificar agora" do IFTTT, o que força uma verificação repentina dos gatilhos e dispara a notificação em menos de 1 segundo! De nada:)
Depois de configurar seu código Python em algum lugar, basta executá-lo. Se você for um usuário profissional, inicie na inicialização do servidor. Consulte os inúmeros guias online gratuitos sobre como fazer isso, por exemplo, este.
Etapa 4: ainda mais software (o aplicativo móvel)
Precisamos de uma maneira rápida e simples de visualizar apenas a trilha de GPS que o servidor da etapa anterior está mantendo atualizada. Possivelmente, ele deve funcionar em todos os tipos de smartphones.
Vamos então usar um pacote de aplicativos móveis de plataforma cruzada, como Ionic / Cordova. Estou usando Ionic v1, não confunda com Ionic Native ou Ionic v2, isso é uma coisa diferente.
Siga estas etapas muito simples para iniciar seu primeiro projeto no Ionic: aqui.
Então, você precisa iniciar um novo projeto baseado no SDK do Google Maps, assim:
mapas de myapp de início iônico
Vá para a pasta "recursos" e copie a imagem grande do carro aqui como "icon.png". Em vez disso, envie os ícones pequenos como "car2.png" e "start.png" em algum lugar do seu servidor, como https://seuservidor/car2.png. Você vai precisar deles como marcadores em seu aplicativo.
Use os arquivos index.html anexados (renomeie index.html.txt para index.html), directives.js e controllers.js, e coloque-os em www (index.html), www / js (todos os js).
adicione sua plataforma assim:
iônico adicionar plataforma android
construir assim:
construção iônica android
então o ionic lhe dirá onde construiu seu.apk que você pode instalar em seu telefone móvel.
Para construir para iOS, você precisa de um Mac e Xcode. O ionic pode então salvar um projeto Xcode, que você pode abrir no Xcode e construir para o seu telefone. Se você não tiver uma conta de desenvolvedor iOS, terá que conectar seu telefone ao Xcode e configurá-lo para desenvolvimento para poder instalar o aplicativo lá. Isso está fora do escopo deste instrutível.
Nos vários arquivos js, você precisará encontrar as linhas correspondentes a "car2.png" e "start.png" e modificá-las com o caminho de suas imagens. O mesmo para "plan.json".
É isso!!
Etapa 5: Trabalho Futuro
1) Coloquei tudo em uma caixa de papelão que posso esconder em qualquer lugar perto da tomada USB. O melhor a fazer seria montar um case melhor embaixo do capô do carro, com conversor 12v-> 5v.
2) Com um sensor bluetooth, você pode realmente "sentir" se está no carro, então o sistema GPS não liga.
3) Basta pagar por um plano de dados sim e definir SECONDS como 1 para desfrutar do rastreamento em tempo super real:)
Espero que tenha gostado deste meu primeiro instructable!