Hat jemand eine Lösung für das oben genannte Problem gefunden?
Wir verwenden Arduino Duemilanove und SIM 900 GSM-Modul ( http://robokits.co.in/shop/index.php?main_page=product_info&products_id=303 )
Wir haben versucht, an dem ähnlichen Problem von Blitz-LEDs von Port 9-12 zu arbeiten, wenn wir eine SMS #aibicidi senden, wobei i = 0 oder 1, 0 = aus, 1 = an. Z.B. #a1b1c1d1 schaltet alle Leds ein.
Wenn wir den Code hochladen und über den seriellen Monitor ausführen und # a1b1c1d1 in den seriellen Monitor eingeben, können wir sehen, dass alle LEDs aufleuchten. Aber wenn wir die SMS mit dem Inhalt „#a1b1c1d1“ senden, sehen wir keine Funktion der LEDs.
Es wäre toll, wenn jemand eine Anleitung dazu geben könnte.
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
}
}
}
}
}
Ihr Code ist gut für serielle Terminals, aber nicht für GSM-Modems. Es wird immer ein Befehl in Form von AT verwendet. Verwenden Sie AT + CMGR = 1, um die Nachricht zu lesen .... senden Sie diesen Befehl an das Modem und sehen Sie sich die Antwort an ....
Führen Sie die Änderung AT+CNMI=2,2,0,0,0
anstelle AT+CNMI=3,3,0,0
unseres vorherigen Codes durch. Dann funktioniert das Relais.
Uttam Pal
Anindo Ghosh