GSM-Modul SIM800L (Teil 1)

Hier werden einzelne Projekte mit MicroPython vorgestellt
Antworten
Heinrichs
Beiträge: 194
Registriert: Do 21. Okt 2010, 18:31

GSM-Modul SIM800L (Teil 1)

Beitrag von Heinrichs » Mi 21. Mai 2025, 11:12

Schon für weniger als 5 € kann man inzwischen GSM/GPRS-Module (inkl. Porto) erwerben. Die Preise variieren allerdings sehr stark je nach benutztem IC und den zusätzlichen Komponenten auf dem Modul. Ich habe mich für eine spartanische Version entschieden (vgl. Abb. 1). Im Wesentlichen sind hier nur die wichtigsten I/O-Anschlüsse des SIM800L-Bausteins herausgeführt; daneben gibt es einen Anschluss für eine Antenne sowie eine Kontroll-LED (dazu später mehr). Die Antenne war übrigens bei meinem Modul mit im Preis inbegriffen.

Abb_1.jpg
Abb. 1
Abb_1.jpg (97.67 KiB) 221 mal betrachtet

Achtung: Die Versorgungsspannung des SIM800L darf 4,4 V nicht überschreiten; vorgesehen sind 3,4 V - 4,4 V. Ansonsten kann der Baustein zerstört werden. Die Signalpegel dürfen aber auch 5 V betragen.

In diesem und weiteren Beiträgen werden wir ausführlich darlegen, wie man über das SIM800L-Modul eine SMS senden oder empfangen kann; damit kann z. B. mittels eines Mikrocontrollers (z. B. dem TTGO) eine Meldung an ein Handy gesendet werden, wenn ein Sensor ein entsprechendes Signal liefert. Abschließend zeigen wir auch, wie man mit dem SIM800L telefonieren kann.

Für erste Erfahrungen schließen wir das SIM800L-Modul an einen USB-COM-Wandler FTDI232RL an:
FTDI232SIM800L
3,3 V über USB (Jumper setzen)
GND (über USB)GND, auch mit Minus-Pol des Netzgeräts (s.u) verbinden
RXDTXD
TXDRXD
VCC → Plus-Pol eines externen Netzgeräts (4,0 V)
Da der SIM800L im Extremfall bis zu 2A Strom benötigt, reicht der Strom, den der FTDI232-Baustein zur Verfügung stellen kann, in der Regel nicht aus. Wir benutzen hier ein gutes geregeltes Netzgerät; alternativ kann auch ein entsprechender Akku eingesetzt werden.


1 Einführung

Bevor es losgeht, müssen wir noch unsere Mikro-SIM-Karte in die entsprechende Halterung auf der Rückseite des SIM800L hineinschieben. Achtung: Die Kontakte der SIM-Karte müssen dabei nach unten weisen und die Aussparung der SIM-Karte (roter Pfeil) muss beim Einschieben auf Südosten liegen (vgl. Abb. 2).

Abb_2.jpg
Abb. 2
Abb_2.jpg (48.94 KiB) 212 mal betrachtet


Wenige Sekunden nachdem das Modul mit Strom versorgt worden ist, fängt die Kontroll-LED (s. Pfeil in Abb. 1) an zu blinken (800 ms Blinkrhythmus).

Das SIM800L-Modul wird über sogenannte AT-Commands, wie sie manchen vielleicht noch von den Modems bekannt sind, gesteuert und kontrolliert. Diese werden nach dem UART-Standard übertragen. Über diese können die Kommandos und die Antworten des SIM800L übermittelt werden. Dazu setzen wir hier das (frei erhältliche) Terminal-Programm HTerm ein. Nach dem Start dieses Programms geben wir zunächst als Baudrate den Wert 56000 ein; dann wählen wir die vom FTDI-Baustein benutzte COM-Nummer. Anschließend aktivieren wir die Verbindung mit dem Connect-Button.

Übrigens können auch andere Baudraten benutzt werden: Der SIM800L-Baustein erkennt die benutzte Baudrate nämlich automatisch. Manchmal gelingt das bei dem allerersten Befehl noch nicht korrekt; geben Sie dann das Kommando noch ein weiteres mal ein.

Für die Ausgabe der von Hterm empfangenen Daten (received data) stellen wir ein: ASCII aktivieren (Häkchen) und “Newline at LF”. Alle Kommandos werden im Input-Control-Bereich (am unteren Rand des Formulars) eingegeben. Passende Einstellungen sind: Häkchen bei ASCII und “CR” bei “Send on enter”.

