INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sim800L warten bis Modul im Netz eingewählt ist
28.01.2021, 13:19
Beitrag #1
Sim800L warten bis Modul im Netz eingewählt ist
Hallo zusammen,

ist es möglich eine If Abfrage zu machen, in der man so lange wartet, bis sich mein SIM800L Modul in das ins Netz eingewählt hat?
Wäre hier "AT+CREG" richtig? Wie müsste ich den Code schreiben, dass er funktioniert?
Danke für eure Hilfe

Gruß
Intel

Gruß
Intel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2021, 13:41
Beitrag #2
RE: Sim800L warten bis Modul im Netz eingewählt ist
Ja, mit AT-CREG sollte es funktionieren, ich habe es bisher noch nicht gebraucht.

Wie es mit der if-Abfrage funktioniert, findest du in den Beispielen der IDE. Da kannst du es für dich nachvollziehen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2021, 13:57
Beitrag #3
RE: Sim800L warten bis Modul im Netz eingewählt ist
(28.01.2021 13:19)Intelmuh schrieb:  Hallo zusammen,

ist es möglich eine If Abfrage zu machen, in der man so lange wartet, bis sich mein SIM800L Modul in das ins Netz eingewählt hat?
Wäre hier "AT+CREG" richtig? Wie müsste ich den Code schreiben, dass er funktioniert?
Danke für eure Hilfe

Gruß
Intel

Nimm einfach den folgenden Code. Die Schnittstelle musst du anpassen. Vermutlich auch die Antwortform der sim800 (verbose etc)

Code:
void SIM_register() {
  timeout=0;
  byte z=20;  // Zähler für max. Versuche bis zum Abbruch
  while (1) {
    Serial1.println("AT+CREG?"); // Serial1 ist die Schnittstelle für den SIM800
    Serial.println(F("Warte auf Registrierung der SIM-Karte..."));
    while( ! Serial1.available());
    char c = Serial1.read();  // wenn registriert: sim800 antwortet mit 1 oder 5
    if (c == '1') {
        Serial.println(F("SIM registriert         "));
        break;
      }
      if (c == '5') {
        Serial.println(F("SIM registriert, roaming"));
        break;
      }
      while(Serial1.available()){  // Empfangspuffer leeren, für nächsten Versuch
        Serial1.read();
      }
      delay(1000);
    }
    z--;
    if(!z){
      timeout=1;
      break;
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2021, 14:20
Beitrag #4
RE: Sim800L warten bis Modul im Netz eingewählt ist
Vielen dank euch beiden für die schnelle Hilfe!
Werde ich heute Nachmittag direkt mal versuchen.

Sofern ich noch weitere Hilfe benötige, melde ich mich wieder Shy

Gruß
Intel

Gruß
Intel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2021, 17:18 (Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2021 17:24 von Intelmuh.)
Beitrag #5
RE: Sim800L warten bis Modul im Netz eingewählt ist
Guten Abend,

mittlerweile bin ich schon die ganze Zeit am hin und her probieren, schaffe es aber nicht, das teil zum laufen zu bringen.

Mein aktueller Scatch sieht wie folgt aus:
Code:
#include "SoftwareSerial.h"
#define PIN_TX 10
#define PIN_RX 11
int timeout = 0;
// replace with your own PIN of the Sim card
//const char SIM_PIN_NUMBER = "XXX";

// XX = country code, e.g. "49" for Germany and xxxxxxxxxxx = phone number
const char TELEFONE_NUMBER1[] = "+49XXX";
const char TELEFONE_NUMBER2[] = "+49XXX";

SoftwareSerial mySerial(PIN_TX, PIN_RX);

void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);

  // Once the handshake test is successful, it will back to OK
  mySerial.println("AT");
  updateSerial();

  mySerial.println("AT+CSQ");
  updateSerial();

}

void loop() {
SIM_register();
delay(1000);
  }

void updateSerial()
{
  delay(200);
  while (Serial.available()) {
    // Forward what Serial received to Software Serial Port
    mySerial.write(Serial.read());
  }
  while(mySerial.available()) {
    // Forward what Software Serial received to Serial Port
    Serial.write(mySerial.read());
  }
}


void SIM_register() {
  timeout=0;
  byte z=20;  // Zähler für max. Versuche bis zum Abbruch
  while (1) {
    mySerial.println("AT+CREG?"); // Serial1 ist die Schnittstelle für den SIM800
    Serial.println(F("Warte auf Registrierung der SIM-Karte..."));
    while( ! mySerial.available());
    char c = mySerial.read();  // wenn registriert: sim800 antwortet mit 1 oder 5
    if (c == '1') {
        Serial.println(F("SIM registriert         "));
        break;
      }
      if (c == '5') {
        Serial.println(F("SIM registriert, roaming"));
        break;
      }
      while(mySerial.available()){  // Empfangspuffer leeren, für nächsten Versuch
        mySerial.read();
      }
      delay(1000);


    z--;
    if(!z){
      timeout=1;
      Serial.println("Fehler");
      delay(2000);
      break;
    }
}
}

Über den seriellen Monitor wird mir "Warte auf Registrierung der SIM-Karte..." ausgegeben, obwohl mein Sim Modul mit dem Netzwerk verbunden ist. Könnt ihr vielleicht mal über den Code schauen und mir sagen, wo mein Fehler liegt?

Gruß
Intel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2021, 17:49
Beitrag #6
RE: Sim800L warten bis Modul im Netz eingewählt ist
Wozu steht da "while(1)" ?
Das blockiert nur .

Und wenn du den Befehl
Code:
mySerial.print("AT+CREG?");
abgesendet hast, kannst du doch per Aufruf
Code:
updateSerial();
die Antwort abfragen.
Da sollte dann "OK" kommen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Sim800L SleepMode Intelmuh 8 682 13.02.2021 17:20
Letzter Beitrag: hotsystems
  Telegram Bot mit SIM800 Modul Intelmuh 6 805 16.12.2020 14:30
Letzter Beitrag: hotsystems
  SIM800L - Koordinaten abfragen uk1408 1 954 26.09.2020 09:37
Letzter Beitrag: uk1408
Photo SIM800l Variable Telefonnummer zuweisen huber5093 18 2.298 15.06.2020 23:07
Letzter Beitrag: georg01
  4 Zeilen im Display Modul 0.69" IIC I2C, aber wie? Christian_Moba-Arduino 7 1.359 17.05.2020 13:12
Letzter Beitrag: Christian_Moba-Arduino
  Mega & SIM800L - Rufnummer Empfänger von String zu Char kiximek 6 1.337 12.05.2020 07:02
Letzter Beitrag: kiximek
  Probleme mit GPS-Modul an Nano DO3GE 3 952 26.02.2020 16:13
Letzter Beitrag: amithlon
  E-Mailversand mit SIM800L keinstein77 4 1.429 05.10.2019 13:16
Letzter Beitrag: keinstein77
  Mp3-Modul library Problem Prospekteur 1 1.228 28.09.2019 20:30
Letzter Beitrag: hotsystems
Tongue GSM Modul - Nur erste SMS geht raus Haukini 3 1.547 24.03.2019 14:04
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste