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:
FTDI232 | SIM800L |
3,3 V über USB (Jumper setzen) | |
GND (über USB) | GND, auch mit Minus-Pol des Netzgeräts (s.u) verbinden |
RXD | TXD |
TXD | RXD |
VCC → Plus-Pol eines externen Netzgeräts (4,0 V) |
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).
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
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.
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:
In den weiteren Beiträgen werden folgende Themen behandelt:
- TTGO sendet eine SMS mit SIM800L
- TTGO sendet eine Alarm-SMS mit SIM800L
- SMS empfangen
- Telefonieren mit dem SIM800L
Wer jetzt schon diese Beiträge lesen möchte, findet sie in dem Skript SIM800L_TTGO.pdf (s. Anhang!).
.