Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Rastreamento GPS Instantâneo para Arduino MKR GSM 1400 via SMS

Componentes e Materiais

Arduino MKR GSM 1400 1

Sobre o Projeto

Nota: Este tutorial pode estar desatualizado. Por favor, acesse aqui para uma versão mais atual.

O objetivo deste projeto é mostrar como usar a localização celular do Arduino MKR GSM 1400. Implementamos uma aplicação simples que permite obter a latitude e longitude do MKR GSM quando um SMS com uma letra de verificação de segurança é recebido. O número do remetente é recuperado do SMS recebido e uma resposta é criada com o link apropriado do Google Maps completado pelas coordenadas dadas pelos serviços de localização fornecidos pelo módulo u-blox.

O que você precisa

O projeto é baseado em um Arduino MKR GSM 1400, uma antena, um pacote de bateria LiPo, um smartphone e um cartão SIM de dados.

Configuração do Hardware

Este projeto não requer nada especial. Conecte a antena à placa, insira o cartão SIM e conecte a bateria LiPo ao conector JST.

A bateria LiPo é opcional, mas permite lidar com picos de corrente que o módulo GSM pode exigir em condições particulares de cobertura ruim.

Rastreamento GPS Instantâneo para Arduino MKR GSM 1400 via SMS

Como Funciona

Este projeto usa a biblioteca MKRGSM para gerenciar mensagens SMS e a georreferenciação baseada em células.

Quando um SMS é recebido, o conteúdo é verificado para saber se contém a letra "L". Somente se for o caso, o sketch prossegue com a localização e transmissão SMS. Com esta solução, qualquer número pode solicitar a localização do sistema, mas apenas quem conhece a senha (a "letra secreta") receberá uma resposta. Esta é a linha que faz a verificação: if (c != 76) e 76 é o código ASCII de "L". Você pode alterar o valor para mudar a letra reconhecida.

O módulo GSM não tem receptor GPS, mas o fabricante tem um banco de dados da localização de cada célula da rede GSM e portanto fornece coordenadas para cada ID de célula fornecido. Este sistema é bastante preciso em áreas urbanas, onde cada célula cobre uma área pequena. Em áreas rurais, a cobertura de cada célula é muito maior e a localização fornecida tem aproximação mais grosseira.

Para criar o link para o Google Maps, usamos uma URL padrão onde apenas concatenamos os valores Long e Lat apropriados no final. Esta URL parece com "https://www.google.com/maps/place/, ". A posição mostrada no mapa será onde a célula está fisicamente baseada; nossa placa está dentro do raio coberto pela célula.

O Sketch

Descrição detalhada do Sketch: a primeira seção de código inclui as bibliotecas necessárias pela aplicação.

MKRGSM inclui todas as funcionalidades de conexão GSM, localização e gerenciamento SMS, disponíveis através dos objetos GSMClient, GPRS, GSM e GSMLocation. As APIs de gerenciamento SMS estão disponíveis através do objeto GSM_SMS. O header ArduinoLowPower importa as APIs que permitem gerenciamento de baixa potência dos módulos da placa.

Se você baixar o código do Web Editor, encontrará um arquivo arduino_secrets.h que inclui dados sensíveis como PIN, APN, usuário e senha. No web editor, você deve preencher os dados sensíveis na aba Secrets.

// inclui a biblioteca GSM
#include 
#include "ArduinoLowPower.h"

char PINNUMBER[] = SECRET_PINNUMBER;
char GPRS_APN[] = SECRET_GPRS_APN;
char GPRS_LOGIN[] = SECRET_GPRS_LOGIN;
char GPRS_PASSWORD[] = SECRET_GPRS_PASSWORD;

// inicializa as instâncias das bibliotecas
GPRS gprs;
GSM gsmAccess;
GSM_SMS sms;
GSMLocation location;

A função measureLocation() consulta o módulo para obter as coordenadas pela rede celular. Se novas coordenadas estiverem disponíveis, atribui à variável global; caso contrário, pergunta novamente por 45 segundos. Se nenhuma medição disponível respeitar as restrições de precisão, retorna as últimas boas.

// variáveis globais para gerenciamento de localização
String GSMlatitude = "0.000000";
String GSMlongitude = "0.000000";

