Hi,
Ich werd noch bekloppt, ich versuche mit einem Arduino mega und einem Siemens TC35 Modul mittels SMS Befehl zuschalten.
hier mein Code dazu:
#include <SoftwareSerial.h>
char gsm_char=0; //Stores character from the gsmSerial
char taste;
int code;
int pincode;
int n_sms,x,y,z,sms_start;
char data[256];
char keywort[256] = "Pipi";
char erg[256];
SoftwareSerial gsmSerial(10,11); //Creates a software serial port. (rx,tx)
void setup()
{
//Initialize serial ports for communication.
Serial.begin(9600);
gsmSerial.begin(9600);
Serial.println("Starting TC35 and debug Communication...");
}
void loop() {
//If a character comes in from the cellular module...
if(gsmSerial.available() > 0){
gsm_char=gsmSerial.read(); //Store the char in gsm_char.
data[x]=gsm_char;
x++;
if(data[x-1]==0x0D&&data[x-2]=='"'){
x=0;
}
}
if(data[x] == keywort[y]){erg[y]=data[x]; y = y + 1;}else{y=0;}
Serial.println(erg);
Serial.println(keywort);
Serial.println("====");
if(erg==keywort){
Serial.println("JAAAAAAAAAAAAAAAAAAAAAAAAAA keywort war korrekt");
}
//Read serial input
if(Serial.available() > 0){
gsm_char=Serial.read(); //Store char in gsm_char (Not really from the gsm, just saving some memory)
//Evaluate input.
if(gsm_char=='t'){
gsmSerial.print("AT\r"); //Send test command
} else if(gsm_char=='p'){
gsmSerial.print("AT+CPIN?\r"); //Enter pin, hardcoded
} else if(gsm_char=='g'){
gsmSerial.print("AT+CMGF=1\r"); //Set text mode.
} else if(gsm_char=='e'){
gsmSerial.print("ATD+4915777849093;\r"); // ruft die rufnummer an
} else if(gsm_char=='n'){
gsmSerial.print("at+creg?\r");
}else if(gsm_char=='x'){
gsmSerial.print("at+cops?\r");
}else if(gsm_char=='b'){
gsmSerial.print("AT+CMGF=0\r"); // Dingsbums mode
}else if(gsm_char=='c'){
gsmSerial.print("AT+cmgr=1\r"); // SMS 1 lesen vorher in text mode gehen mit "g"
}else if(gsm_char=='l'){
gsmSerial.print("AT+cmgd=1\r"); // SMS absenden
}else if(gsm_char=='4'){
gsmSerial.print("at+cmgd=1\r"); // nachricht 1 löschen
}else if(gsm_char=='3'){
gsmSerial.print("AT+CMGL[=ALL]\r"); // SMS speicher auflisten
}else if(gsm_char=='2'){
gsmSerial.print("AT+CSQ\r"); // empfang erste zahl => 0 -113 dBm or less | 1 -111 dBm | 2...30 -109... -53 dBm | 31 -51 dBm or greater | 99 not known or not detectable .... 2te zahl => fehlerrate
}else if(gsm_char=='h'){
gsmSerial.print("ATH\r"); // legt auf
}else if(gsm_char=='5'){
gsmSerial.print("AT+CCLK=\"13/01/30,22:35:00\"\r"); // uhrzeit einstellen
}else if(gsm_char=='u'){
gsmSerial.print("AT+CCLK?\r"); // uhrzeit lesen
}else if(gsm_char=='s'){
//Send sms!
gsmSerial.print("AT+CMGS=004915777849093\r"); //AT command to send SMS
delay(100);
gsmSerial.print("Hello Henrik"); //Print the message ( OHNE \r ) und abschließenden das kommando \x1a hinterhersenden !
delay(10);
gsmSerial.print("\x1A"); //Send it ascii SUB
}
}
}
Variable erg und keywort sind laut serial ausgabe identisch, jedoch führt der nicht die if schleife aus, wieso ?
Danke