Hola amigos estoy realizando un proyecto con una shield Sim900 Modem Gsm Y Gprs la cual funciona a la perfeccion, solo que al momento de trabajar por un par de horas esta pierde la senal y al activarse un pulso de una alarma en la entrada de mi arduino para realizar la llamada y mensaje no me llama, ya que la shield no esta conectada a la red.
lo que megustaria es saber como poder tener una rutina que antes de que realize la llamada y el mensaje de texto primero revise si la senal de la shield esta disponible, si no esta disponible que mande un pulso para encenderla...
este es mi programa
#include <SoftwareSerial.h>
SoftwareSerial SIM900(10, 11); // Configura el puerto serial para el SIM900
const byte pinalarma = 7; //pin de entrada de alarma
bool alarma; //nombre de la variable alarma
void setup()
{
SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
Serial.println("OK");
SIM900.println("AT + CPIN = \"XXXX\""); //Comando AT para introducir el PIN de la tarjeta
delay(25000); //Tiempo para que encuentre una RED
pinMode(pinalarma, INPUT); //Configurando la entrada del pin
}
void llamar()
{
Serial.println("Realizando llamada...");
SIM900.println("ATD6413270802;"); //Comando AT para realizar una llamada
delay(30000); // Espera 30 segundos mientras realiza la llamada
SIM900.println("ATH"); // Cuelga la llamada
delay(1000);
Serial.println("Llamada finalizada");
}
void mensaje_sms()
{
Serial.println("Enviando SMS...");
SIM900.print("AT+CMGF=1\r"); //Comando AT para mandar un SMS
delay(1000);
SIM900.println("AT + CMGS = \"6413270802\""); //Numero al que vamos a enviar el mensaje
delay(1000);
SIM900.println("Alerta Horno IR-02 Fuera de Parametros!!!.... (Esta Alerta Continuara Enviandose Cada 15 Min Hasta que El Horno Sea Estabilizado)");// Texto del SMS
delay(100);
SIM900.println((char)26);//Comando de finalizacion ^Z
delay(100);
SIM900.println();
delay(5000); // Esperamos un tiempo para que envíe el SMS
Serial.println("SMS enviado");
}
void loop()
{
alarma = digitalRead(pinalarma);
if(alarma==1)
{
mensaje_sms(); //Envia SMS
llamar(); //Realiza la llamada
delay(900000); //llama cada 15 minutos
}
}
Gracias espero alguien me pueda ayudar