Mit dem SIM800L-Modul ins Mobilfunknetz gehen
Schon vor einiger Zeit habe ich mir ein SIM800L GSM/GPRS Modul gekauft, als ich zufälligerweise darüber bei einem chinesischen Versender stolperte. Es war nicht teuer, das Thema sehr interessant, also habe ich es damals mitbestellt.Seitdem fristete das Modul ein dunkles Dasein in einem kargen Karton, mit Edding beschriftet mit "Neuzugänge", darauf wartend, irgendwann an die Reihe zu kommen und ausprobiert zu werden. Und heute soll es soweit sein. Das Modul wurde aus seinem Kerkerdasein befreit, hat das Licht des Tages erblickt und darf endlich zum Leben erwachen.
Aber genug der blumigen Umschreibungen, zu den harten Fakten.
Das SIM800L-Modul - die Features
Die SIM800L-Platine ist eine nur 25 x 23.5 mm kleines Platine mit aufgelötetem Modul von SIMCom, um den Mobilfunkstandards gerecht zu werden und im Mobilfunknetz zu funken. Oder kurz und vereinfacht gesagt: Das Modul kann so viel ein kleines, altes Handy vor der Smartphone-Zeit. Mit ihm kann man Sprache und Daten übermitteln wie Anrufe, SMS oder GPRS-Internet.Die Features-Liste liest sich wie folgt:
- kann nur im 2G Netzwerk kommunizieren (kein UMTS, kein LTE, kein 5G)
- beherrscht Quad-Band mit 850/900/1800/1900MHz (GSM850MHz, EGSM900MHz, DCS1800MHz and PCS1900MHz)
- GPRS-Multi-Slot-Class12-Konnektivität mit einer maximalen Geschwindigkeit von 85.6kbps (Download / Upload); Schemes CS-1, CS-2, CS-3 and CS-4
- unterstützt 3GPP TS 27.007, 27.005 und SIMCOM erweiterte AT-Befehle
- unterstützt CSD und SMS (Speicherort: 10 auf SIM-Karte oder 50 im internen Speicher)
- Versorgungsspannung des Moduls liegt bei 3.4V bis 4.4V
- unterstützt SIM-Karten mit 1.8V und 3V
- verbraucht nur 1mA im Sleep-Mode
- verwendet eine serielle Schnittstelle (1200 ... 115200 bps)
- Sendeleistung 2W in GSM 850 and EGSM 900 (D-Netz) bzw. 1W in DCS 1800 and PCS 1900 (E-Netz)
- Temperaturbereich in Betrieb: -40°C bis +85°C
Das SIM800L-Modul - die Hardware
Auf der Vorderseite des Modules ist die eigentliche integrierte Schaltung in einem kleinen Blechkästchen, ein paar passive Bauteile und eine LED. Auf der Rückseite befindet sich nur der SIM-Karten-Slot und die Beschriftungen für die Header.
Mit der Rückseite nach oben sind die Header wie folgt beschriftet (von oben nach unten):
- links
- RING: signalisiert einen eingehenden Anruf (geht dann 120ms lang auf LOW)
- DTR: Data Terminal Ready (HIGH = serielle Kommunikation wird pausiert)
- MICP: Mikrofon Plus
- MICN: Mikrofon Minus
- SPKP: Lautsprecher Plus
- SPKN: Lautsprecher Minus
- rechts
- NET: Antennenlötanschluss
- VCC: Versorgungsspannung 3.4...4.4V, z. B. über Li-Ion-Akku
- RST: Reset, Modul wir bei LOW (min. 100 ms) zurückgesetzt
- RXD: Receive (empfangen) ser. Schnittstelle
- TXD: Transmit (senden) ser. Schnittstelle
- GND: Ground (Masse)
Mit dem Antennen-Pin ist auch der kleine über die Vorderseite zugängliche Antennen-Anschluss verbunden, in den man eine externe Antenne stecken kann. Ich habe man eine einfache externe, auf einer Platine aufgebrachte mitbestellt und werde diese verwenden, weil ich mir davon einen besseren Empfang verspreche.
Voraussetzungen
Wie wir in den Specs lesen können, kann das SIM800L-Modul nur im 2G-Netz kommunizieren. Das ist das alte Handynetzwerk zu Zeiten, als Nokia noch Marktführer bei Handys war und Smartphones noch nicht erfunden war.Stellt sich die grundlegende Frage zur Zeiten, wo 5G in aller Munde ist, ob das seit 20 Jahren existierende 2G-Netz in Deutschland überhaupt noch aktiv ist. Die Antwort lautet: Ja, es ist. Und es soll es wohl noch eine Weile bleiben. Während die Schweizer Swisscom sich 2021 von 2G verabschiedet hat, wollen die deutschen Netzbetreiber weiterhin am 2G-Netz festhalten (1).
Und das finde ich auch gut so. GSM und 2G stellt eine solide Grundversorgung dar und ist auf Empfangbarkeit und nicht auf Geschwindigkeit getrimmt. So hat man auch im Wald noch Empfang, wo es kein LTE oder 5G gibt. Das ist ein klein wenig so wie beim Radio: das gute alte UKW (oder sogar Mittelwelle und Langwelle) kann man mit einfachen elektronischen Schaltungen empfangen. Der Empfang mag nicht so glasklar sein wie bei dem neuen digitalen Radio DAB, aber dafür hat man im Notfall wenigstens einen, wenn vielleicht auch verrauscht. Bei DAB hört man unter schlechten Bedingungen gar nichts mehr.
2G funktioniert die nächsten Zeit also noch. Um das Mobilfunknetz zu nutzen, braucht man aber natürlich noch eine SIM-Karte. Ich habe mir zu dem Zweck eine extra Prepaid-Karte besorgt. Nur für den Fall, das etwas schiefgeht. Da möchte ich im Zweifelsfall nicht meine richtige SIM-Karte braten.
Warum ich Prepaid gewählt habe, liegt auf der Hand: man stelle sich einen Programmier-Fehler vor, der eine Endlosschleife erzeugt und aus Versehen zig tausend mal die gleiche SM verschickt. Das wird mit Vertrag teuer. Bei Prepaid sind dann eben einfach nach ein paar SMs versendet, und das Guthaben auf der Karte leer und stoppt den Faux-pas.
Für den Betrieb brauchen wir noch eine serielle Schnittstelle und eine Stromversorgung von 3.4V bis 4.4V.
Für die serielle Schnittstellt können wir das Teil mit einem FTDI-Adapter am PC anschließen oder auch am Raspi, so wie ich das in meinem Artikel Den Raspi mit 3.5 Zoll RPi Display TFT Touchscreen als Serial Monitor verwenden gemacht und beschrieben habe.
Den FTDI-Adapter kann ich auf 3.3V oder 5V einstellen. Dummerweise beides außerhalb der geforderten 3.4V bis 4.4V; die hören sich eher nach Lithium-Ionen-Akku (ca. 2.7V wenn leer bis 4.2 V wenn voll geladen) an.
Erster Test mit nur 3.3V
Da es so schön bequem wäre, und 3.3V schon nah an den geforderten 3.4V dran ist, will ich aber mal einen Versuch starten und jumpere den FTDI-Adapter auf 3.3V und schließe das SIM800L-Modul an. Wenn ich davon ausgehe, dass mein USB-Port 1A kann, wären das bei 3.3 Volt 3.3 Watt, also mehr als die schätzungsweise angenommenen 2.2 Watt im D-Netz oder 1.2 Watt im E-Netz.Da meine SIM-Karte von O2 und damit im E-Netz ist, sollte die maximale Sendeleitung 1W sein, was bei 3.3V ca 300 mA ausmacht. Dazu vielleicht noch 100 bis 200 mA für die Rechenleistung des Moduls, macht zusammen weniger als 500 mA, so dass ich hier auf jeden Fall genug Strom aus meinem USB-Port am PC bekommen werde. Ist nur die Frage, ob sich das SIM800L-Modul mit nur 3.3V zufrieden gibt.
Machen wir die Probe auf Exempel. Was soll schon schiefgehen? 5V, also zuviel Spannung auf dem FTDI-Adapter zu jumpern würde ich mich nicht trauen, aber 0.1V zu wenig. Ich denke, außer nicht zu funktionieren oder nicht richtig zu funktionieren kann da nicht viel passieren.
Leider stellt sich heraus, dass die 3.3V vom FTDI-Adapter dann doch zu wenig sind. Es tut sich nichts.
Also schließe ich das SIM800L-Modul an mein Labornetzteil an und schaue, ab welcher Spannung es reagiert. Ergebnis: Ab 3.4V, eher 3.5V erwacht es zu Leben und die LED fängt an zu blinken. So richtig stabil scheint es aber erst ab so 3.7V zu werden.
Die einfache Lösung fällt also flach.
Außerdem stolpere ich noch über folgenden Absatz im Hardware-Datasheet zum SIM800L (dem Modul im Blechgehäuse, nicht dem ganzen Modul mit den Lötanschlüssen):
The power supply range of SIM800L is from 3.4V to 4.4V. Recommended voltage is 4.0V. The transmitting burst will cause voltage drop and the power supply must be able to provide sufficient current up to 2A. For the VBAT input, a bypass capacitor (low ESR) such as a 100 µF is strongly recommended.Der Kondensator ist wohl bereits auf der Platine. Das fette Teil mit der Aufschrift 107A ist ein 100 µF 10V SMD Tantal Kondensator.
Desweiteren finde ich den Hinweis im Datenblatt, dass der serielle Port (also RXD und TXD) eigentlich nur maximal 2.8V haben möchten. Ich schätze mal, 3.3V vom FTDI-Adapter wird das Modul nicht gleich killen, aber 5V am FTDI Adapter scheidet damit komplett aus. Und das wäre ja auch für die Versorgungsspannung des Moduls zu viel.
Lösung mit einem 18650 Li-Ion-Akku
Also brauchen wir eine eigene Spannungsversorgung mit am besten um die 4 Volt, die auch Spannungsspitzen von 2 Ampere standhalten kann. Die 4V gehen dann nur an das Sim800L-Modul, nicht an den FTDI-Adapter. Nichtsdestotrotz brauchen wir ein Common Ground, also eine gemeinsame Masse, damit die seriellen Kommunikation klappt.Zuerst habe ich natürlich mein Labornetzteil angeschlossen, ganz einfach, weil ich da die Spannung einstellen kann, den Stromverbrauch leicht ablesen und weil es 3A und mehr lieferen kann. Außerdem ist es einfach eine zuverlässige Stromquelle, bei der ich auch den maximalen Strom begrenzen kann.
Als das geklappt hat, habe ich das Ganze auf einen Lithium-Ionen-Akku umgestellt. Der Einfachheit halber mit einem 18650-Akku und entsprechendem Batteriehalter. Wieder der Einfachheit halber habe ich das Ganze mit Wago-Klemmen verbunden. Damit kann ich den Stromkreis schnell unterbrechen und wiederherstellen. Ein Aufbau auf einem Breadboard hätte es natürlich auch getan, aber so ist halt noch bequemer.
Natürlich müsste man eigentlich noch eine Schutzschaltung einbauen, um den Akku nicht tiefzuentladen. Wie das und mehr geht, könnt ihr in meinem Artikel Wissen rund um Schaltungen und Module für 18650 Li-Ion-Akkus nachlesen.
Nur soviel: Ein 18650-Akku liefert komplett voll geladen 4.2V und liefert dann verlässlich Strom, wobei mit sinkender Ladung auch die Spannung sinkt. So etwa bei 2.7 Volt sollte man den Akku nicht weiter entladen, weil er sonst Schaden nehmen kann. Da bei unserem Anwendungsfall aber schon bei 3.4V Schluss ist und das SIM-Modul nicht mehr funktioniert, reicht es, darauf zu achten, wenn die LED des Moduls nicht mehr leuchtet und dann den Akku in einem Ladegerät wieder zu laden.
Die Verdrahtung der dann funktionierenden Schaltung sieht wie folgt aus:
18650-Akku WAGO-Plus WAGO-Minus FTDI-Adapter SIM-800L-Modul Kabelfarbe Bedeutung
Pluspol Plus VCC rot 4V
Minuspol Minus GND GND schwarz Common Ground
RX TX grün ser. Kommunikation
TX RX gelb ser. Kommunikation
SIM-Karte rein und los
Jetzt fehlt nur noch die SIM-Karte, damit das Modul auch Verbindung mit der Außenwelt aufnehmen kann. Dazu muss man für das Modul die Größe "Micro-SIM" herausbrechen, das ist in etwa die Größe einer Micro-SD-Karte. Oder anders gesagt: die beiden inneren Segmente müssen zusammenhängend bleiben.
Danach wir die SIM ein wenig seltsam in den SIM-Slot auf der Rückseite des SIM800L-Moduls eingeschoben, und zwar so, wie auf dem Foto gezeigt: rechtsbündig mit den blanken Kontaktflächen zur Platine hin und mit dem abgeschnittenen Eck nach oben links. Das kann sich allerdings gegebenenfalls in einer neuen Version auch ändern. Wichtig ist, dass die Mitten der blanken Kontaktflächen auf den kleinen Nippeln im Halter zum liegen kommen, denn da wird der Kontakt hergestellt.
Die Antenne eingesteckt (bzw. angelötet), den Akku verbunden, den FTDI-Adapter in einen USB-Port des PC gesteckt und wir sind hardwaretechnisch bereit. Das zeigt sich auch dadurch, das die LED auf dem SIM-Modul ca. 1 mal in der Sekunde aufblitzt.
Willkommen in der Welt der AT-Befehle
Softwareseitig brauchen wir noch ein Terminalprogramm. Das kann so etwas rudimentäres wie PuTTY sein, oder ein Terminalprogramm wie etwa Tera Term oder HTerm, je nachdem, was einem eher gefällt.Im Terminalprogramm stellen wir den COM-Port ein, den uns der FTDI-Adapter bescherrt und erst einmal zur Sicherheit eine eher geringe Übertragungsrate von 9600 bps. Damit können wir später noch hochgehen, wenn wir sicher sind, dass alles klappt. Die Kommunikationsparameter sind die üblichen: 8-N-1.
Um das Modem zu steuern, gibt es sogenannte AT-Commands. "AT" steht für "Attention" und sagt dem angeschlossenen Gerät in etwa "Achtung, jetzt kommt ein Befehl". Als ehemaliger Sysop und Mailbox-Betreiber, der versucht hat, Anfang der Neunziger das letzte bisschen Geschwindigkeit aus seinem 14.4 HST-Modem von USRobotics herauszuholen, kenne ich mich mit dem Konzept natürlich bestens aus.
Und das SIM800L-Modul wird gar nicht anders angesprochen als ein Modem. Es gibt eine normale Datenübertragung (Texte, Dateien), aus der man mit einer bestimmte Escape-Sequenz herausbrechen kann (damals beim Modem war das dreimal hintereinander das +-Zeichen, wenn ich mich recht erinnere), um dann Konfigurationsbefehle abzusetzen.
Die Befehle beginnen immer mit einem "AT". Beim Einschalten eines Modems befindet es sich bereits im Befehlsmodus. Dann wird gewöhnlich mit "ATD..." eine Nummer gewählt, die Gegenseite nimmt ab und nach ein wenig fröhlichem Herumgepiepe und Gefiepse steht die Verbindung ("Carrier detect") und das Modem schaltet automatisch in den Datenmodus. Genauso auch das SIM800L-Modul.
Geben wir im Terminalprogramm einfach mal "AT" ein, Groß/Kleinschreibung ist damit normalerweise egal. Es sollte erscheinen:
at
OK
Nachdem dieser erste Befehl durch ist, werden alle Zeichen, die wir nachfolgend eingeben, von der Gegenseite wieder zurückgesendet und dann bei uns im Terminalfenster doppelt dargestellt, das das lokale Echo ja noch an ist. Jetzt können wir das "lokale Echo" in den Einstellungen des Terminalprogramms ausschalten oder aber wir sagen dem Modul, dass es mit dem Papagei-Nachplapper-Modus aufhören darf. Der entsprechende Befehl heißt ATE0 und heißt soviel wie "Stell dein Echo aus"
aattee00 (eingegeben: ate0)
OK
Als nächste geben wir "ATI" ein, um eine Info über das Modul zu erhalten:
ati
SIM800 R14.18
OK
Werfen wir doch einmal einen Blick in das zweite Datasheet namens "SIM800 Series AT Command Manual", was auf 381 Seiten alle möglichen AT-Befehle aufführt. Das nenne ich mal eine Menge. Je nachdem, was wir machen wollen, sind andere Befehle interessant.
Wollen wir nur eine SMS empfangen oder versenden? Oder einen Anruf tätigen? Einen entgegennehmen? Ins Internet gehen und eine Datei übertragen?
Bis Anfang 2023 hätte man auch noch ein Fax verschicken können oder leitungsvermittelt ins Internet gehen können (GSM/CSD mit 9600 bps). Diese Dienste sind inzwischen überall in den deutschen Netzten abgeschaltet (2,3). Da das SIM800L-Modul nur 2G (also CSD und GPRS) kann, fällt Fax leider flach, Internet geht nur noch über GPRS. SMS und Telefonie gehen aber noch in den heutigen Netzen.
Als diese Funktionen werden mit AT-Befehlen gesteuert.
Es liegt auf der Hand, dass es zu weit ginge, hier alle AT-Befehle erklären zu wollen, darum picke ich nur mal die interessantesten heraus und welche für den Anwendungsfall SMS versenden, der wahrscheinlich am häufigsten vorkommt. Eine SMS zu versenden dürfte im Gegensatz zu einem Fax auch einfach zu machen sein.
Allgemeine AT-Befehle (ohne Netzwerk-Login / PIN)
Eine weitere Info können wir doch noch aus dem Modul herauskitzeln, nämlich mit "AT+CGMI" für "Manufacturer Identification". Der liefert den Hersteller des Mobilfunkgerätes, sprich unseres SIM800L-Moduls. Außerdem kann mit "AT+CGMM" noch die "Model Identification" abgefragt werden.at+cgmi
SIMCOM_Ltd
OK
at+cgmm
SIMCOM_SIM800L
OK
at+cgmr
Revision:1418B02SIM800L24
OK
AT+GSV
SIMCOM_Ltd
SIMCOM_SIM800L
Revision:1418B02SIM800L24
OK
at+cgsn
86xxxxxxxxxxxxx
OK
at+ccid
89xxxxxxxxxxxxxxxxxx
OK
at+cbc
+CBC: 0,91,4131
OK
Kommen wir zum nächsten wichtigen Punkt, was jedes Handy hat: eine Anzeige der Signalsstärke. Na, da bin ich doch einmal gespannt, was die Platinen-Antenne in House so bietet. Der Befehl dazu heißt CSQ für "Command Signal Quality".
AT+CSQ
+CSQ: 5,0
OK
at+csq=?
+CSQ: (0-31,99),(0-7,99)
OK
"5,0" ist schon ziemlich übel. Nachdem ich das Modul und Antenne ein wenig höher gestellt habe, sieht der Empfang schon ein wenig besser aus:
at+csq
+CSQ: 15,0
OK
AT-Befehle nach Netzwerk-Login / PIN-Eingabe
Wie bei einem normalen Handy bekomme ich keinen Netzwerkzugang, solange ich keine PIN eingegeben habe. Erst dann funktionieren die hier aufgeführten, weiteren Befehle.at+cpin?
+CPIN: SIM PIN
OK
Wie oft die PIN schon falsch eingegeben wurde bzw. wieviele Versuche noch frei sind, zeigt der Befehl "AT+SPIC" an:
at+spic
+SPIC: 3,3,10,10
OK
at+cpin="0000"
OK
+CPIN: READY
Call Ready
SMS Ready
Außerdem blinkt die LED auf dem Modul jetzt nur noch etwa alle drei Sekunden.
Ob ich im Netz bin und einen Anruf absetzen kann, kann ich später auch mit "AT+CCALR?" abfragen. Erhalte ich als Antwort eine "1", dann bedeutet das soviel wie "Call Ready".
Jetzt, wo wir ins Netz eingebucht sind, können wir auch abfragen, welches Netz das ist. Das geht mit "AT+COPS?" und ruft nicht, wie man vielleicht meinen könnte, die Polizei ;)
at+cops?
+COPS: 0,0,"E-Plus"
OK
at+creg?
+CREG: 0,1
OK
Während das Netzwerk D1, D2 oder E-Plus ist, gibt der Provider Auskunft darüber, bei wem man seinen Mobilfunkvertrag hat. Den erfährt man über "AT+CSPN?"
at+cspn?
+CSPN: "",0
OK
Weitere Infos
Die Mobil-Mailbox-Vorwahl kann man so abfragen:AT+CCVM?
+CCVM: "491793000333",""
OK
AT+CBAND=?
+CBAND: (EGSM_MODE,DCS_MODE,GSM850_MODE,PCS_MODE,EGSM_DCS_MODE,GSM850_PCS_MODE,EGSM_PCS_MODE,ALL_BAND)
OK
AT+CBAND?
+CBAND: EGSM_MODE,ALL_BAND
OK
AT+CLTS=?
+CLTS: "yy/MM/dd,hh:mm:ss+/-zz"
AT+CCLK="23/05/18,08:13:00+08"
OK
AT+CCLK?
+CCLK: "23/05/18,08:15:22+08"
Alle AT-Commands kann man mit "AT+CLIST=?" anzeigen lassen. Das zeigt die Kategorien. Mit "AT+CLIST=[kat]" werden nachfolgend die zugehörigen AT-Befehle angezeigt, zum Beispiel:
AT+CLIST=?
+CLIST:
OTHERS PROD DEBUG EMAIL
SSL SAT NTP CALL_EXT
ECALL NETWORK_EXT HTTP FTP
PB_EXT SMS_EXT MMS SIMCARD_EXT
TCPIP PING ALARM NETLIGHT
GSMLOC LBS AUDIO_EXT DDET
RECORD ABM_EXT RF_EXT FM
JD PPP_EXT ANTENNA FS
SIMCOM_ALL PLATFORM
OK
AT+CLIST=SMS_EXT
+CLIST:
001: CMGDA
002: SCLASS0
003: CMGHEX
004: CCODE
005: CDSCB
006: CCONCINDEX
007: CRIURCMODE
008: SRSPT
OK
Strom sparen
Möchte man Energie sparen, kann man das Modul in den Schlafmodus schalten. Das geschieht mit "ATCSCLK=2". Mit "ATCSCLK=0" kann man das Modul dann ganz leicht wieder aufwecken. Eventuell zweimal schicken, wenn es beim ersten Mal nicht klappt.at+csclk=2
OK
at+csclk=0
OK
Mit "AT+CPOWD=1" kann man das Modul auch komplett ausschalten. Das währt allerdings nur ein paar Sekunden, dann startet es wieder neu und blinkt wieder schnell, das heißt, man muss sich wieder einloggen.
AT+CPOWD=1
NORMAL POWER DOWN
SMS: Empfangene SMs anzeigen
Doch nun mal zu einem praktischen Beispiel: dem Lesen und Schreiben von Kurznachrichten (SMS, Small Message Service).Zuerst bringen wir das Modul in den SMS-Text-Modus mit
at+cmgf=1
OK
Dann schicken wir uns mit unserem Haupt-Handy eine SMS. Nach kurzer Zeit sollte im Terminalprogramm folgendes aufpoppen:
+CMTI: "SM",1
AT+CMGL="all"
+CMGL: 1,"REC READ","+49176xxxxxxxx","","23/05/18,08:51:41+08"
Hier eine kleine Test Nachricht via SMS
OK
Die serielle Schnittstelle kann man natürlich auch mit Serial-Kommandos über einen Arduino oder ESP8266 bedienen und damit SMS absetzen und so eine Schaltung über Mobilfunk fernsteuern, einfach indem man ein SIM800L-Modul anschließt, die eingegangenen SMs liest und auswertet und dann reagiert. Die Mobilfunknummer des Sendenden überprüfen nicht vergessen, um sicherzugehen, dass sich da keiner so leicht einhacken kann.
Normalerweise macht man solche Fernsteuerungen ja übers WLAN, in dem der ESP8266 oder ESP32 eingeloggt ist und dann übers Internet. Aber falls man an dem betreffenden Ort kein Festnetz-Internet und WLAN hat, dann ist Mobilfunk eine gute Alternative. Und gerade Kurznachrichten lassen sich einfach auswerten und haben den Vorteil, auch später zugestellt zu werden, wenn gerade kein Empfang möglich ist. Liegt die etwas abgelegte Waldhütte gerade im Nebel und es ist kein Empfang möglich, wird die SM halt zugestellt, wenn das Wetter wieder klar ist.
Es gibt auch noch ein AT-Kommando "AT+CMGR=[index]", um einzelne Nachrichten lesen zu können, das ist aber gar nicht nötig, weil schon in der Liste der komplette Text angezeigt wird. Gegebenenfalls empfiehlt es sich, mit AT+CMGL="rec unread" auf nur neue Nachrichten zu überprüfen, wenn die Liste zu lang ist.
AT+CMGL="all"
+CMGL: 1,"REC READ","+49176xxxxxxxx","","23/05/18,08:51:41+08"
Hier eine kleine Test Nachricht via SMS
+CMGL: 2,"REC READ","+49176xxxxxxxx","","23/05/18,09:05:33+08"
Stimmt jetzt die Zeitzone?
+CMGL: 3,"REC READ","+49176xxxxxxxx","","23/05/18,09:07:45+08"
Hallo?
+CMGL: 4,"REC UNREAD","+49176xxxxxxxx","","23/05/18,09:22:39+08"
Diese Nachricht ist eine längere Kurznachricht, welche die einhundert sechzig Zeichen ausnutzt, um zu sehen, ob dies komplett in der Liste angezeigt wird. 54321
Man kann das SIM-Modul übrigens auch so einstellen, dass Kurznachrichten direkt ohne weitere Nachfrage im Terminalprogramm angezeigt (bzw. über die serielle Schnittstelle übertragen) werden. Das geht mit der Einstellung AT+CNMI=1,2:
AT+CNMI=1,2
OK
+CMT: "+49176xxxxxxxx","","23/05/18,10:48:18+08"
Ach, wie ist das schön: eine weitere SM
Mit AT+CNMI=2,1 kann man das wieder zurückstellen und die SMs werden wieder gespeichert und können wieder mehrmals gelistet bzw. angezeigt werden:
AT+CNMI=2,1
OK
+CMTI: "ME",11
AT+CMGL="all"
+CMGL: 11,"REC UNREAD","+49176xxxxxxxx","","23/05/18,10:55:09+08"
Eine neue Nachricht
OK
SMS: Eine SMs senden
Während das Empfangen von Kurznachrichten normalerweise kostenlos ist, ist das Senden von SMs kostenpflichtig. Mit einer Prepaid-Karte kostet das so um die 9 Cent pro SM. Aber auch wenn man nur empfängt, muss man hin und wieder (bei mir alle 6 Monate) einen bestimmten Betrag auf die Prepaid-Karte überweisen, sonst wird sie vom Provider gesperrt. Also dran denken oder einen Dauerauftrag einrichten.Zum Senden einer Kurznachricht gehen wir zuerst wieder in den SMS-Text-Modus mit AT+CMGF=1. Danach sagen wir dem Modul mit AT+CMGS="+49176xxxxxxxx", an welche Mobilnummer wir eine Nachricht senden wollen. Die "+49" steht dabei für Deutschland, bei der "0176" für O2 lassen wir die führende Null weg und der Rest ist die sieben oder achtstellige Rufnummer. Das Ganze nennt sich internationales Format und muss so angegeben werden.
Daraufhin bekommen wir ein ">" als Zeichen, dass wir jetzt etwas eingeben können. Dann tippen wir munter drauf los (maximal 160 Zeichen) und wenn unser Text fertig ist, schicken wir noch STRG+Z (ASCII 26) als Endekennzeichen:
AT+CMGF=1
OK
AT+CMGS="+49176xxxxxxxx"
> dies ist eine Antwort-SM, die ich mit STRG+Z abschließen muss.
+CMGS: 1
OK
Möchte man SM auf der SIM speichern, so tut man das als eine Art Vorlage und mit dem Befehl AT+CMGW="+49..." statt AT+CMGS="+49...". Dann landet die SM im Speicher unter "STO UNSENT" und kann später gesendet werden.
SMS zu senden kann so einige sinnvolle Anwendungsfälle haben, zum Beispiel könnte das SIM800L-Modul zusammen mit einem GPS-Modul betrieben werden und regelmäßig die Geokoordinaten nach Hause funken. Oder es meldet aufs Handy, wenn zuhause eine Tür geöffnet wird und womöglich eingebrochen wird. Oder man kann auch einfach nur eine kleine Schaltung mit einem großen roten Button dran entwerfen, den Oma drückt, wenn es ihr nicht gut geht, damit man schnell zur Hilfe eilen kann.
SMS Besonderheiten
Mit AT+CPMS? kann man sich anzeigen lassen, wieviel Speicher auf der SIM noch frei ist. Bei mir ist mit 5 SM bereits die Hälfte belegt:AT+CPMS?
+CPMS: "SM_P",5,10,"SM_P",5,10,"SM_P",5,10
AT+CPMS=?
+CPMS: ("SM","ME","SM_P","ME_P","MT"),("SM","ME","SM_P","ME_P","MT"),("SM","ME","SM_P","ME_P","MT")
Mit AT+CPMS="ME","ME","ME" stellt man auf den internen Speicher des Moduls um. Damit lassen sich dann auch 50 Nachrichten speichern und nicht nur 10.
AT+CPMS="ME","ME","ME"
+CPMS: 0,50,0,50,0,50
OK
AT+CMGL="all"
OK
Mit AT+CSCA? kann man sich übrigens die Nummer des SM-Service Center anzeigen lassen. Nur in wenigen Sonderfällen muss diese geändert werden.
AT+CSCA?
+CSCA: "+491760000443",145
Entwickler-Infos zur Funkzelle abrufen
Mit "AT+CENG..." kann man im Idle oder Telefonie-Modus Entwicklerinformationen abfragen. Das ist etwas komplexer und für Leute etwas, die gerne mit so etwas herumspielen. Aber hier werden unter anderem die CellId (in hexadezimal) der Zelle angezeigt, in die man eingeloggt ist inklusive der Nachbarzellen, die man noch empfängt, in die man aber nicht eingebucht ist, weil sie einen schlechteren Empfang haben.Die Empfangsstärke steht auch dabei. Damit könnte man so Pi mal Daumen errechnen, wo man ungefähr ist, wenn man die Standorte der Funkmasten kennt und die Empfangsstärke mit der Entfernung in Relation setzt und dann trianguliert. Wobei Empfangsstärke natürlich nicht immer unbedingt gleich Entfernung ist, es kommt auch auf die topologischen Eigenschaften der Umgebung (Wald, Häuser), die Antennenausrichtung usw. an.
Eventuell findet man auch eine Karte, in der die Zelle direkt mit Nummer eingetragen ist und hat dann gleich das entsprechende Gebiet. Eine Sache, die Funkamateuren sicher Spaß machen könnte. Da man aber ein bisschen Hintergrundwissen dazu braucht, behandele ich das hier nicht weiter und verweise auf das Datenblatt.
In diesem Zusammenhang sicher auch nützlich ist der AT-Befehl "AT+CNETSCAN", der alle Zellen in der näheren Umgebung anzeigt; und zwar nicht nur die des Providers, bei dem man gerade eingebucht ist, sondern alle.
Das ist vielleicht hilfreich, wenn man schauen will, welcher Mobilfunk-Provider die meisten Funkmasten und damit wohl die besten Empfangsbedingungen am Standort hat. Dabei aber bedenken: "E-Plus" funkt nur mit einem Watt, "D1" und "Vodafone" mit zwei Watt. Je höher die Leistung, desto weiter kommt man.
Als Beispiel: Bei meinem Test wurden 7 "E-Plus" (also O2), 4 "D1" (also Telekom) und 2 "Vodafone" (D2-Netz) aufgeführt. Dabei hat allerdings eine D1-Zelle die höchsten Empfangsstärke ("Rxlev") von 20, O2 geht nur bis max. 13 und D2 nur bis max. 12.
Da auch bei "AT+CNETSCAN" die CellIDs und Empfangstärken angezeigt werden, ist dieser vielleicht noch besser geeignet, den eigenen Standort zu ermitteln als "AT+CENG...".
Ähnliche Werte liefert auch "AT+CELLIST", das man vorher mit "AT+CELLIST=1" eingeschaltet haben muss. "AT+CELLIST" hat aber keinen Mehrwert gegenüber "AT+CNETSCAN", es ist nur schlechter lesbar; dafür spart es ein paar Bytes, sollte man das viel protokollieren wollen.
Quellen, Literaturverweise und weiterführende Links
(1) Golem vom 14.04.2021: Deutsche Netzbetreiber halten am 2G-Netz fest(2) teltarif.de vom 06.03.2023: Telekom stellt alten Fax- und Datendienst im Handy-Netz ein
(3) teltarif.de: Das war CSD: Leitungsvermitteltes mobiles Internet