Índice:

Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação: 4 etapas
Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação: 4 etapas

Vídeo: Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação: 4 etapas

Vídeo: Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação: 4 etapas
Vídeo: Como Fazer Caminhão de Controle Remoto Barato #05 Via Celular no Mini Iveco Hi-Way com Arduino 2024, Novembro
Anonim
Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação
Controle remoto de SMS confiável, seguro e personalizável (Arduino / pfodApp) - sem necessidade de codificação

Atualização de 6 de julho de 2018: uma versão 3G / 2G deste projeto, usando SIM5320, está disponível aqui

Atualização: 19 de maio de 2015: Use a biblioteca pfodParser versão 2.5 ou superior. Ele corrige um problema relatado de não permitir tempo suficiente para a blindagem se conectar à rede após ser ligada

Introdução

Como o controle remoto pfodSMS difere de outras implementações: -

  • É confiável - os comandos são sempre respondidos e as mensagens perdidas são solicitadas novamente
  • É seguro - usa proteção de senha de 128 bits
  • Não requer nenhuma conta de serviço da web de terceiros - só precisa de um cartão SIM ativo (sem um PIN)
  • É personalizável - você pode usar o pfodDesigner para criar seu próprio menu personalizado
  • É fácil - o pfodDesigner gera todo o código. Você não precisa fazer nenhuma codificação.
  • É flexível - todas as telas pfod estão disponíveis via SMS, como submenus, lista de seleção única e múltipla, entrada de texto, registro de dados e plotagem.

Consulte o design da mensagem pfodSMS para saber como a conexão SMS se torna confiável. Consulte Segurança de desafio e resposta para pfodDevices conectados à Internet para obter os detalhes da segurança de 128 bits. Consulte pfodDesigner, menus Android / Arduino simplificados para obter detalhes sobre como projetar seu próprio menu personalizado. Consulte o pfodSpecification.pdf para obter os detalhes de todas as mensagens e telas pfod que você mesmo pode adicionar.

Projeto Exemplo - Controle de Água Quente SMS

Como exemplo de projeto, este manual descreve como ligar e desligar o seu aquecedor de água quente via SMS e verificar se está ligado ou desligado. Você precisará de um eletricista para instalá-lo.

Etapa 1: Início Rápido - Controle Remoto de SMS

Início rápido - Controle Remoto SMS
Início rápido - Controle Remoto SMS
Início rápido - Controle Remoto SMS
Início rápido - Controle Remoto SMS

Aqui está um guia de início rápido para construir seu próprio controle de água quente SMS.

  1. Compre as peças desta lista.
  2. Instale o Arduino IDE versão 1.5.8 e baixe e instale a biblioteca pfodParser.
  3. Baixe o pfodDesigner gratuito.
  4. Projete seu menu personalizado para ligar e desligar uma entrada digital a partir de um controle deslizante de menu em seu celular Android.
  5. Gere o código, selecionando SeeedStudio SIM900 GPRS shield como a conexão. (Também existe uma opção para o escudo IteadStudio SIM900).
  6. Transfira o código gerado do seu celular para o IDE (veja o pfodAppForAndroidGettingStarted.pdf para detalhes), adicione sua senha secreta, compile e baixe para o Arduino Mega 2560.
  7. Instale o cartão SIM na blindagem GPRS e conecte a blindagem no Mega 2560. Certifique-se de que os links seriais estejam configurados para Hardware serial como mostrado acima.
  8. Conecte a saída digital ao estado sólido, ou normal, relé entre D3 e GND (ou qualquer pino que você escolheu no pfodDesigner). Consulte Como adicionar relés ao Arduino para obter mais detalhes sobre relés.
  9. Aplique alimentação USB ao Mega. O código da biblioteca ativa o escudo GPRS para você.
  10. Instale o pfodApp no seu celular Android e configure uma conexão SMS para o número do telefone sim do escudo. (consulte o pfodAppForAndroidGettingStarted.pdf para obter detalhes). Defina a senha para a conexão, se você adicionou uma..
  11. Conecte-se e veja seu menu personalizado exibido por SMS. Clique no botão para ligar ou desligar o relé.
  12. Peça ao seu eletricista para instalar o relé em seu circuito de água quente e conectar a fonte de alimentação USB para alimentar o Mega e o escudo

