SIM800L EVB am Arduino Mega

Hallo zusammen,
Ich muss mit einem Arduino Mega ein Simkartenmodul( SIM800L EVB) nach Möglichkeit mit der Standard Library GSM ansteuern können. Dabei habe ich aber das Problem das der Arduino Mega das SIM Modul nicht initialisiert. Ich weiß jetzt zwar nicht die Pins die ich miteinander verbinden muss, aber im Internet habe ich schon ein paar Kombinationen ausprobiert(z.B. 2 und 3 wie beim UNO oder 18 und 19 was ich am öftesten gefunden habe). Kann mir da jemand sagen welche Pins ich verbinden muss, damit ich das Beispielprogramm "ReceiveSMS" ausführen kann. Am Arduino habe ich es auch probiert(mit Pin 2 und 3) und da hat es problemlos funktioniert. Danke schon mal im Vorraus.

Hi

Da der Mega ebenfalls ein Arduino ist, ist 'am Arduino funktionierts' etwas vage formuliert.
Korrekt wäre wohl Uno/Nano gewesen - rein intuitiv.

Was sagt das WWW zum Thema SIM800L EVB und MEGA?
Du wirst ja wohl nicht der Erste sein, Der Das probiert - weil Ihm auf dem Uno der Speicher ausgeht ...

Wie wird das Teil angesprochen?
2 und 3/18 und 19 klingt zumindest weder nach I²C noch SPI, bliebe z.B. Seriell - wobei der Uno dann auf Soft-Serial zurück greifen muß, da die Hardware sich um die USB-Kommunikation mit dem PC kümmert.

Wie Du siehst: Wir brauchen mehr Details.

MfG

Rechts und Links - Schreibung ...

Und wenn es a einem Arduino an Pin2 und Pin3 funktioniert, dann sollte es an einem Mega auch funktionieren, wenn du alles richtig gemacht hast.
Das können wir leider nicht sehen, da du uns die wichtigsten Infos verheimlichst.
Zudem brauchst du am Mega kein SoftwareSerial, da kannst du Hardware Serial verwenden.

Aber wenn keine weiteren Infos kommen, wird es schwer.

Ich entschuldige mich das ich so undetailiert geschrieben habe. Mit Arduino im letzten Satz meinte ich eigentlich den Arduino UNO. Also nochmal Ich habe das "SIM800L EVB" Simkartenmodul, welches meines Wissens mit einer Seriellen Schnittstelle kommuniziert. Die Befehle die dabei übertragen werden weiß ich nicht. Deshalb möchte ich die GSM Library, die standardmäßig in der Arduino IDE installiert ist verwenden. Ich habe auch schon andere Librarys ausprobiert(z.B. SIM800L.h) aber die sind nicht so ausführlich bzw. übersichtlich gestaltet. Also habe ich dann probiert mit dem Arduino UNO das Simkartenmodul zum laufen zu bringen und zu schauen, ob das Modul überhaupt funktioniert. Aus dem Internet habe ich herausgelesen das ich dafür nur SIMTX mit Arduino UNO Pin 2, SIMRX mit Arduino UNO Pin 3 und SIMGND mit GND vom Arduino verbinden muss. Dies habe ich gemacht und dann habe ich das Beispielprogramm ReceiveSMS draufgeladen und eine SMS geschickt. Dies hat sehr gut funktioniert. Dann habe ich die Schaltung am Arduino Mega 1 zu 1 aufgebaut und das Programm erneut hochgeladen. Doch jetzt schreibt er mir nicht mehr wie beim UNO: "SMS Messages Receiver" "GSM initialized" "Waiting for messages" sondern nur noch "SMS Messages Receiver". In der Hoffnung das der Mega länger braucht habe ich das ganze mal 30 Minuten stehen lassen, aber es hat sich gar nichts getan. Nicht einmal ein "Not connected" hat er geschrieben. Also habe ich verschiedene Pins ausprobiert die in Frage kommen könnten(16 und 17, 18 und 19, 10 und 11, 50 und 51).DIe Informationen habe ich aus dem Internet. Da es immer noch nicht geht ist meine Frage, welche Pins muss ich mit dem Modul verbindendamit das am Mega auch funktioniert. Oder kann mir jemand sagen in welcher Library Datei die Pindefinition steht damit ich das abändern kann.
Ich hoffe Ihr habt jetzt alle Informationen, ansonsten meldet euch bitte noch einmal.

Dann zeig doch mal deinen Sketch, den du verwendest.
Setze den in Code-Tags, Schaltfläche </> oben links im Editorfenster verwenden.

Ich verwende den Sketch der in der Arduino Software im Beispiele Ordner(Examples) GSM-->ReceiveSMS abgespeichert ist.

/*
 SMS receiver

 This sketch, for the Arduino GSM shield, waits for a SMS message
 and displays it through the Serial port.

 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages

 created 25 Feb 2012
 by Javier Zorzano / TD

 This example is in the public domain.

 http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveSMS

*/

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

