Das GSM-Modul wird in vielen Kommunikationsgeräten verwendet, die auf der GSM-Technologie (Global System for Mobile Communications) basieren. Es wird verwendet, um über einen Computer mit dem GSM-Netz zu interagieren. Das GSM-Modul versteht nur AT-Befehle und kann entsprechend reagieren. Der grundlegendste Befehl ist "AT". Wenn GSM in Ordnung antwortet, funktioniert es gut, andernfalls antwortet es mit "ERROR". Es gibt verschiedene AT-Befehle wie ATA zum Beantworten eines Anrufs, ATD zum Wählen eines Anrufs, AT + CMGR zum Lesen der Nachricht, AT + CMGS zum Senden der SMS usw. Auf AT-Befehle sollte Wagenrücklauf folgen, dh \ r (0D in hex), wie "AT + CMGS \ r". Mit diesen Befehlen können wir das GSM-Modul verwenden.
GSM-Schnittstelle mit 8051
Anstatt einen PC zu verwenden, können wir Mikrocontroller verwenden, um mit dem GSM-Modul und dem LCD zu interagieren und die Antwort vom GSM-Modul zu erhalten. Also werden wir GSM mit einem 8051-Mikrocontroller (AT89S52) verbinden. Es ist sehr einfach, GSM mit 8051 zu verbinden. Wir müssen nur AT-Befehle vom Mikrocontroller senden und die Antwort von GSM empfangen und auf dem LCD anzeigen. Wir können die serielle Schnittstelle des Mikrocontrollers verwenden, um mit GSM zu kommunizieren, dh PIN 10 (RXD) und 11 (TXD) verwenden.
Zuerst müssen wir das LCD an den 8051 anschließen. Dies können Sie hier lernen: LCD-Schnittstelle mit dem 8051-Mikrocontroller. Dann müssen wir das GSM-Modul an 8051 anschließen, jetzt sollten wir hier etwas Aufmerksamkeit schenken. Zuerst müssen Sie überprüfen, ob Ihr GSM-Modul mit TTL-Logik oder nur mit RS232 arbeiten kann. Wenn Ihr Modul RX- und TX-Pins (mit GND-Pins) an Bord hat, kann es grundsätzlich mit TTL-Logik arbeiten. Und wenn es keine RX-, TX-Pins und nur einen RS232-Anschluss (serielle Schnittstelle mit 9) hat, müssen Sie den MAX232-IC verwenden, um die serielle Schnittstelle mit dem Mikrocontroller zu verbinden. Grundsätzlich MAX232Wird zum Konvertieren serieller Daten in TTL-Logik verwendet, da der Mikrocontroller nur mit TTL-Logik arbeiten kann. Wenn das GSM-Modul jedoch über RX- und TX-Pins verfügt, müssen Sie weder MAX232 noch einen seriellen Konverter verwenden. Sie können RX von GSM direkt mit TX (PIN 11) von 8051 und TX von GSM mit RX (PIN 10) von 8051 verbinden In unserem Fall habe ich das SIM900A-Modul verwendet und es verfügt über RX- und TX-Pins, sodass ich MAX232 nicht verwendet habe.
Das Schaltbild für die GSM-Schnittstelle mit dem AT89S52-Mikrocontroller ist in der obigen Abbildung dargestellt. Nach der Verbindung müssen wir nur noch ein Programm schreiben, um AT-Befehle an GSM zu senden und die Antwort auf dem LCD zu empfangen. Es gibt viele AT-Befehle, wie oben beschrieben, aber unser Umfang in diesem Artikel besteht nur darin, GSM mit 8051 zu verbinden. Daher senden wir nur den Befehl "AT", gefolgt von "\ r" (0D in hex). Dies gibt uns eine Antwort "OK". Sie können dieses Programm jedoch erweitern, um alle Einrichtungen von GSM zu nutzen.
Code-Erklärung
Neben allen LCD-bezogenen Funktionen haben wir hier die serielle Schnittstelle und das Timer-Modus-Register (TMOD) verwendet. Weitere Informationen zu LCD-Funktionen und anderem Code finden Sie in unserem Abschnitt zu 8051-Projekten. Hier erkläre ich die Codefunktionen für die serielle Kommunikation:
GSM_init () Funktion:
Mit dieser Funktion wird die Baudrate für den Mikrocontroller eingestellt. Die Baudrate ist nichts anderes als die gesendeten oder empfangenen Bits / Sekunde. Und wir müssen die Baudrate von 8051 an die Baudrate des GSM-Moduls anpassen, dh 9600. Wir haben den Timer 1 in Modus 2 (8-Bit-Auto-Reload-Modus) verwendet, indem wir das TMOD-Register auf 0X20 und das höhere Byte von Timer 1 gesetzt haben (TH1) auf 0XFD, um die Baudrate von 9600 zu erhalten. Auch das SCON-Register wird verwendet, um den Modus der seriellen Kommunikation einzustellen. Wir haben Mode1 (8-Bit-UART) mit aktiviertem Empfang verwendet.
GSM_write Funktion:
SBUF (Serial Buffer Special Function Register) wird für die serielle Kommunikation verwendet. Wenn wir ein Byte an ein serielles Gerät senden möchten, legen wir dieses Byte in das SBUF-Register. Wenn das vollständige Byte gesendet wurde, wird das TI-Bit von der Hardware gesetzt. Wir müssen es zurücksetzen, um das nächste Byte zu senden. Es ist ein Flag, das anzeigt, dass das Byte erfolgreich gesendet wurde. TI ist das zweite Bit des SCON-Registers. Wir haben mit dieser Funktion "AT" gesendet.
GSM_read-Funktion:
Wie beim Senden müssen wir jedes Byte nur dann lesen, wenn wir es von einem externen Gerät empfangen, das in das SBUF-Register aufgenommen wurde. Und wann immer das gesamte Byte empfangen wurde, wird das RI-Bit von der Hardware gesetzt. Wir müssen es zurücksetzen, um das nächste Byte zu empfangen. RI ist das erste Bit des SCON-Registers. Wir haben die Antwort "OK" mit dieser Funktion gelesen.