Recepción de SMS usando GSM y control de LED usando Arduino

3

¿Alguien ha encontrado una solución con el problema mencionado anteriormente?

Estamos utilizando Arduino Duemilanove y el módulo SIM 900 GSM ( enlace )

Hemos intentado solucionar el problema similar de los rayos Leds desde el puerto 9-12 cuando enviamos un sms #aibicidi, donde i = 0 o 1, 0 = apagado, 1 = encendido. P.ej. # a1b1c1d1 encenderá todos los Led's.

Cuando cargamos el código y lo ejecutamos a través del monitor de serie e ingresamos el # a1b1c1d1 en el monitor de serie, podemos ver cómo se iluminan todos los LED. Pero si enviamos los sms con contenido "# a1b1c1d1", no vemos ninguna función de leds.

Sería fantástico si alguien pudiera dar alguna orientación sobre el mismo.

 char inchar; //Will hold the incoming character from the Serial Port.


 int led1 = 9;
 int led2 = 10;
 int led3 = 11;
 int led4 = 12;

 void setup()
 {
 // prepare the digital output pins
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 digitalWrite(led1, LOW);
 digitalWrite(led2, LOW);
 digitalWrite(led3, LOW);
 digitalWrite(led4, LOW);
 //Initialize GSM module serial port for communication.


 Serial.begin(9600);
 delay(3000); // give time for GSM module to register on network etc.
 Serial.println("AT+CMGF=1"); // set SMS mode to text
 delay(200);
 Serial.println("AT+CNMI=3,3,0,0"); // set module to send SMS data to serial out upon receipt 
 delay(200);
 }

 void loop() 
 {
 //If #a1b1c1d1 comes as sms, all led's should light up.
 if(Serial.available() >0)
 {
 inchar=Serial.read(); 
 if (inchar=='#')
   {
   delay(10);
   inchar=Serial.read(); 

 //first led
   if (inchar=='a')
     {
   delay(10);
   inchar=Serial.read();

 if (inchar=='0')
   {
   digitalWrite(led1, LOW);
   } 
 else if (inchar=='1')
   {
   digitalWrite(led1, HIGH);
   }
 delay(10);


 //Second led
 inchar=Serial.read(); 

 if (inchar=='b')
   {
   inchar=Serial.read();
 if (inchar=='0')
 {
 digitalWrite(led2, LOW);
 } 

 else if (inchar=='1')
 {
 digitalWrite(led2, HIGH);
 }
 delay(10);

 // Third led
 inchar=Serial.read(); 
 if (inchar=='c')
 {
 inchar=Serial.read();
 if (inchar=='0')
 {
 digitalWrite(led3, LOW);
 } 
 else if (inchar=='1')
 {
 digitalWrite(led3, HIGH);
 }
 delay(10);

 //Fourth led

 inchar=Serial.read(); 
 if (inchar=='d')
 {
 delay(10);
 inchar=Serial.read();
 if (inchar=='0')
 {
 digitalWrite(led4, LOW);
 } 
 else if (inchar=='1')
 {
 digitalWrite(led4, HIGH);
 }
 delay(10);
 }
 }
 Serial.println("AT+CMGD=1,4"); // delete all SMS
 }
 }
 }
 }
 }
    
pregunta Uttam Pal

2 respuestas

1

su código es bueno para el terminal en serie, pero no para el módem GSM. Siempre tome el comando en forma de AT use AT + CMGR = 1 para leer el mensaje ... envíe este comando al módem y vea la respuesta ...

    
respondido por el Zahid
-1

Realice la modificación AT+CNMI=2,2,0,0,0 en lugar de AT+CNMI=3,3,0,0 de nuestro código anterior. Entonces el relé funcionará.

    
respondido por el waruna

Lea otras preguntas en las etiquetas