Als ersten Test geben wir nun das Kommando AT (“Attention”) in der Eingabe-Zeile ein und schließen die Eingabe mit der Enter-Taste. Dadurch wird die Zeichenkette AT\r an das SIM800L-Modul übertragen; das Steuerzeichen \r steht hier für CR. Das Modul antwortet immer mit einem Echo (in diesem Fall AT\r, gefolgt von den Steuerzeichen \r\n (\r für CR und \n für LF bzw. New Line) und - wenn alles in Ordnung ist - mit einem OK\r\n).

Mit dem Kommando AT+CPIN=”xxxx” loggen wir uns ins GSM-Netz ein; statt xxxx geben Sie natürlich die PIN Ihres Handys ein. Das SIM800L-Modul gibt zunächst das Echo des eingegebenen Kommandos aus; nach kurzer Pause sendet es dann folgende Zeilen:

Code: Alles auswählen

+CPIN: READY 		
Call Ready
SMS Ready

Damit ist unser SIM800L-Modul ins GSM-Netz eingeloggt. Dies können wir mit dem Kommando AT+CREG? überprüfen: Die Zahl 1 in der Antwort

Code: Alles auswählen

+CREG: 0,1
zeigt an, dass das Modul eingeloggt ist. Mit dem Kommando AT+COPS? können wir auch den Namen unseres GSM-Netzes anzeigen lassen.

Wenn das Modul eingeloggt ist, wird dies auch durch die Kontroll-LED angezeigt: Diese blinkt nun mit einer Periodendauer von etwa 3s.


2 Versenden einer SMS mit HTerm

Der folgende Screenshot zeigt, wie man eine SMS versenden kann; dabei wurden die PIN und die Telefonnummer des Adressaten unkenntlich gemacht.

Abb_3.jpg
Abb. 3
Abb_3.jpg (73.57 KiB) 210 mal betrachtet

Das Einloggen erfolgt wieder wie oben bereits beschrieben. Mit dem Kommando AT+CMGF=1 wird jetzt das SMS-Format festgelegt:

Select SMS Message Format
Für eine SMS stehen zwei verschieden Formate zur Verfügung: Text-Mode (CMGF=1) und PDU-Mode (CMGF=0). Während der Text-Mode für (reine) Texte benutzt wird, können im PDU-Mode auch binäre Daten, z. B. komprimierte Daten, versendet werden.


Das folgende Kommando AT+CSMP=17,167,0,0 legt einige Parameter für das Text-Format fest:

Set SMS Text Mode Parameters
Bis zu 4 Parameter vom Type Byte können hier gesetzt werden. Dabei kann die Bedeutung einzelner Bits manchmal auch davon abhängen, wie die anderen Bits gesetzt sind. Hier sollen nur die für uns entscheidenden Bits erläutert werden:

1. Parameter (fo)
fo.0=0 und fo.1=0 bedeutet SMS-DELIVER (Versand von Basis-Station an Handy); fo.0=1 und fo.1=0 bedeutet SMS-SUBMIT (Versand von Handy an Basis-Station).
Fo.3=0 und fo.4=1 aktiviert eine Validitätsperiode, wenn ein vp-Wert vorliegt, s. u.

2. Parameter (vp)
Unser Wert von 167 bedeutet eine Periode von 24 Stunden; für diesen Zeitraum wird die SMS zwischengespeichert, wenn der Adressat nicht erreichbar ist. Danach verfällt die SMS.


Mit dem Kommando AT+CMGS=”xxxxxxxxxxx” wird die Telefonnummer des Handys festgelegt, an das die SMS gesendet werden soll. Es erscheint dann in der nächsten Zeile das Eingabe-Prompt>”. Unsere Nachricht (ohne Sonderzeichen wie Ä, Ö, ß, ...) wird nicht mit CR, sondern mit Ctrl-Z abgeschlossen. Deswegen wählen wir jetzt bei Set on enter zunächst die Option None und senden anschließend unseren Text, z. B. Hallo... von SIM800L (ohne Anführungszeichen!). Um jetzt noch das abschließende Steuerzeichen Ctrl-Z zu senden, wählen wir für Type die Option DEC und senden die Zahl 26.

Kurze Zeit später erhalten wir auf unserem Handy die folgende Nachricht:

Abb_4.jpg
Abb. 4
Abb_4.jpg (16.21 KiB) 208 mal betrachtet

In den weiteren Beiträgen werden folgende Themen behandelt:


Wer jetzt schon diese Beiträge lesen möchte, findet sie in dem Skript SIM800L_TTGO.pdf (s. Anhang!).

.
Dateianhänge
SIM800L_TTGO.pdf
(2.96 MiB) 7-mal heruntergeladen

Antworten