Probleme beim Übertragen von Daten mit dem GSM Modul

Hallo zusammen, ich habe mit der Arduino uno und dem GSM Modul ein Problem. Dabei übertrage ich Daten aus dem Fahrzeuge heraus mittels des GSM Moduls an einen Thingspeak Server. Das Funktioniert auf der Straße auch ganz gut aber beim Einfahren in eine Tiefgarage oder ähnliches bricht natürlich die Verbindung zum Netzt ab. Das ist auch kein Problem, denn wenn der Wagen wider aus der Tiefgerage fährt wird die Verbindung automatisch wieder aufgebaut und die Daten werden übertragen. Das Problem ist wenn beim rein fahren in die die Tiefgarage grade Daten übertragen werden und während des hochladend der Daten an den Server die Verbindung abbricht hängt sich der Code auf. Das kann nur mit einem Reset wieder behoben werden. Wie kann ich diesen Fehler abfangen oder so lösen das ein automatischer Reset ausgeführt wird. Meine Idee war einen Watchdog zu verwenden aber dieser hat nicht ausgelöst, wenn das Problem auftrat. Ich bin mir auch nicht sicher ob ich den richtig initialisiert habe. Hab Ihr noch andere Ideen für mich? Vielen Dank für die Hilfe

Dazu müsstest du zwischendurch immer prüfen,ob die Verbindung noch steht (Feldstärke prüfen) und bei schlechter Feldstärke einen Reset auslösen. Evtl. eine Zeitprüfung einbauen.

Okay, dass ist eine gute Idee aber wie kann ich während des Übertragens der Daten die Feldstärke Prüfen? Gibt es dafür eine Funktion in der GSM Bibliothek?
Weiß meinst du genau mit einer Zeitprüfung?

flo92: Okay, dass ist eine gute Idee aber wie kann ich während des Übertragens der Daten die Feldstärke Prüfen? Gibt es dafür eine Funktion in der GSM Bibliothek? Weiß meinst du genau mit einer Zeitprüfung?

Das ist in den meisten GSM-Modulen per AT-Befehl vorhanden. Ich kenne dein Modul nicht, aber vermute das es auch vorhanden ist. Musst du mal in der Dokumentation nachlesen.

Du musst dann immer zwischen den einzelnen Datenpaketen die Feldstärke prüfen.

Wenn dann der Ausfall länger als eine bestimmte Zeit anhält, erst einen Reset auslösen.

Danke für den Tipp. Ich versuch grade den Netzempfang abzufragen um herauszufinden ob eine Übertragung möglich ist. Dazu verwende ich die folgenden Funktionen:

#include <GSM.h>
in der Setup:
GSMScanner scannerNetworks;
in der loop:
Serial.print("Signal Strength: ");
Serial.print(scannerNetworks.getSignalStrength());

Aber erzeigt mir nichts an. Nach dem er “Signal Strength:” ausgegeben hat steht nichts weiter. Er arbeitet einfach weiter. Kennt sich jemand mit der Funktion (getSignalStrength)aus? hab ich was übersehen einzustellen?
Danke schon mal.

flo92:
#include <GSM.h>
in der Setup:
GSMScanner scannerNetworks;
in der loop:
Serial.print("Signal Strength: ");
Serial.print(scannerNetworks.getSignalStrength());

Aber erzeigt mir nichts an. Nach dem er “Signal Strength:” ausgegeben hat steht nichts weiter. Er arbeitet einfach weiter. Kennt sich jemand mit der Funktion (getSignalStrength)aus? hab ich was übersehen einzustellen?

Bis du denn sicher, dass diese Anweisung auch von deinem GSM unterstützt wird ?

ja eigentlich schon, in der Beschreibung für die GSM library wird GSMScanner als eine class aufgerührt. (https://www.arduino.cc/en/Reference/GSM) Zudem müsste doch der Compiler meckern wen er die Funktion nicht kennen würde oder? Ich Moment bin ich etwas ratlos.

flo92: ja eigentlich schon, in der Beschreibung für die GSM library wird GSMScanner als eine class aufgerührt. (https://www.arduino.cc/en/Reference/GSM) Zudem müsste doch der Compiler meckern wen er die Funktion nicht kennen würde oder? Ich Moment bin ich etwas ratlos.

Wenn die Library das hergibt, heißt es aber nicht, dass dein GSM-Modul das auch unterstützt. Da kannst du dich doch mit den AT-Befehlen rantasten bzw. in der Dokumentation zum GSM nachlesen.