Etapa 2: mais detalhes

pfodDesigner

O pfodDesigner irá gerar todo o código de que você precisa para ligar e desligar o estado sólido ou algum outro relé, mas a conexão SMS na biblioteca pfodParser suporta todas as telas pfod, então assim que você começar, você pode adicionar submenus, controles deslizantes numéricos, controles deslizantes multi-texto, telas de entrada de texto, registro de dados e plotagem, tudo via SMS. Verifique o pfodSpecification.pdf para todas as telas e mensagens suportadas.

O código gerado está aqui. Não tem prompt e apenas um único botão para manter a mensagem curta. Menus longos são enviados por meio de várias mensagens SMS que demoram mais para chegar. Se você tiver um menu longo, o código de conexão sms na biblioteca pfodParser trata de tudo isso para você.

Para adicionar uma senha à sua conexão SMS, modifique a linha

parser.connect (& pfodSMS); // conecte o analisador ao fluxo de SMS a algo como parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));

mas use sua própria senha de até 32 dígitos hexadecimais, 0..9 A.. F. As senhas menores que 32 dígitos hexadecimais são preenchidas com 0's. Consulte Um pfodDevice simples de wi-fi / Internet com segurança de 128 bits (Arduino) para saber como gerar uma senha aleatória e enviá-la para um código QR para facilitar a entrada em seu Android. Veja também pfodAppForAndroidGettingStarted.pdf

O pfodDesigner também irá gerar código para conexões bluetooth e wi-fi via Serial e Ethernet via SPI, todos com segurança de 128 bits opcional

pfodApp

A primeira coisa a perceber é que o SMS é lento e pode nem chegar lá ou chegar fora de serviço. Portanto, quando você se conectar com o pfodApp, haverá um certo atraso antes que haja uma resposta SMS. Se a mensagem foi perdida ou atrasada, o pfodApp irá reenviá-la automaticamente após 3 minutos. Depois de 5 tentativas, o pfodApp informará que a conexão foi perdida. Você pode ajustar o tempo de 3 minutos na tela de edição de conexão do pfodApp.

Se você adicionar uma senha, haverá seis mensagens SMS (três em cada sentido) antes que o menu principal seja recebido pelo pfodApp. Essas mensagens extras acontecem apenas na conexão inicial, após a qual não há mensagens extras ao usar uma senha. Portanto, comece sem uma senha para ver se tudo está funcionando e, em seguida, adicione a senha mais tarde.

Escudo SMS / GPRS

Os possíveis problemas são os cartões SIM protegidos por números PIN ou não autorizados a se conectar à rede. A biblioteca pfod liga automaticamente o escudo GPRS e procura a resposta 'chamada pronta'. Se essa resposta não chegar, a biblioteca desliga e tenta novamente, portanto, se você vir a luz de energia no escudo GPRS acender por 20 segundos e depois apagar, há um problema de conexão com a rede. Retire o SIM e experimente em um telefone normal. Verifique se você não é solicitado a fornecer um número PIN.

Se esse não for o problema, você terá que ativar a depuração de inicialização, conforme descrito abaixo, para ver o que está acontecendo.

Alimentando o escudo Mega / GPRS

A blindagem atrai até 2A pulsados e até 0,5A continuamente. Supondo uma fonte de bateria de 12 V, o 0,5 A excede a capacidade do Mega a bordo da fonte de alimentação. Portanto, esta blindagem NÃO deve ser alimentada pela entrada de 7 V a 12 V do Mega. A alternativa é alimentar o Mega e o escudo por meio da conexão USB. Usei uma fonte USB 1A. Para testar, usei um hub alimentado pela Belkin (F4U020) para evitar o consumo excessivo de corrente da porta USB do meu computador.

Para uma fonte de bateria de 12 V, sugiro usar um carregador automotivo USB 5V de qualidade, 1A ou superior. Uma fonte automotiva USB 5V de qualidade deve ser projetada para lidar com picos de sobretensão que ocorrem em sistemas elétricos de automóveis e, portanto, deve ser adequada para a maioria dos sistemas de carregamento de 12V.

