SIM900 GSM Shield nützliche AT Befehle

Ich möchte hier mal eine Aufstellung der AT Befehle geben, die im Zusammenhang mit GSM Shields auf Basis des SIM900 ICs nützlich sind.

Natürlich gibt es dazu ein Datenblatt aber das ist für Anfänger schwer zu lesen.

Einen sehr einfachen Sketch um per SerialMonitor mit dem SIM900 zu kommunizieren gibt es hier.

Dort ist auch sehr gut die Verdrahtung beschrieben. Eine der besten Seiten, die ich gefunden habe.

Mit dem oben aufgeführten Sketch kann man AT Befehle vom SerialMonitor zum SIM900 schicken und erhält (in der Regel) eine Antwort.

Im Serial Monitor muss jeder Befehkl mit einem Zeilumbruch (CR) abgeschlossen werden.

Hier schonmla einige Beispiele:

AT /fragt den Status des SIM900 ab/

OK /Antwort falls kein Fehler vorliegt/

ERROR /Antwort falls ein Fehler vorliegt/

AT+CPIN? /Fragt die Notwendigkeit der PIN Eingabe ab/

+CPIN: READY /Antwort falls die PIN bereits eingegeben wurde/

+CPIN: SIM PIN /Antwort falls die PIN eingegeben werden muss/

AT+CPIN=1234 /übergibt die PIN (hier 1234) an den SIM900/

OK /Antwort falls die SIM akzeptiert wurde/

Das oft propagierte Entsperren der SIM Karte ist also nicht unbedingt notwendig.

So, wenn bis hier hin alles klappt, läuft der SIM900 und die PIN ist drin.

Jetzt kann man sich mal anrufen.

Wenn man in Deutschen Netzen unterwegs ist, muss eine +49 vorgewählt werden.

Es entfällt jedoch die führende Null der Vorwahl.

Aus 0175/1234567890 wird also +491751234567890.

Der passende Befehl lautet ATD. Er wird mit einem Semikolon Abgeschlossen.

ATD+491751234567890; /wählt Nummer 0175/1234567890 in Deutschland/

OK /Atwort falls gewählt werden kann/

Mit ATH legt man wieder auf.

ATH /* Verbindung abbrechen*/

OK /* Antwort, falls Verbindung abgebrochen wurde*/

Morgen gehts weiter.

Ein Problem gibts noch:

Der SerialMonitor in der Arduino IDE kann offenbar kein CTRL-Z senden. Wie kann man das simulieren?

Man könnte den String mit CTRL-Z vergleichen und im Erkennungsfall per Serial.print an den SIM900 senden...

Alternative Ideen?

Der SerialMonitor in der Arduino IDE kann offenbar kein CTRL-Z senden. Wie kann man das simulieren?

Kannst es mit dem Ascii-Code 0x1A = ALT 26 versuchen.

Oder nimmst HTerm :slight_smile:

Empfängt der SIM900 eine SMS so meldet er:

+CMTI: "SM",1

Die SMS kann man sich anzeigen lassen mit

AT+CMGR=1 /Liest SMS aus Speicher Position 1/

Der Output sieht so aus:

+CMGR: "REC UNREAD","+491751234567890","","16/12/17,19:33:49+04"

Test

OK

Offenbar habe ich "Test" in die SMS geschrieben. Meine Telefonnummer habe ich durch die aus dem ersten Beispiel ersetzt.

Der Status der SMS im SIM900 wird dadurch von "ungelesen" aus "gelesen" geändert. Trotzdem steht die SMS noch an Speicher Position 1.

Lässt man sich nun die ungelesenen SMS anzeigen mit

AT+CMGL="REC UNREAD" /ungelesene SMS auflisten/

ERROR /keine ungelesenene SMS vorhanden/

Da der Speicherplatz im SIM900 begrenzt ist, muss man früher oder später auch mal SMS löschen.

Das geht mit

AT+CMGD=1 /Löscht SMS an Position 1/

Also mit dem CTRL-Z im SerialMonitor ist wohl so ein Problem...

Klappt bei mir alles nicht.

Naja, ich hab jetzt in den Code was entsprechendess reingeschrieben und nach langer Testerei habe ich auch gerade tatsächlich eine SMS bekommen!! :grinning:

Hier ist die AT Liste SIM900:

sim900_at_commands.pdf

Ja, danke.

Ich habe vergessen das zu verklinken.

Da das PDF doch sehr umfangreich und nicht immer einfach zu verstehen ist, soll hier eine Sammlung von konkreten Befehlen entstehen, die verständlich und erprobt sind.