Guten Abend liebe Arduino Gemeinde,
benötige bitte eure Hilfe bezüglich eines Siemens TC35 GSM Modul...
Kurz zur Story, habe mir auf ebay vor zwei Wochen ein GSM "Shield" bestellt, mit dem Verkaufstitel TC35... nur das waren SIM900 Module mit Asia branding. Also keine Funktion... kurzerhand habe ich mir ein wirkliches Siemens TC35 bestellt und heute bekommen.
Nach ein paar Stunden des testen bin ich langsam am Ende meiner Geduld.
Bekomme keine sauberere Serielle Verbidnung zusammen und kann keine SMS senden.
Egal welches Tutorial ich angewendet habe, es läuft alles auf einen misserfolg raus.
- Problem "Serielle Verbidnung"
In allen Tutorial wird angegeben, dass eine Command mittels Serial.print dem Modul übergeben wird.
Bei mir funktioniert das ganze nur mit Serial.write (lesen und Schreiben) Wenn ich Serial.print verwende, dann bekomme ich nur zahlen zurück. Wenn ich überhaupt eine Antwort bekomme...
- Problem "kein SMS versand"
Mit Serial.Wirte komme ich soweit, dass ich eine Antwort vom Modul bekomme.
AT -> Antwort OK usw... auch bei AT+CPIN? bekomme ich READY zurück (das war bei den SIM900A nicht der fall). Sobald ich eine SMS Versende will, hängt sich das ganze auch bzw. ich kann die Nachricht nicht beenden. Bekomme nach einer weile Error als Antwort. Kurz zu meinen Vorgenen...
Serial1.write("AT+CMGF=1\r");
delay(2000);
Serial1.write("AT+CMGS=\"+43xxxxxxxxx\"\r");
delay(2000);
Serial1.write("Message From GSM");
delay(2000);
Serial1.write(0x1A);
Serial1.write(0x1A); -> Statt beenden bleibt er einfach im SMS Body. Wenn ich das ganze manuel im Serial Monitor durchspielen möchten, komme ich nicht aus der SMS Message zeile raus (> text)
- Problem "Modul Anrufen"
Wenn ich versuche, dass Modul anzurufen, dann bekomme ich nur die Antwort das der Teilnehmer nicht erreichbar ist. Bei der Empfangsabfrage AT+CSQ? bekomme ich 20,99 als Antwort und wenn ich den Netzwerkstatutus abfrage mit at+creg? kommt als Antwort 0,1...
- Problem "Handy Anrufen"
Wenn ich vom Modul aus versuche mein Handy anzurufen, kommt als Antwort "NO CARRIER"...
Verwendete Hardware
- Arduino MEGA 2560 (Hardware Serial nicht Softserial)
- Arduino UNO (als Refernz)
- Sim Karte A1 Österreich
Werde VM noch Test durchführen, mit einer Stromversorgung vom Labornetzteil.
Heute habe ich es über den 5V Ausgang des Arduinos versorgt.
Mein gesamtes Testprogramm
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
pinMode(7, OUTPUT);
pinMode(8, INPUT);
Serial.println("TC35 GSM Modul: ");
}
void loop() {
// Do AT commands
if (digitalRead(8) == LOW){
if (Serial.available()){
Serial1.write(Serial.read());
}
if (Serial1.available()){
Serial.write(Serial1.read());
}
}
// Sending SMS
if (digitalRead(8) == HIGH){ // On button press
digitalWrite(7, HIGH); // Turn LED on.
Serial1.write("AT"); // Sends AT command to wake up cell phone
Serial.write(Serial1.read());
delay(2500);
Serial1.write("AT+CMGF=1\r"); // Puts phone into SMS mode
Serial.write(Serial1.read());
delay(2500); // Wait a second
Serial1.write("AT+CMGS=\"+43xxxxxxxxxx\""); // YOUR NUMBER HERE; Creates new message to number
Serial.write(Serial1.read());
delay(2500);
Serial1.write("Sent from my Arduino"); // Message contents
Serial.write(Serial1.read());
delay(2500);
//Serial1.write(char(26)); // (signals end of message)
Serial1.write(0x1A); // sends ctrl+z end of message
Serial.write(Serial1.read());
delay(2500);
Serial1.write("AT+CMSS=1"); // Sends message at index of 1
Serial.write(Serial1.read());
delay(2500); // Give the phone time to send the SMS
Serial.println("done...");
delay(10000);
}
}
Liebe grüße aus den Süden Österreichs