Relé de estado sólido

Uma vez que este projeto de exemplo está controlando um aquecedor de água quente (uma carga resistiva), um relé de estado sólido é o ideal. Se você deseja ligar ou desligar motores, ligar geradores, etc., converse com seu eletricista sobre um relé adequado para o trabalho. Se você precisa de um relé de alta potência, pode usar uma pequena unidade de relé da placa arduino para ligar e desligar o relé de energia.

Existem muitas versões de relé de estado sólido disponíveis. Certifique-se de comprar um que pode lidar com a corrente e tensão do seu aquecedor e pode ser controlado por 5 V CC e alguns miliamperes disponíveis no pino de saída do Arduino. O usado aqui, FOTEK SSR-40 DA, comuta até 380 VCA a 40 amperes e é controlado por qualquer coisa acima de 3 V CC e leva menos de 7 mA.

Você deve usar um dissipador de calor e aplicar uma mancha FINA de composto de dissipador de calor ou graxa térmica na parte traseira do relé de estado sólido antes de aparafusá-lo ao dissipador de calor. A ideia é cobrir completamente a superfície com a camada mais fina de composto de coletor de cabeça para preencher os vales microscópicos na superfície do metal. Quando ligado, o interruptor de estado sólido cai 1.6V, o que gera 16Watts de calor a 10Amps. O dissipador de calor é necessário para se livrar desse calor, portanto, deve ser montado ao ar livre e não dentro de uma caixa de plástico.

Atrasos são do mal

O escudo GPRS entrega mensagens SMS por meio da conexão serial a qualquer momento e seu loop principal () deve chamar cmd = parser.parse (); geralmente para processar os dados serial antes que o buffer de 64 bytes no código da biblioteca Arduino se encha e os dados sejam perdidos.

Portanto, você deve manter seu loop principal () funcionando rapidamente. Você nunca deve usar delay () e deve verificar se nenhuma das bibliotecas que você está usando possui atrasos. Usando a taxa de transmissão padrão de 19200 do SIM900 via Hardware Serial, não achei necessário aumentar o tamanho do buffer no código da biblioteca do Arduino. Não uso Software Serial, apenas Serial e Serial1, conexões seriais de hardware, e quase todas as mensagens que o pfodApp envia são muito pequenas, 10 ou 12 bytes. No entanto, você pode aumentar o tamanho do buffer do Arduino, se desejar, modificando a definição em HardwareSerial.h de #define SERIAL_BUFFER_SIZE 64 para #define SERIAL_BUFFER_SIZE 128

No entanto, o que eu descobri foi que se eu habilitasse a saída de depuração, conforme descrito abaixo, eu teria que ter uma taxa de transmissão muito rápida para a conexão do terminal, caso contrário, o atraso introduzido pelo envio de mensagens de depuração para o terminal fazia com que partes das mensagens SMS fossem perdidas.

Instalação

Eu adicionei uma blindagem de terminal de parafuso para que eu tivesse algo para conectar os fios do relé de estado sólido. Meu eletricista ainda não instalei o controlador. Ele precisa ser colocado em uma caixa isolada, mas com o dissipador de calor saindo por uma fenda e conectado ao cabo de alimentação de água quente.

Etapa 3: sugestões para melhorias adicionais - alertas, registro de dados e plotagem

O projeto de exemplo acima apenas mostra como a água está ligada ou desligada e permite que você a ligue. Mas a conexão SMS lida com todas as mensagens pfod (consulte pfodSpecification.pdf)

Se você adicionar um sensor de temperatura ao seu Arduino, você também pode enviar para monitorar a temperatura e enviar leituras de volta em intervalos regulares. Para enviar de volta uma leitura de dados é igual para bluetooth, wi-fi ou SMS, basta adicionar o código conforme o exemplo abaixo. Consulte Registro e plotagem de dados para obter mais detalhes e exemplos de registro e plotagem de dados.

parser.println (tempo); parser.print (','); parser.println (temperatura);

