Arduino GSM Shield 2 - In welchem Format Handynummer eingeben?

Hallo Liebe Forengemeinde,

ich versuche gerade eine SMS über das Arduino GSM Shield 2 zu versenden und scheitere bei dem Format mit dem ich meine Handynummer eingeben muss.

Hat jemand schonmal mit dem original Arduino GSM Shield gearbeitet und könnte mir bitte helfen und sagen wie die Nummer einzugeben ist?

Hier der Teil meines Codes indem die Handynummer stehen muss:

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to
char remoteNumber[20]= "+49177...";

Ich habe bereits folgende Konstellationen probiert:

+49177...
049177...
0177...
49177...
177...

Eine Verbindung zum GSM Netz besteht, es liegt wirklich nur an dem Problem das ich die Handynummer des Empfängers nicht richtig eingebe.

Könnte mir hierbei bitte jemand helfen?

Vielen Dank

Ein Paar Vorschlaege, obwohl ich eigentlich Arduino-Neuling bin:

  • Wie ist der Rueckgabewert von "beginSMS()" / "endSMS()"?

"int
In asynchronous mode, beginSMS() returns 0 if the last command is still executing, 1 if success, and >1 if there is an error. In synchronous mode, it returns 1 if it successfully executes, and 0 if it does not. "
"int
In asynchronous mode, endSMS() returns 0 if it is still executing, 1 if successful, and >1 if there is an error. In synchronous mode, it returns 1 if the previous successfully executed, and 0 if it has not."

  • Laesst sich eine Nachricht schonmal empfangen? Wie sieht die uebermittelte Rufnummer aus?

  • SIM-Karte in einem Handy testen.

Woher weißt du das es am Format der Nummer hängen soll? Bekommst du eine Fehlermeldung?

also 0177… sollte so passen.

arduarn:

  • SIM-Karte in einem Handy testen.

Funktioniert fehlerfrei.

Scherheinz:
Woher weißt du das es am Format der Nummer hängen soll? Bekommst du eine Fehlermeldung?

Der Programmcode läuft so auf mehreren anderen getesteten Shields (es ist ein Beispielcode von Arduino)
Daher bin ich mir absolut sicher das es an dem Format der Nummer liegt. Eine Verbindung zum GSM Netz besteht, habe mir den Provider ausgeben lassen und die Signalstärke.

Scherheinz:
also 0177..... sollte so passen.

Habe ich auch schon getestet, leider hat es auch nicht funktioniert.

Vielen Dank für eure Rückmeldung bisher, Weitere Hilfen/Vorschläge ?

Liebe Grüße, Tobi

Tobias93:
Funktioniert fehlerfrei.

Der Programmcode läuft so auf mehreren anderen getesteten Shields (es ist ein Beispielcode von Arduino)
Daher bin ich mir absolut sicher das es an dem Format der Nummer liegt. Eine Verbindung zum GSM Netz besteht, habe mir den Provider ausgeben lassen und die Signalstärke.

Habe ich auch schon getestet, leider hat es auch nicht funktioniert.

Vielen Dank für eure Rückmeldung bisher, Weitere Hilfen/Vorschläge ?

Liebe Grüße, Tobi

Wieviele GSM Shields hast du denn, die sind doch recht teuer? :o

Zeig mal deinen kompletten Sketch, es liegt nicht am Format.

char remoteNumber[20]= "0177*******";

Das passt soweit.

Kannst du denn prüfen, ob die SMS gesendet wird ?
Und dann evtl. an eine falsche Nummer ?

P.S.
Und jetzt mit einem anderen SMS-Modul ? Kein TC35 mehr ?

Scherheinz:
Zeig mal deinen kompletten Sketch, es liegt nicht am Format.

Das ist der (Beispiel-)Code den ich nutze:

// Include the GSM library
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
      notConnected = false;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop() {

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}

Und als Nummer an die ich senden möchte übergebe ich im SerialMonitor die Hanynummer und habe die oben genannten Schreibweisen bereits alle getestet.

Das Shield funktioniert auf einem Arduino Uno montiert doch ohne externe Stromversorgung oder ? Zumindest zeigt der Arduino Mensch vom Arduino youtube Channel in dem SMS Tutorial. Hat da jemand Erfahrung ?

Gruß, Tobi

HotSystems:
P.S.
Und jetzt mit einem anderen SMS-Modul ? Kein TC35 mehr ?

Hör mir bloß auf :sweat_smile: Ich hab kapituliert :-X

Und wieso hinterlegst du nicht erstmal eine feste Nummer bis es funktioniert?
Sendest du im SerialMonitor auch CR+LF mit??

Hallo,

Scherheinz:
Und wieso hinterlegst du nicht erstmal eine feste Nummer bis es funktioniert?

Das ist ein guter Einwand, ich habe auch einen (Beispiel-) Sketch mit dem ich das probiert habe, allerdings ebenfalls ohne Erfolg:
(Er ist von der Arduino Seite)

#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to
char remoteNumber[20]= "12125551212";  

// char array of the message
char txtMsg[200]="Test";

void setup()
{
  // initialize serial communications
  Serial.begin(9600);

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized");
  sendSMS();
}

void loop()
{
// nothing to see here
}

void sendSMS(){

  Serial.print("Message to mobile number: ");
  Serial.println(remoteNumber);

  // sms text
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");  
}

An der Stelle:

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to
char remoteNumber[20]= "12125551212";

Wird die Empfängernummer eingegeben. Und hier genau hängt es, ich weiß nicht in welchem Format ich meine deutsche Empfängernummer eingeben soll.

Viele Grüße, Tobias

Es liegt nicht an der Nummer bzw nicht an der Schreibweise.
Hast du mal einfach nur die SIM eingelegt, mit Spannung versorgt und per Handy die Nummer angerufen? Das anklingeln sollte funktionieren.....
Benutzt du einen Uno oder Mega?

Scherheinz:
Hast du mal einfach nur die SIM eingelegt, mit Spannung versorgt und per Handy die Nummer angerufen? Das anklingeln sollte funktionieren.....

Funktioniert, mit angeschlossenen Kopfhörern am Audio Port kann man auch den Klingelton ordnungsgemäß hören.

Scherheinz:
Benutzt du einen Uno oder Mega?

Ich benutze einen Arduino UNO.

Tobias93:
Der Programmcode läuft so auf mehreren anderen getesteten Shields (es ist ein Beispielcode von Arduino)
Daher bin ich mir absolut sicher das es an dem Format der Nummer liegt. Eine Verbindung zum GSM Netz besteht, habe mir den Provider ausgeben lassen und die Signalstärke.

Habe ich auch schon getestet, leider hat es auch nicht funktioniert.

Vielen Dank für eure Rückmeldung bisher, Weitere Hilfen/Vorschläge ?

Liebe Grüße, Tobi

Hast du dir den Provider und die Signalstärke über den Arduino ausgeben lassen oder über eine andere Verbindung zum PC?