Galera estou tentando fazer um garagino fazer um acionamento e uma notificação via SMS atraves de um Modulo Shield SIM900, porem estou com alguns problemas, estou utilizando o tutorial que encontrei aqui no lab de garagem que se utilizou um modulo GSM SM5100B, copiei o Sketch utilizado no tutorial e esta dando erros de declaração.:
Sketch::
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
}
}
Ao copiar e colar para fazer upload esta dando os seguintes erros de declarão :
sketch_may21b:3: error: 'Serial' does not name a type
sketch_may21b.ino: In function 'void setup()':
sketch_may21b:17: error: 'cel' was not declared in this scope
sketch_may21b.ino: In function 'void loop()':
sketch_may21b:27: error: 'cel' was not declared in this scope
Tags:
Galera consigui o codigo, mas esta dando muitos erros alguem pode me ajudar a colocar ele funcionar ?
/*******************************************************
***************** PROGRAMAÇÃO PIVO *********************
********************************************************/
#include <GSM_Shield.h> //Biblioteca do Módulo GSM
#define tamanhoTelefone 20 //Número de digitos do telefone
#define tamanhoSMS 25 //Tamanho do texto do SMS
#define capacidadeTelefones 20 //Capacidade de Armazenamento do SIM Card
#define pinoRele 2 //Pino para onde é enviado o pulso elétrico
/*********************************************************
*********************************************************/
GSM gsm;
char telefone[tamanhoTelefone];
char sms[tamanhoSMS];
int erro;
int posicao_sms;
int i;
boolean deletarNumero;
unsigned long tempo;
void setup()
{
pinMode(pinoRele,OUTPUT);
Serial.begin(9600);
gsm.TurnOn(9600);
gsm.InitParam(1);
gsm.Echo(0);
Serial.println("verificação inicial de cadastro...");
for (i=1;i!=capacidadeTelefones;i++)
{
erro=gsm.GetPhoneNumber(i=telefone);
if(erro==1)
{
if (i==1) Serial.println("Telefones Cadastrados:");
Serial.print(i);
Serial.print(".");
Serial.println(telefone);
}
else if (i==1)
{
Serial.println("Nenhum Administrador Cadastrado.");
break;
}
}
tempo = millis();
}
void loop()
{
trataSMS();
trataChamada();
if (millis()-tempo>60000)
{
tempo = millis();
Serial.println();
Serial.println("==================================");
Serial.println("Relatorio de Numeros Cadastrados:");
for (i=1;i!=capacidadeTelefones;i++)
{
erro=gsm.GetPhoneNumber(i,telefone);
if(erro==1)
{
Serial.print(i);
Serial.print(". ");
Serial.println(telefone);
}
}
Serial.println("==================================");
Serial.println();
}
}
void trataChamada()
{
erro = gsm.CallStatusWithAuth(telefone,1,capacidadeTelefones);
switch(erro)
{
case CALL_INCOM_VOICE_AUTH:
Serial.println("Usuario Registrado");
Serial.print("Numero: ");
Serial.println(telefone);
Serial.println("Ligando Pivo...");
digitalWrite(2,HIGH);
delay(1000);
digitalWrite(2,LOW);
gsm.HangUp();
break;
Serial.println(); //Pula linha na Serial
Serial.println(); //Pula linha na Serial
gsm.Rcpt("982823030"); //Seleciono o número de envio da SMS
gsm.Message("PIVO ACIONADO"); //Escreve a mensagem "PIVO AcionadO"
gsm.SendSMS(); //Envia a SMS
Serial.println(); //Pula linha na Serial
Serial.println(); //Pula linha na Serial
while(2,HIGH); //Enquanto a PIVO estiver acesa
case CALL_INCOM_VOICE_NOT_AUTH:
Serial.println("Usuario Nao Registrado");
Serial.print("Numero: ");
Serial.println(telefone);
gsm.HangUp();
break;
case CALL_ACTIVE_VOICE:
case CALL_INCOM_DATA_AUTH:
case CALL_INCOM_DATA_NOT_AUTH:
case CALL_ACTIVE_DATA:
gsm.HangUp();
break;
default:
break;
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por