Quando a biblioteca pfodSMS vê a nova linha de println (), ela enviará os dados brutos como um SMS. No seu celular, deixe o pfodApp rodando em segundo plano e o seu celular irá notificá-lo quando um SMS for recebido. Abra o pfodApp novamente para trazê-lo para a frente e, em seguida, abra a tela de dados brutos no menu do celular para ver os dados. Observação: as mensagens pfodSMS são caracteres UTF-8 junto com números de conexão e mensagem, codificados usando uma codificação Base64 para que não pareçam texto normal. Consulte o design da mensagem pfodSMS para todos os detalhes.

Você pode usar o mesmo processo para enviar um alerta quando algo muda remotamente. ou seja, parser.println (F (“Temperatura externa abaixo de 0 ℃”)); Observação: o caractere UTF-8 ℃ na string. pfodSMS passa todos os caracteres UTF-8 para o pfodApp.

Etapa 4: depuração durante o uso da conexão SMS na biblioteca PfodParser

Depuração durante o uso da conexão SMS na biblioteca PfodParser
Depuração durante o uso da conexão SMS na biblioteca PfodParser
Depuração durante o uso da conexão SMS na biblioteca PfodParser
Depuração durante o uso da conexão SMS na biblioteca PfodParser

O pfodDesigner gera código que funciona, mas você pode querer depurar seu próprio código extra ou ver o que está acontecendo enquanto o escudo GPRS está sendo inicializado ou recebendo mensagens SMS. Existem algumas abordagens que você pode adotar.

Depurando seu próprio código

Se você estiver depurando seu próprio código, basta comentar a linha pfodSMS e conectar o analisador a Serial e, em seguida, remover o escudo GPRS e executar o Mega a partir do terminal Arduino. ou seja, altere a configuração () para

//pfodSMS.init(&Serial, 9); // não inicialize o escudo GPRS parser.connect (& Serial); // conecta o analisador ao Serial em vez do fluxo de SMS

Em seguida, no terminal Arduino, você pode digitar {.} Para fazer com que o Mega retorne ao menu principal e, em seguida, envie o comando que deseja executar, por exemplo, {A`1} para ligar o relé e {A`0} para desligá-lo. (O pfodApp geralmente envia essas mensagens para você quando você clica no controle deslizante.) Em seguida, adicione a depuração extra parser.println () para monitorar o que o código extra adicionado está fazendo.

Monitorando o escudo GPRS

Se você quiser ver o que o escudo GPRS está fazendo. Como está inicializando, recebendo mensagens SMS etc. Então você precisa mudar a fiação blindada, conecte-a ao Mega Serial1 (serial) e libere a conexão Serial (USB) para saída de depuração para o Monitor IDE Arduino.

Para conectar a blindagem GPRS ao Mega 2560 Serial1, remova os links mostrados acima e adicione os fios aos pinos TX1 e RX1 do Mega.

Em seguida, altere o código de configuração () para

void setup () {Serial1.begin (19200); // altera Serial para Serial 1 Serial.begin (57600); // NOTE a taxa de transmissão rápida para a porta serial USB // para o monitor IDE Arduino. for (int i = 3; i> 0; i--) {// espere alguns segundos para ver se estamos sendo programados delay (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (& Serial); // precisa fazer isso antes de pfod_SMS.init // ou qualquer outra chamada de método pfod_SMS // inicializar o SMS e conectar o analisador // alterar a próxima linha para Serial1 pfodSMS.init (& Serial1, 9); // conecta o escudo V2 de Seeed GPRS a Serial1 em vez de Serial parser.setDebugStream (& Serial); // precisa fazer isso antes de parser.connect // ou qualquer outra chamada de método de analisador parser.connect (& pfodSMS); // conecte o analisador ao fluxo de SMS}

Agora você pode descomentar algumas das configurações de Depuração na biblioteca pfodParser no arquivo pfodSMS_SIM900.cpp.

Por exemplo, desfazer o comentário #define DEBUG_SETUP irá imprimir (para o fluxo de depuração) o que está acontecendo ao ligar o escudo GPRS e deixá-lo pronto para receber mensagens SMS.

Deixar de comentar #define DEBUG dará muitas informações sobre as mensagens SMS que estão sendo recebidas.

É isso !

Recomendado: