Mehrere SMS'en über Arduino GSM Modul versenden [Frage/Hilfe]

Hallo Freunde,

ich habe eine Frage bezüglich meinem aktuellen Projekts, für unsere Feuerwehr möchte ich ein Alarmierungssystem mit einem GSM Modul und Arduino erstellen. Hierzu hätte ich vorab ein paar konkrete Fragen und wollte mich deshalb an euch wenden:

  1. Kann mir jemand irgendein bestimmtes GSM Modul empfehlen mit dem er bereits gute Erfahrungen gemacht hat, ansonsten wäre ich dazu geneigt das Arduino Original Modul für ca.79€ zu nutzen.

  2. Ich möchte mehrere (ca. 30) SMS'en hintereinander bei eintreten eines bestimmten Ereignisses (IO-Port Signal) versenden. Ich habe noch keine Erfahrungen mit einem derartigen Modul und wollte dahe bevor ich überhaupt loslege zu dem Versand mehrerer SMSen fragen:

2.2 Kann das Modul so viele SMS'en nacheinander versenden, oder gibt es hierzu etwas zu beachten
(vielleicht nur XX-SMS nacheinander dann erst pause wegen.... ka. vielleicht
Überhitzungsschutz ect. ... möchte nur sicher gehen)

2.3 Wie kann ich mir die Sendeverzögerung in etwa vorstellen, für den Versand einer einzelnen SMS
habe ich in youtube Videos bereits gesehen das es in wenigen Sekunden geschieht, mich interessiert aber nun die Frage, wenn ich 30 SMS, oder generell eine größere Anzahl an SMSen versenden möchte wie lange in etwa ist zu erwarten das es dauert? Diese Frage richte ich na jemanden der genau soetwas schonmal gemacht hat, und etwas dazu sagen kann wie lange der versand von mehreren SMSen dauert, muss ja nicht genau die Anzahl 30 sein, nur so grob für mich das ich in etwa abschätzen kann ob das System von der "Sendegeschwindigkeit" überhaupt für mein Vorhaben Nutzbar ist.

Es wäre sehr sehr freundlich wenn mir der ein oder andere von euch mit seinen bereits gesammelten Erfahrungen hierbei weiterhelfen könnte,

vielen Dank vorab und freundliche Grüße, Tobi

Machbar ist das. Ob du so viele SMS direkt nachheinander versenden kannst hängt eher von deinem Anbieter ab als von dem Modul, ich denke aber schon. Die Frage die sich stellt ist eher wer die Kosten trägt für die ganzen SMS. Evtl wäre eine Lösung über Raspberry und Whatsapp schneller und kostenfrei wenn eine Internetverbindung vorhanden ist. Außerdem hoffe ich dass es nur eine zusätzliche Info seinen soll, sprich es macht nichts wenn das System nicht funktioniert und eure Einsätze werden nicht gestört davon.

Gruß

Möchtest du denn ca. 30 unterschiedliche SMS versenden oder eine SMS an ca. 30 unterschiedliche Empfänger (Nummern) ?

Empfehlen kann ich das Siemens TC35, aber auch andere Module funktionieren gut. Ob es aber das Modul für 79€ sein muss, wage ich zu bezweifeln.
Ich würde aber kein Shield (Aufsteckmodul) nehmen, dann wird es immer schwierig, weitere Pins zu belegen.

Vielen Dank für eure Rückmeldungen,

Scherheinz:
Die Frage die sich stellt ist eher wer die Kosten trägt für die ganzen SMS. Evtl wäre eine Lösung über Raspberry und Whatsapp schneller und kostenfrei wenn eine Internetverbindung vorhanden ist.

Internetverbindung ist leider nicht vorhanden und auch nicht jedes Mitglied hat WhatsApp, es besteht eine SIM Karte mit SMS Flat Vertrag, deshalb möchte ich eher die Variante wählen.

HotSystems:
Möchtest du denn ca. 30 unterschiedliche SMS versenden oder eine SMS an ca. 30 unterschiedliche Empfänger (Nummern) ?

Genau das habe ich vor, die Nachricht ist exakt die Gleiche nur eben an unterschiedliche Empfänger versenden, so wie dus beschrieben hast. Ich würde eigentlich recht gerne mit dem Arduino Modul arbeiten, aber zu dem von dir empfohlenen eine Frage, hast du damit schonmal gearbeitet, bzw. kann man das auch nutzen um es mit dem Arduino zu verbinden und letztendlich die gleichen Funktionen zu realisieren?

Vielen Dank für eure Hilfe, Liebe Grüße, Tobi

