Hello Guys, my shield is working fine , but i need that it reset in each time interval. The problem is that after it reset he stop working, don't receive more sms neither answer me.
Sorry about the bad english.
Here is the code.
#include "SIM900.h"
#include <SoftwareSerial.h>
//Carrega a biblioteca SMS
#include "sms.h"
SMSGSM sms;
boolean started = false;
char smsbuffer[160];
char n[20];
boolean estado = LOW;
boolean estado1 = HIGH;
String msg_esperada("Liga 13");
String msg_esperada1("Desliga 13");
void setup()
{
//Inicializa a serial
Serial.begin(9600);
//Define a porta 13 como saida
pinMode(13, OUTPUT);
Serial.print("Ligando shield GSM SIM900. ");
liga_desliga_GSMShield();
Serial.println("Testando GSM shield...");
//Comunicacao com o Shield GSM a 2400 bauds
if (gsm.begin(2400))
{
Serial.println("nstatus=READY");
started = true;
}
else Serial.println("nstatus=IDLE");
}
void loop()
{
if (started)
{
//Aguarda SMS
Serial.println("Aguardando SMS...");
if (gsm.readSMS(smsbuffer, 160, n, 20))
{
String msg_recebida(smsbuffer);
msg_recebida.trim();
msg_esperada.trim();
if ((msg_recebida == msg_esperada) && (strstr(n, "031971774886")))
{
estado = !estado;
Serial.println("SMS Recebido! Ligando bomba...");
digitalWrite(13, estado);
sms.SendSMS("031971774886", "SMS Recebido! Ligando bomba.");
delay(50000);
}
delay(5000);
}
if (gsm.readSMS(smsbuffer, 160, n, 20))
{
String msg_recebida(smsbuffer);
msg_recebida.trim();
msg_esperada1.trim();
if ((msg_recebida == msg_esperada1) && (strstr(n, "031971774886")))
{
estado1 = !estado1;
Serial.println("SMS Recebido! Desligando bomba.");
digitalWrite(13, estado1);
sms.SendSMS("031971774886", "SMS Recebido! Desligando bomba.");
delay(50000);
}
delay(5000);
}
}
delay(15000);
reset_GSMShield();
}
void liga_desliga_GSMShield()
{
Serial.print(F("Aguarde..."));
pinMode(6, OUTPUT);
digitalWrite(6, LOW);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
Serial.println(F("OK!"));
digitalWrite(6, LOW);
delay(500);
}
void reset_GSMShield()
{
Serial.print(F("Aguarde..."));
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
delay(1000);
Serial.println(F("OK!"));
delay(500);
}