SIM900 Stop working after reset.


hello guys, shield working fine , need reset in each time interval. problem after reset stop working, don't receive more sms neither answer me.

sorry bad english.

here code.

#include "sim900.h"
#include <softwareserial.h>
//carrega 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 serial
  serial.begin(9600);
  //define 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 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);
}

do need call begin again after reset?


Arduino Forum > Using Arduino > Programming Questions > SIM900 Stop working after reset.


arduino

Comments