Estou precisando identificar o remetente de um sms para o sim 800L e cel.sender retorna faltando o último dígito.No exemplo abaixo, se o sender fosse "011982823030" retornaria "01198282303" faltando o último digito(zero).
Estou utilizando o sketch disponibilizado pelo Lab de garagem :
3.1 Acionamento via SMS:
#include <SerialGSM.h> //Inclui a biblioteca SerialGSM.h
#include <SoftwareSerial.h> //Inclui a biblioteca SoftwareSerial.h
SerialGSM cel(2,3); //Configura os pinos 2 e 3 para se trabalhar como Rx e Tx via Software
String SMS; //Variável para o armazenamento da SMS recebida
String numeroRemetente; //Variável para o armazenamento do número do remetente da SMS
String numeroPermitido = "011982823030"; //Variável que define o número do celular que o sistema irá responder
boolean sendonce=true; //Variável boleana utilizada pela biblioteca SerialGSM.h
void setup()
{
int i; //Variável para contagem
for(i=5;i<=7;i++) //Laço que configura os pinos D5 a D7 como saída e em nível lógico 0(LOW)
{
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
Serial.begin(9600); //Incializa a Serial(Hardware) com um Baud Rate de 9600
cel.begin(9600); //Incializa a Serial(Software) com um Baud Rate de 9600
cel.Verbose(true); //Função de configuração da biblioteca SerialGSM.h
cel.Boot(); //Função de inicialização do Módulo SM5100B
cel.DeleteAllSMS(); //Função para deletar todas as SMS do chip
cel.FwdSMS2Serial(); //Função utilizada para enviar as SMS para a Serial
Serial.println(">>>>> Celular Shield Inicializado <"); //Mensagem de início da aplicação
Serial.println(); //Pula linha
}
void loop()
{
if (cel.ReceiveSMS()) //Se o chip no Celular Shield receber uma SMS
{
Serial.println(); //Pula linha
Serial.println(); //Pula linha
Serial.println(); //Pula linha
Serial.println(); //Pula linha
Serial.println("~~NOVA MENSAGEM RECEBIDA~~"); //Imprime na serial "NOVA MENSAGEM RECEBIDA"
Serial.println(); //Pula linha
Serial.print("REMETENTE: "); //Imprime na serial a palavra "REMETENTE:"
Serial.println(cel.Sender()); //Imprime o número do remetente que a SMS foi enviada
numeroRemetente = cel.Sender(); //Armazena na variável numeroRemetente o número do remetente
if(numeroRemetente != numeroPermitido) //Se o número do remetente não for o mesmo que o número permitido
{
Serial.println("Não Permitido"); //Imprime a mensagem "Não Permitido" e não executa nada
}
else //Senão, o número é o permitido e executará os comandos
{
Serial.print("MENSAGEM: "); //Imprime na serial a palavra "MENSAGEM:"
Serial.println(cel.Message()); //Imprime a mensagem que foi recebida
SMS = cel.Message(); //Guarda na mensagem na variável SMS
//++++++++Tratamento do Primeiro Caractere++++++++
if(SMS[0] == '1') //Se o primeiro caractere da SMS for igual a 1
{
digitalWrite(5,HIGH); //Acende o LED verde
Serial.println();//Pula uma linha na serial
Serial.println("LED VERDE ACESO"); //Imprime a mensagem "LED VERDE ACESO"
}
else if(SMS[0] == '0') //Senão, se o primeiro caractere for igual a 0
{
digitalWrite(5,LOW); //Apaga o LED verde
Serial.println(); //Pula uma linha na serial
Serial.println("LED VERDE APAGADO"); //Imprime a mensagem "LED VERDE APAGADO"
Serial.println(); //Pula uma linha na serial
}
//=================================================
}
//++++++++Tratamento do Segundo Caractere++++++++
if(SMS[1] == '1') //Se o segundo caractere da SMS for igual a 1
{
digitalWrite(6,HIGH); //Acende o LED amarelo
Serial.println(); //Pula uma linha na serial
Serial.println("LED AMARELO ACESO"); //Imprime a mensagem "LED AMARELO ACESO"
}
else if(SMS[1] == '0') //Senão, se o segundo caractere for igual a 0
{
digitalWrite(6,LOW); //Apaga o LED amarelo
Serial.println(); //Pula uma linha na serial
Serial.println("LED AMARELO APAGADO"); //Imprime a mensagem "LED AMARELO APAGADO"
}
//=================================================
//++++++++Tratamento do Terceiro Caractere++++++++
if(SMS[2] == '1') //Se o terceiro caractere da SMS for igual a 1
{
digitalWrite(7,HIGH); //Acende o LED vermelho
Serial.println(); //Pula uma linha na serial
Serial.println("LED VERMELHO ACESO"); //Imprime a mensagem "LED VERMELHO ACESO"
}
else if(SMS[2] == '0') //Senão, se o terceiro caractere for igual a 0
{
digitalWrite(7,LOW); //Apaga o LED vermelho
Serial.println(); //Pula uma linha na serial
Serial.println("LED VERMELHO APAGADO"); //Imprime a mensagem "LED VERMELHO APAGADO"
}
//=================================================
cel.DeleteAllSMS(); //Deleta todas as SMS
}
}
Alguém poderia me ajudar?
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por