// PIN Number for the SIM
#define PINNUMBER ""

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

// Array to hold the number a SMS is retreived from
char senderNumber[20];

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 Receiver");

  // connection state
  boolean notConnected = true;

  // Start GSM connection
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
      notConnected = false;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() {
  char c;

  // If there are any SMSs available()
  if (sms.available()) {
    Serial.println("Message received from:");

    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);

    // An example of message disposal
    // Any messages starting with # should be discarded
    if (sms.peek() == '#') {
      Serial.println("Discarded SMS");
      sms.flush();
    }

    // Read message bytes and print them
    while (c = sms.read()) {
      Serial.print(c);
    }

    Serial.println("\nEND OF MESSAGE");

    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

  delay(1000);

}

Hi

SoftSerial funktioniert am Mega wohl mindestens ähnlich, wie am Uno.
Die Pins 2 und 3 sind nicht separat beschriftet, somit sollten 2 und 3 beim Mega ebenfalls keine Zusatzfunktionen beinhalten - möglich wäre Das aber dennoch!!

Dein Programm hängt sich auf, schlicht und einfach.

Für den Arduino (egal Welchen) ist eine Sekunde (SEKUNDE) eine ehlendlange Zeit - Da brauchst Du wirklich keine halbe Stunde warten, ob vom Mega noch ein Hallo kommt - in der Zeit wären dutzende Serial.print im Sketch verteilt und der Kram erneut gestartet gewesen.

MfG

PS:

while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

Was denkst Du, macht der Mega hier?
Zumindest wahrscheinlich, daß Er Da hängt, wenn die darauf folgende Fehler-Meldung nicht kommt ...

