¿Alguien ha encontrado una solución al problema mencionado anteriormente?
Estamos utilizando Arduino Duemilanove y el módulo SIM 900 GSM ( http://robokits.co.in/shop/index.php?main_page=product_info&products_id=303 )
Hemos intentado trabajar en el problema similar de las luces LED del puerto 9-12 cuando enviamos un sms #aibicidi, donde i = 0 o 1, 0 = apagado, 1 = encendido. P.ej. #a1b1c1d1 encenderá todos los Led.
Cuando cargamos el código y lo ejecutamos a través del monitor en serie e ingresamos #a1b1c1d1 en el monitor en serie, podemos ver que todos los LED se iluminan. Pero si enviamos el sms con contenido "#a1b1c1d1", no vemos ninguna función de los leds.
Sería genial si alguien puede 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
}
}
}
}
}
su código es bueno para la terminal serial, pero no para el módem GSM. Siempre toma 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....
Realice la modificación AT+CNMI=2,2,0,0,0
en lugar AT+CNMI=3,3,0,0
de nuestro código anterior. Entonces el relé funcionará.
uttam pal
Anindo Ghosh