SerialGSM für GSM-Abschirmung ohne SoftwareSerial

7

SerialGSM ist eine Bibliothek zur Vereinfachung von GSM-Abschirmungen.

Dies ist ein Beispielcode zum Senden von SMS:

#include <SerialGSM.h>
#include <SoftwareSerial.h>
SerialGSM cell(2,3);
void setup(){
 Serial.begin(9600);
 cell.begin(9600);
  cell.Verbose(true);
  cell.Boot();
  cell.FwdSMS2Serial();
  cell.Rcpt("+972123456789");
  cell.Message("hello world");
  cell.SendSMS();
}


void loop(){
  if (cell.ReceiveSMS()){
    Serial.println(cell.Message());
    cell.DeleteAllSMS();
  }

}

Wie Sie sehen können, verwendet er serielle Software.

Ich beabsichtige, dies für meine Schularbeit zu verwenden, aber ich verwende einen Schild, sodass ich Software Serial nicht verwenden werde.

Was mich stört, ist diese Linie

SerialGSM cell(2,3);

Deklariere ich es in meinem Fall so?:

SerialGSM cell(0,1); 

Oder wird es Konflikte mit Serien geben?

BEARBEITEN: Mit anderen Worten, wie deklariere ich das SeralGSM-Objekt mit Hardware-Seriennummer und nicht mit Software-Seriennummer?

user1584421
quelle

Antworten:

5

SerialGSMwurde für die Arbeit mit serieller Software entwickelt, wie Sie der Klassendeklaration im SerialGSM.hHeader entnehmen können:

class SerialGSM : public SoftwareSerial {
...
};

Leider ist es komplizierter, es auf Hardware-Serien zu ändern, als es aussieht. Es gibt zwei Möglichkeiten, wie Sie vorgehen können:

  1. Ableiten von HardwareSerialstatt SoftwareSerial. Dies würde Ihnen Flexibilität geben, aber Sie müssten dafür sorgen, dass alle richtigen Daten an den HardwareSerialKonstruktor übergeben werden, was ziemlich chaotisch ist.

  2. Leiten Sie von nichts ab. Verwenden Sie das globale SerialObjekt und ersetzen Sie alle seriellen Funktionsaufrufe manuell durch ihre Serial.xxx()Entsprechungen. Dies ist wahrscheinlich einfacher, beschränkt Sie jedoch auf eine bestimmte serielle Schnittstelle.

Beide Ansätze beinhalten ziemlich viel Codierung, daher sind sie keine trivialen Aufgaben. Es ist auch wichtig zu beachten, dass SerialGSMderzeit das globale SerialObjekt zum Ausgeben von Debug-Informationen verwendet wird. Sie müssten dies entfernen oder ändern, bevor Sie in eine serielle Hardware konvertieren, da dies sonst zu Störungen führen kann.

Peter Bloomfield
quelle
Vielen Dank! Ok, wenn das der Fall ist, kann ich es im Software Serial Modus verwenden. Jetzt habe ich ein GPS-Gerät, das ich auch verwenden möchte. Das heißt, schließen Sie das Shield an und verwenden Sie die SerailGSM-Bibliothek sowie das GPS an den Ports 0 (und 1, wenn das GPS Daten empfangen soll) und verwenden Sie Serial.begin (4800). um den seriellen Empfang zu starten?
user1584421
Das sollte funktionieren, obwohl man bedenkt, dass SerialGSMDebug-Informationen an die serielle Hardware ausgegeben werden. Das heißt, wenn Sie die Hardware TX an Ihr GPS anschließen, wird es wahrscheinlich schief gehen.
Peter Bloomfield
OK, ein anderer Ansatz wäre dann, ein Arduinos-fähiges Beispiel für das Senden von SMS zu verwenden. Die Sache ist, ich habe dieses Schild sparkfun.com/products/9607 , mit dem SM5100B-Chipsatz. Wissen Sie, ob das Arduinos-Beispiel für das Versenden von SMS mit diesem Schild funktioniert?
user1584421
Ich habe diesen Schild noch nie benutzt, also fürchte ich, ich weiß es nicht. Es sieht so aus, als hätte SparkFun einen eigenen Beispielcode dafür: github.com/sparkfun/SM5100B_Cellular_Shield/blob/master/…
Peter Bloomfield
2

Egal, ich habe mich für das GSM-SMS-Beispiel von Arduino 1.0.5 entschieden (kenne die Version der Arduino-IDE, die dies enthält, nicht) und funktioniert einwandfrei.

Wenn Sie die SerialGSM-Bibliothek verwenden möchten, ist dies nicht erforderlich!

VORSICHT: Wenn Sie in der Arduino-Bibliothek die Telefonnummer angeben, müssen Sie das internationale Format verwenden

(Danke Bloomfield für die Informationen, die Sie in der vorherigen Antwort angegeben haben)

user1584421
quelle