Tobias93:
Genau das habe ich vor, die Nachricht ist exakt die Gleiche nur eben an unterschiedliche Empfänger versenden, so wie dus beschrieben hast. Ich würde eigentlich recht gerne mit dem Arduino Modul arbeiten, aber zu dem von dir empfohlenen eine Frage, hast du damit schonmal gearbeitet, bzw. kann man das auch nutzen um es mit dem Arduino zu verbinden und letztendlich die gleichen Funktionen zu realisieren?

Ja, dieses TC35 verwende ich selber und habe es mit dem Arduino (Uno, Pro Mini oder Nano) auch schon bei Freunden eingesetzt.

Funktioniert sehr gut und sicher.

Auch das mehrfach versenden der SMS (ich habe es mit 10 Stück getestet) funktioniert sehr gut.
Einfach die entsprechenden Nummern mit dem vorhandenen Text nacheinander aussenden.

Ich habe leider noch keinen Befehl zum einlesen mehrerer Nummern in einem Stück gefunden, sollte es aber auch geben.

Also, wenn du weitere Fragen zum TC35 hast, gerne melden.

vielen Dank für die Infos,

ich werde das Projekt mit dem TC35 umsetzen, bei weiteren Fragen melde ich mich dann wieder hier. Wenn ich alles fertig habe stelle ich die Doku dann online.

danke euch allen schonmal, lg tobi

Alles klar, wir helfen gern weiter.

Hier kannst du schon mal einige Infos rausziehen: TC35

klasse, vielen dank Schonmal

Hallo Leute,
das Modul ist nun angekommen und ich habe den Code hier:

HotSystems:
Hier kannst du schon mal einige Infos rausziehen: TC35

auf den Arduino übertragen und wie im Video beschrieben angeschlossen. Leider wird keine SMS versendet. Die Form in der ich die Handynummer eingegeben habe ist +49177... das sollte doch auch stimmen so oder?

Kann mir bitte jemand helfen, ich weiß mir keinen richtigen Rat weil ich auch noch ein anderes Tutorial ausprobiert habe aber das bei meinem Gerät leider auch nicht funktioniert.

Hat jemand vielleich noch einen anderen getesteten Code der sicher geht ? Dann würde ich den testen und gesetz dem Fall es geht nicht vermute ich ja fast schon einen Hardwaredefekt.

Vielen Dank vorab, Liebe Grüße Tobias

edit: Die Sim Karte hat keinen PinCode aktiviert und ich habe 3 verschiedene Sim Karten ausprobiert, leider bei allen ohne erfolg

Tobias93:
edit: Die Sim Karte hat keinen PinCode aktiviert und ich habe 3 verschiedene Sim Karten ausprobiert, leider bei allen ohne erfolg

Dann teste diesen Sketch für den TC35, der läuft bei mir (wurde gekürzt).

/*
* Taster löst Funktion nur einmal aus, egal wie lange gedrückt wird.
* Erst wiederholtes Drücken löst Funktion erneut aus.
*/

#include <SoftwareSerial.h>

// SMS-Texte und Telefonnummern in Array eintragen
char* SmsTxt[] = { "", "1. Hallo SMS-Test !"};
char* SmsNmr[] = { "", "1519876543"};
char atxt[100];                                               // Array for message

const int rxPin = 2;                  // rxPin für SoftwareSerial
const int txPin = 3;                  // txPin für SoftwareSerial
const int GSMok = 4;                  // okPin für GSM-Modem
const int GSMOn = 13;                 // GSMonPin zur Anzeige GSM aktiv

unsigned int InValue[5];
const int Input1 = 6;
int i;

SoftwareSerial TC35Serial = SoftwareSerial(rxPin, txPin);
String message  = "";
String number   = "";

void setup() {
  pinMode(Input1, INPUT_PULLUP);
  pinMode(GSMok, OUTPUT);
  pinMode(GSMOn, OUTPUT);

  Serial.begin(9600);
  TC35Serial.begin(9600);
  digitalWrite(GSMok, LOW);         // start GSM TC35
  delay(100);
  digitalWrite(GSMok, HIGH);
  Serial.println("Write your SMS:");

  //Serial.print("Quality: ");
  TC35Serial.println("AT+CSQ\r");
  delay(1000);
}

void loop() {

  // erste Taste wenn LOW dann senden
  if (digitalRead(Input1) == LOW)     // Tasterabfrage
  {
    if (InValue[1] == LOW )           // aktueller Zustand
    {
      InValue[1] = HIGH;              // neuer Zustand
      SendSMS(1);                     // Funktion SMS(Position)
    }
  }
  else
  {
    InValue[1] = LOW;                 // alter Zustand
  }
}

