Ejemplo basico Alarma GSM con wavecom y arduino atmega-8 RS232

Gracias Fm

Es muy sencillo y generico pues no empleo libreria alguna y las ordenes no son complicadas, he intentado estructurarlas lo mas facil posible pensando que puede ayudar a entender un poco el manejo del modem con comandos AT a los nuevos.

Un saludo.

Como he comentado antes, algunos ejemplos de codigo que he empleado para leer lo que el wavecom me dice, para quien pueda serle util:

// ????????????????????????????????????????????????
// ?  FUNCION Resetea Modem    Envia: ATZ                                           
// ?                           Responde: ATZ.._OK._                                  
// ????????????????????????????????????????????????
void ResetModem(){
   Envia("ATZ");           // Hacemos un reset del modem
   LeeSerie();  
   if ((Texto.substring(0,3) == ("ATZ")) && (Texto.substring(6,8) == ("OK"))) {
      lcd.print("Reset OK"); 
      } 
}

// ????????????????????????????????????????????????
// ?  FUNCION Quita el Eco     Envia: ATE0                                              
// ?                           Responde: ATE0.._OK._                                   
// ????????????????????????????????????????????????
void QuitaEco(){
   Envia("ATE0");   // Desabilita el eco
   LeeSerie();  
   if ((Texto.substring(0,4) == ("ATE0")) && (Texto.substring(7,9) == ("OK"))) {
      lcd.print("Quitado el eco"); 
      } 
}

// ????????????????????????????????????????????????
// ?  FUNCION Introduce Pin    Envia: AT+CPIN=1234                                    
// ????????????????????????????????????????????????
void CargaPin(){
   String Pin_Texto = "AT+CPIN=";
   Envia(Pin_Texto+Pin_Numero);  // Decimos que el pin es igual a 1234  "AT+CPIN=1234" 
   delay(1000);
}

// ????????????????????????????????????????????????
// ?  FUNCION Comprueba Pin    Envia: AT+CPIN?                                          
// ?                           Responde: ..+CPIN: SIM PIN                              
// ?                           Responde: ..OK....+CPIN READY                            
// ????????????????????????????????????????????????
void VerificaPin(){
   Envia("AT+CPIN?");  
   LeeSerie();  
   if (Texto.substring(2,7) == ("ERROR")) {
      lcd.print("Error en Sim"); 
      } 
   else if (Texto.substring(2,16) == ("+CPIN: SIM PIN"))  {
      lcd.print("Sim ok-Falta Pin"); 
      } 
   else if (Texto.substring(2,4) == ("OK"))  {
      lcd.print("Pin Cargado"); 
      }      
}

Hay que tener presente que cuando "hablamos" con un momem GSM nos puede dar mas respuestas que las que yo he puesto, estas son mero ejemplo de jugar con el para las pruebas que hice, pero hay que leerse el manual de este y comprobar los codigos AT, una respuesta puede ser larga o corta dependiendo si hemos desabilitado el eco p.ej. o no.