// Esta função usa as APIs de localização para obter as coordenadas do dispositivo 
// e atualiza a variável global se todos os requisitos forem satisfeitos
void measureLocation() {
  unsigned long timeout = millis();
  while (millis() - timeout < 45000) {
    if (location.available() && location.accuracy() < 300 && location.accuracy() != 0) {
      GSMlatitude = String(location.latitude(), 6);
      GSMlongitude = String(location.longitude(), 6);
      break;
    }
  }
}

A função connectNetwork() usa as APIs gsmAccess.begin e gprs.attachGPRS para conectar a placa à rede de dados; são usados os dados de credenciais pin, apn, user e pass atribuídos pelas declarações em arduino_secrets.h.


// A função connectNetwork() é usada para a conexão de dados da placa
void connectNetwork() {
  bool status = false;
  // define timeout global de comando AT para permitir recuperação de 
  // congelamento de comunicação UART entre módulo samd e u-blox
  gprs.setTimeout(100000);
  gsmAccess.setTimeout(100000);
  
  // Inicia conexão GSM
  while (status == false) {
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & 
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
      status = true;
    } else {
      delay(1000);
    }
  }
}

A seção setup permite inicializar todos os objetos usados pelo sketch. Chama a função connectionNetwork() para estabelecer a conexão de dados e iniciar a estrutura de localização.

// seção de código para inicializar conexão de dados e objeto de localização
void setup() {
  connectNetwork();
  location.begin();
}

A última seção de código é a função loop onde são implementados o gerenciamento SMS e a medição de localização. Cada vez que um novo SMS está disponível, a placa responde ao remetente com um SMS com as coordenadas da placa. Para reduzir o consumo, a placa desliga o módulo e entra em deep sleep por 60 segundos.

void loop() {
  int c;
  String response;
  String messager = "";
  
  measureLocation();
  unsigned long timeout = millis();
  
  while (millis() - timeout < 5000) {
    if (sms.available()) {
      // verifica SMS disponível
      char senderNumber[20] = {"0"};
      sms.remoteNumber(senderNumber, 20); // Obtém número remoto
      int c = sms.read();
      
      if (c != 76) {
        sms.flush();
        break;
      }
      
      // concatena a string da mensagem a ser enviada ao número remoto
      String txtMsg = "https://www.google.com/maps/place/" + GSMlatitude + "," + GSMlongitude;
      
      // envia a mensagem
      sms.beginSMS(senderNumber);
      sms.print(txtMsg);
      sms.endSMS();
      break;
    }
  }
  
  // Desliga o módulo GSM para obter o menor consumo de energia enquanto dorme
  gsmAccess.shutdown();
  LowPower.sleep(60000); // habilita baixa potência por 60 segundos e depois tenta novamente
  connectNetwork(); // liga o módulo e reconecta à rede de dados
}

Como Usar

Configure o hardware como explicado acima, personalize o sketch com suas credenciais de acesso, carregue o sketch na placa e aguarde a conexão ser estabelecida com a rede GSM. Isso pode levar 30 segundos.

Após a conexão ser estabelecida, envie um SMS para o número do SIM do MKR GSM com um "L" como texto: isso iniciará o processo de localização e a placa responderá com um SMS contendo o link do Google Maps com a posição solicitada.

Código

Arduino

O código completo está disponível no Arduino Web Editor ou no repositório do projeto.

Processo de manufatura

  1. Por que um Design Ligeiramente Maior Pode Acelerar Inovação e Reduzir Risco
  2. Integre sua Estação Meteorológica ao CWOP: Guia Prático
  3. Dominando a Placa PSoC 6 Pioneer com Shield IoT Add-On: Guia do Desenvolvedor
  4. Como Implementar Códigos QR no Seu CMMS: Guia Passo a Passo
  5. Por Que Conjuntos de Malas de Fibra de Carbono São o Upgrade Definitivo para Viajantes
  6. Maximize o ROI em Seus Investimentos em IoT: Um Guia Prático
  7. Descubra Como a Techman Robot Automatiza Produção: Webinar sobre Cobots Avançados e Sistemas de Visão
  8. 7 Estratégias Comprovadas para Reduzir Custos de Produção de PCI
  9. Impulsione Operações Agrícolas com Manutenção Proativa
  10. Maximize o Valor: Estratégias para Vender ou Reaproveitar Equipamentos Pesados Usados