void SendSMS(unsigned int i) {
  // hier kommt deine Funktion zum SMS-senden rein
  digitalWrite(GSMOn, HIGH);          // Led an wenn sendet
  Serial.println("Send SMS......");
  Serial.println(SmsTxt[i]);          // auf Monitor zum testen anzeigen
  Serial.println(SmsNmr[i]);          // auf Monitor zum testen anzeigen

  message = SmsTxt[i];
  number = SmsNmr[i];
  SendTextMessage();
  
  delay(100);
  Serial.println("\r");
  Serial.println("Success");
  Serial.println("\r");
  message = "";
  number = "";
  digitalWrite(GSMOn, LOW);
  delay(50);
}

void SendTextMessage() {
  // hier wird die Nummer und der Text ans GSM übermittelt
  TC35Serial.print("AT+CMGF=1\r");
  delay(300);
  TC35Serial.print("AT+CMGS=\"+49" + number + "\"\r");
  delay(300);

  TC35Serial.println(message);
  TC35Serial.print("\r");
  delay(300);

  TC35Serial.println((char)26);
  TC35Serial.println();
}

Sollte es immer noch nicht funktionieren, dann löte einen Elko 1000 - 2200 µF direkt an die Spannungsversorgung des TC35.

danke, ich werde es testen und Meldung geben. Lg

Also beide Codes funktionieren nun, es wird eine SMS versendet, das ist schonmal prima :slight_smile:

Ich habe jetzt nochmal versucht über die Serielle schnittstelle des TC35 mittels einem Terminalprogramm direkt AT Commands zu senden/empfangen das klappt leider nicht. Ich dachte mir deshalb ob es vielleicht auch einfach direkt über den Serial Monitor in der Arduino IDE gehen könnte? Hat damit jemand Erfahrung, also hat schonmal jemand At- Befehle direkt über die Arduino Konsole gesendet und empfangen um zum Beispiel den Aktuellen Zustand ect. zu erfragen ?

Viele Grüße

Hallo, prima und es freut mich dass es funktioniert.

Leider habe ich mit der "seriellen" Eingabe noch nicht viel Erfahrung aber es wird funktionieren.
Die Schwierigkeit hierbei ist, die Zeichen werden dabei einzeln in eine Variable eingelesen und anschliessend dem Modul übergeben.
Ich muss mal schauen, ob ich dafür ein Beispiel dafür habe.

klasse danke für deine Bemühungen!

Hier nochmal kurz der aktuelle Stand:

-> Die Arduino Sketche funktionieren (SMS wird gesendet)
was nicht geht:

-> Direkte Verbindung über Seriell-USB Adapter mit dem TC35, AT Befehle über Konsolenprogramm PUTTY senden.... Deshalb würde ich das gerne direkt über die Arduino IDE im serial Monitor machen aber dazu habe bisher nichts gefunden.

Ein geeignetes Beispiel findest du in der IDE unter Beispiele-Communication-SerialEvent.

Wenn du diese Beispiel verwendest, musst du nur in Zeile 55 "if (inChar == '\n')" ein "\r" statt dem "\n" einsetzen.

Dann wird nach einer Texteingabe mit Enter der Text in die Variable "inputString" übernommen.
Diese kannst du dann als SMS weiter verarbeiten und deine SMS hieraus starten.

hey, vielen dank.

ich suche nach einem beispiel was mir zeigt wie ich etwas was VOM GSM Modul gesendet wird anzeigen kann. Also quasi ein Beispiel wo ich zum Beispiel im Serial Monitor ein "AT" an das Modul sende und ich dann angezeigt bekomme was das Modul antwortet, im Idealfall "OK". So etwas wäre genau das was ich suche...

Dann musst du das gsm Modul per usb-seriell-Wandler an den PC anschließen. TX/RX müssen gekreuzt sein, entsprechende Stromversorgung ans Modul und Massen verbinden. ggf. noch beachten ob 3.3V oder 5V

Richtige Baudrate einstellen und ein cr/lf mitschicken. Dann muss es klappen. Ist vom Anschluss im Prinzip nix anderes wie z.B. ein ESP8266

ElEspanol:
Dann musst du das gsm Modul per usb-seriell-Wandler an den PC anschließen.

Genau das möchte ich nicht, ich möchte es gerne direkt aus der Arduino IDE heraus machen und suche Beispiele/Hilfe hierzu. Nicht über über z.B. ein Terminalprogramm vom PC aus.

Wenn du den SMS-Sketch entsprechend anpasst und mein obiges Beispiel verwendest, funktioniert das auch. Du musst nur erreichen, dass der Befehl "AT" auch so übergeben wird.
Dazu muss das Modul in Warteposition sein, dann nimmt es ja AT-Befehle an.

Hier mal ein Überblick der AT-Befehle.