Aus dem Beispielcode
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Was ist der Unterschied zwischen, warum zwei Arten von Anrufen verwenden, um AT-Befehlsaufrufe zu tätigen.
SoftwareSerial mySerial (10,11) mySerial.begin (10,11)
und
Serial.begin (9600)
Bearbeiten, dies beantwortet meine Frage in meinen eigenen Worten basierend auf der Antwort von @jfpoilpret.
- Es ist wichtig, sowohl Serial als auch SoftwareSerial zu initialisieren , da SoftwareSerial zum Senden der eigentlichen Befehle an das GSM verwendet wird und Serial für
view
alle Befehle und deren Antworten am Debug-Port des GSM verwendet wird - Die Pins am GSM und am Arduino werden verwendet, um die 2 zu verbinden und die tatsächlichen Befehle weiterzuleiten . Während der RS232 nur zum Debuggen verwendet wird. Wir können jedoch einen RS232 an einen USB-Anschluss anschließen, um das GSM an den Desktop (oder Laptop) anzuschließen.
- Der Code in der Schleife ist wichtig, um alle tatsächlichen Befehle in den RS232-Debugging-Port umzuwandeln und umgekehrt, damit wir ein Tool wie
cutecom
(auf Ubuntu) verwenden können, um Befehle an die seriellen GSM-Eingangsstifte zu übergeben.
Wichtiger Hinweis: Stellen Sie bei Verwendung von cutecom sicher, dass Sie das CR-Zeilenende auswählen , um Befehle zu senden.
Im obigen Code innerhalb der Schleifenfunktion ist die erste
if
Anweisung erforderlich, um vom seriellen Monitor aus mit dem GMS-Modul zu kommunizieren. Wenn Sie beispielsweiseAT
den Monitor eingeben und die Eingabetaste drücken, wird Ihr Befehl an das GSM-Modul gesendet.Die zweite if-Anweisung
else if
besteht darin, alles zu drucken, was vom GSM-Modul empfangen oder beantwortet wurde, z. B. antwortet das GSM-Modul auf den empfangenen Befehl wieAT
und dessen Ergebnis,OK
nachdem Sie den BefehlAT
an das Modul gesendet haben.quelle