Ich habe meinen Code im Setup Teil jetzt etwas abgeändert.

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 Receiver");

  // connection state
  boolean notConnected = true;

  // Start GSM connection
  while (notConnected) {
    Serial.print("init");
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
      Serial.println(" erfolgreich");
      notConnected = false;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

Jetzt wartet er nicht mehr ob die Serielle Schnittstelle verfügbar ist.
Und vor und nach der Zeile wo ich geglaubt habe das er bei der hängt habe ich davor ein Serial print gemacht dass er init schreiben soll und gleich danach habe ich Serial print erfolgreich gemacht. Meine Vermutung hat sich dann bestätigt dass bei genau der der Zeile etwas ist, denn Er Schreibt: SMS Messages Receiver und danach init dann kommt nichts mehr.
Und zu dem, dass eine Sekunde eine lange Zeit ist, möchte ich noch was sagen.
Postmaster-ino du hast recht in dem Falle ist eine Sekunde sehr lange, aber der Arduino UNO braucht nicht nur 1 Sekunde bis er das Modul initialisiert hat, sondern das dauert in meinem Fall auch ca. 15 Sekunden. Ich glaube das liegt daran das in der Initialisierung ein paar Befehle ausgeführt werden welche ihre Zeit brauchen.

Hi

allzeittechniker:
..., sondern das dauert in meinem Fall auch ca. 15 Sekunden. Ich glaube das liegt daran das in der Initialisierung ein paar Befehle ausgeführt werden welche ihre Zeit brauchen.

Danke für diese Erklärung, trotzdem sollte der Arduino von der Zwischenzeit nicht sonderlich beeindruckt werden, da Das auf dem SIM-Teil spielt.
Klar: Wenn ich auf eine Antwort warte, Diese aber erst nach zig Sekunden kommt (das Modul ist halt nicht früher fertig) - dann habe ich tote Zeit.
Dann muß ich prüfen, ob die Daten, Die ich raus schicke auch so sind, wie das Modul Diese erwartet - denke Mal nicht, daß wir auch 'in das Modul rein gucken' können.

Leider keinen weiteren Lösungsweg für Dich

MfG

Ok, schade, dass keiner einen Lösungsvorschlag für mich hat.
Ich werde mich noch etwas damit beschäftigen, auch wenn ich kurz vorm verzweifeln bin.
Wenn ich etwas finden sollte poste ich es hier rein.

Aber Danke an alle die hier mitgewirkt haben.

Wie bist du denn auf die Pins 2 und 3 gekommen ?
Vermutlich steht das in der Library, da kannst du mal nachsehen.
Ich bin aktuell nicht am Rechner und kann da nicht reinschauen.

Wenn das auf dem Uno an Pin 2 und 3 funktioniert, sollte das auf dem Mega da auch funktionieren.
Somit fällt mir leider nichts mehr dazu ein.

HotSystems:
Wie bist du denn auf die Pins 2 und 3 gekommen ?
Vermutlich steht das in der Library, da kannst du mal nachsehen.

Von der Library habe ich mich gruselnd abgewendet.

Die mag gut sein, ist aber ein hart und trocken Brot

Auf Pin 2 und 3 bin ich nur gekommen weil im Programm im Kommentarbereich Circuit das GSM Shield gesehen habe. ich habe dann im Internet nach so einem Shield gesucht und habe dann bei einem Bild gesehen das dort Pin 2 und 3 fehlen. aulso habe ich das dann so zusammengesteckt und gehofft das es geht. Das hat es dann auch(beim UNO versteht sich). Auf einem weitern Bild war dann zu sehen dass das Shield auf einem Mega noch 2 Jumper Kabel zu Pin 18 und 19 hatte und so habe ich probiert und probiert und habe aber nichts zum laufen gebracht. Und combie du hast recht sie ist zwar hart und trocken, aber hat für mich zu viele Vorteile. Also aufgeben ist für mich in dem Punkt keine Option.

allzeittechniker:
Auf Pin 2 und 3 bin ich nur gekommen weil im Programm im Kommentarbereich Circuit das GSM Shield gesehen habe. ich habe dann im Internet nach so einem Shield gesucht und habe dann bei einem Bild gesehen das dort Pin 2 und 3 fehlen. aulso habe ich das dann so zusammengesteckt und gehofft das es geht. Das hat es dann auch(beim UNO versteht sich). Auf einem weitern Bild war dann zu sehen dass das Shield auf einem Mega noch 2 Jumper Kabel zu Pin 18 und 19 hatte und so habe ich probiert und probiert und habe aber nichts zum laufen gebracht. Und combie du hast recht sie ist zwar hart und trocken, aber hat für mich zu viele Vorteile. Also aufgeben ist für mich in dem Punkt keine Option.

Na dann sieh doch mal nach, wo die Pins definiert sind, die solltest du dann ändern.
Oder eben eine andere verwenden und Hardware Serial einsetzen. Ist auf dem Mega doch besser.

Hi

Erklärt aber nicht, wieso Pin2/3 auf dem Mega NICHT funktionieren, auf dem Uno aber sehr wohl.

Klar hat der Mega passende Hardware, Die dafür benutzt werden sollte - aber übergehen wir hier das Problem nicht etwas leichtfüßig?
Nur für's eigene Ego wäre wissenswert, was hier beim Mega anders läuft, als am Uno - damit man Das in Zukunft 'auf dem Schirm' hat.

MfG

Erklärt aber nicht, wieso Pin2/3 auf dem Mega NICHT funktionieren, auf dem Uno aber sehr wohl.

Weil Pin 2 und 3 auf dem Mega keinen Pin Change Interrupt können?

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

aus der SoftwareSerial Doku


Und sowieso ist die Library nicht für diesen GSM Chipsatz gedacht.
Wird also nur eingeschränkt funktionieren.

postmaster-ino:
Erklärt aber nicht, wieso Pin2/3 auf dem Mega NICHT funktionieren, auf dem Uno aber sehr wohl.

Die Erklärung könnte sein: SoftwareSerial funktioniert am Mega nicht auf allen Pins.
Siehe: https://www.arduino.cc/en/Reference/SoftwareSerial

The library has the following known limitations:
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Hi

Ok, dann hat das Kind einen Namen und wir können der Hardware auf den Zahn fühlen.
Danke euch Beiden.

MfG

Die Lösung wurde gefunden!

Ich glaub mein Schwein pfeift so extrem wie ich mich gerade freue, aber ich hab die Lösung.
Ich dachte mir vorher, dass ich jetzt mal das Oszilloskop auspacke und das Signal am Arduino UNO messe wenn das Sim Modul NICHT angeschlossen ist. Da habe ich dann herausgefunden, dass wenn er dann das initialisieren beginnt Pin 2 und 3 auf HIGH schaltet. Also bin ich dann zum Arduino Mega gegangen und hab dort mit dem Programm darauf alle Pins durchgemessen. es waren am Ende 6 Pins auf HIGH geschalten. Zum einen SDA und SDL Pins und zum anderen die Pins 3 und 10. Da ich mir ziemlich sicher bin, dass das Sim Modul über Seriell anspricht und nicht über I2C oder SPI habe ich mir gedacht das nur noch 2 Kombinationen überbleiben müssten, ansonsten gebe ich das Projekt auf. Ich habe dann beide Kombinationen mit Pin 3 und 10 durchprobiert und nach ca. 20 Sekunden war das GSM Modul initialisiert. Kann sich irgendwer ausmalen warum das genau Pin 3 und 10 sind?
Jedenfalls ich bin überglücklich, dass das jetzt funktioniert!
Ich sage noch einmal Danke an alle die sich darüber Gedanken gemacht haben und probiert haben mit mir das Problem zu lösen!

Ich kann mir nicht erklären warum das so ist. Ich habe das Programm nicht verändert sondern nur gemessen wo ein Signal am Mega anliegt. Das einzige was ich mir vorstellen kann, ist, dass in der Library etwas hinterlegt ist. Klar ist es interessant zu wissen warum genau die Pins verwendet werden, aber ich glaube nicht dass wir das erfahren werden.