Mein Paket… …ein SIM900 GSM/GPRS Shield

Heute kam mein Paket…

…mit einem GSM/GPRS Shield für das 2G Mobilfunknetz an. Dieses hatte ich jetzt auch wieder über einen ebay-Shop bestellt. (SIMCom SIM900 GSM GPRS Shield für 23,13€ inklusive Versand).

SIMCom_SIM900_GSM_Shield

Dieses 2G GSM/GPRS Modul macht qualitativ einen durchaus passablen Eindruck. Die Antenne gehört zum Lieferumfang. Der weiße Bestückungsaufdruck ist an einigen Positionen zwar etwas unscharf, lässt sich jedoch noch gut identifizieren. Einzig die Antennenbuche und die durchsteckbaren Arduino Buchsen- und Stiftleisten sind minimal schief eingelötet. Die massive SMA Antennenbuchse lässt sich leider nicht richten. Die Stiftleisten zum Arduino habe ich händisch vorsichtig ausgerichtet und das Shield auf mein Leonardo Board gesteckt. Danach erst habe ich den obigen Buchsenteil ebenfalls vorsichtig korrigiert, damit sich nun bei Bedarf ein weiteres Arduino Shield obenauf stecken lässt. Es ist ansonsten bereits fertig aufgebaut und enthält einen SIMCom SIM900 Chip für das 2G Netz. SIM-Kartenhalter und ein Sockel für eine kleine CR1220 Batterie zur Pufferung einer Echtzeituhr (RTC) sind auf der Unterseite zu finden. 5V Stromversorgungsanschluss, Antennenbuchse, 3,5mm Mikrofon- und Kopfhörerklinkenbuchsen sowie Schalter, 3 Kontroll-LEDs und Jumper befinden sich alle auf der Oberseite.

Daneben unterstützt das Board auch noch 12 GPIO, 2PWM und einen ADC, jedoch alles mit 2,8V Logikpegel! Entsprechende Maßnahmen zur Pegelanpassung sind bei Benutzung dieser Pins daher unbedingt erforderlich. Übrigens habe ich zwischenzeitlich auch ein Shield mit einem zusätzlichen MicroSD Slot gefunden. Auf der Flashkarte ließen sich dann Telefonbuch wie auch SMS-Nachrichten speichern.

Die Pinbelegung des SIM900 GSM Shields
Arduino      – GSM Shield
Digital Pin 0 – RX optional einstellbar per Jumper
Digital Pin 1 – TX opttional einstellbar per Jumper
Digital Pin 7 – per SoftSerial (Default) RX
Digital Pin 8 – per SoftSerial (Default) TX
Digital Pin 9 – Power On/Off (1 Sekunde HIGH)
5V                – über Schiebeschalter
GND            – GND

Der Aufbau der Hardware

Bevor die SIM-Karte in den Standard SIM-Kartenhalter eingelegt wird, muss diese zuerst von der Eingabe eines PIN-Codes befreit werden. Das geht am Besten über das Menü Einstellungen eines herkömmlichen Mobiltelefons. Ansonsten kann das GSM Shield keine selbsttätige Verbindung zum Netz des Providers aufnehmen! Da das Shield nur das 2G GSM/GPRS Netz unterstützt, muss darauf geachtet werden, dass der Provider ebenfalls 2G unterstützt! Das Shield wird dann vorsichtig auf den Arduino Leonardo gesteckt. Die beiden Jumper auf dem Board sind ab Werk für die serielle Kommunikation über die Pins D7 und D8 zur Verwendung der SoftSerial Library gejumpert. Aufgrund des relativ hohen Strombedarfes beim Senden von bis zu 2A, kann das GSM Shield nicht direkt über den Arduino versorgt werden. 5V z. B. aus einem Steckernetzteil müssen über die Powerbuchse dem Shield separat zugeführt werden. Der Schiebeschalter neben der 5V Buchse muss dabei unbedingt auf EXTern stehen, da ansonsten nur die 5V vom Arduino Board durchgereicht werden. Für den reinen Empfangsbetrieb reicht das durchaus, jedoch nicht für den Sendebetrieb. Ein 5-pol. Low Dropout Spannungsregler MIC29302WU auf dem Shield erzeugt ansonsten die notwendige Versorgungsspannung für den SIM900 Controllerchip.

Die Vorinbetriebnahme

Ist die SIM-Karte wie oben beschrieben „entpint“ und eingelegt, das Shield auf den Arduino gesteckt und beide Boards mit Spannung versorgt, kommt der 1. große Moment. Seitlich am GSM Shield befinden sich ein Taster und eine grüne LED. Sobald 5V am Arduino Shield anliegen, leuchtet die grüne LED. Der Taster muss nun etwa 1 Sekunde gedrückt werden. Direkt auf der gegenüberliegenden Seite befinden sich 2 weitere LEDs, eine grüne und eine rote. Sobald diese grüne LED leuchtet, können wir den Taster wieder loslassen. Kurz danach leuchtet die rote LED direkt daneben im Dauerbetrieb und die grüne LED blinkt alle 800ms. Dieser Blinktakt zeigt an, dass das Shield ein gültiges Netz sucht. Sobald sich die SIM-Karte eingebucht hat, verlangsamt sich das Blinken deutlich auf alle 3 Sekunden. Je nach Signalstärke kann dieser Vorgang durchaus bis zu einer Minute dauern. Zum Ausschalten wird einfach wieder der seitliche Taster für etwa 1 Sekunde betätigt.

Bevor es nun weiter an die Implementierung eines Arduino Sketches geht, müssen allerdings erst einmal Manuals zum SIM900 Controller angelesen werden. Das Manual mit den AT-Kommandos habe ich hier zum Download gefunden. Das Hardware Design steht hier zum Download.

SIMCom900_GS;_Shield_LötbrückeLeider ließ sich meine Konstellation anfangs nicht per Software über den Digital Pin 9 des Arduino einschalten. Da vom Verkäufer keinerlei Dokumentation angeboten worden ist, wurde es nun etwas mühsam. Nach einigen Untersuchungen stellte sich dann heraus, dass meine Revision des Shields noch eine offene Lötbrücke hat, welche erst geschlossen werden muss, damit der Pin 9 des Arduino überhaupt mit dem Shield verbunden ist! Nach dem Zulöten der Lötbrücke war aber auch dieses Problem behoben. Details dazu können auch dem obigen Foto entnommen werden. Die Schraubenzieherspitze markiert die noch zu verlötende Lötbrücke.

AT-Kommandos

Über AT-Kommandos lassen sich Modems wie auch unsere Mobilfunktelefone konfigurieren und steuern. Die Befehle fangen alle mit AT gefolgt von einer weiteren Kombination zur Befehlspezifikation und optional einem Argument an. AT steht dabei synonym für „Attention“ also „Achtung“!

ATH                              –       Hang up              –       Auflegen
ATD +4915221234567 –       Dial number        –       Rufnummer wählen
ATDL                             –       Redial last no.    –       Wahlwiederholung
ATA                                –       Answer call        –       Anruf annehmen
ATS10                           –       Read register     –       Lese Register 10
ATS1=5                         –       Write register     –       Schreibe Wert 5 in Register 1

Der 1. Testsketch mit Rufnummeranwahl

Mit nachfolgendem Testsketch wird das SIM900 Shield eingeschaltet, eine Telefonnumer für 15s angewählt, wieder aufgelegt und zum Schluss das Shield wieder ausgeschaltet. Das Ein- und Ausschalten erfolgt über die separate Funktion GSM900PowerOnOff sowie die Anwahl einer Rufnummer über die Funktion dialNumber.

/****************************************************************************************/
/*** Declaration of global constants and initialization of variables. Add includes. ***/
/****************************************************************************************/
/*** Software release and date ***/
const char* sketchname                     = „SIM900Call“;
const char* revision                             = „R.0.1“;
const char* author                               = „Olaf Meier“;
const char* date                                  = „2014/04/19“;
 
/****************************************************************************************/
/*** Declare constants and variables for the SIM900 GSM shield. Dial a number ***/
#include <SoftwareSerial.h>
# define GSMONOffPIN 9                                             // On/Off-pin of the GSM shield
 
const unsigned int baudRate                 = 9600;            // Baud rate for the serial monitor
const unsigned int GSM900baudRate  = 19200;          // Default baud rate for SIM900
 
SoftwareSerial GSM900(7, 8);                                        // GSM serial port to Pin 7 and 8
 
/****************************************************************************************/
/****************************************************************************************/
void setup() {
Serial.begin(baudRate);                                             // …set up the serial output
Serial.println(sketchname);                                        // Print the sketch name to serial out
GSM900.begin(GSM900baudRate);              
Serial.print(„SIM900 GSM Shield Power „);
GSM900PowerOnOff();                                              // Power on GSM shield
Serial.println(„is on now!“);
delay(30000);                                                            // 30s left to log onto the GSM network
Serial.println(„Logged into a GSM network“);
}                                                                                // End of void setup()
/****************************************************************************************/
/****************************************************************************************/
void loop() {
Serial.println(„Start dialing number“);        
dialNumber();                                                           // Function to dial a phone number
Serial.println(„Switch off power of the GSM Shield“);
GSM900PowerOnOff();                                            // Power off GSM shield
do {} while (1);                                                            // Run while loop endless
}                                                                                 // End of void loop()
/****************************************************************************************/
/****************************************************************************************/
/*** Function to switch GSM shield on and off via software ***/
void GSM900PowerOnOff()
{
digitalWrite(GSMONOffPIN, HIGH);
delay(1000);                                                               // 1s HIGH switch SIM900 ON or OFF
digitalWrite(GSMONOffPIN, LOW);
delay(3000);                                                               // Wait 3s until chip is initialized
}
/****************************************************************************************/
/*** Function to dial a phone number ***/
void dialNumber()
{
GSM900.println(„ATD + +4915212345678;“);          // Send command to dial the number
delay(15000);                                                            // Wait for 15 seconds before hang up
Serial.println(„Hang up“);
GSM900.println(„ATH“);                                           // Send command to hang up
}
/****************************************************************************************/

Obiger Sketch ist von mir auf dem Arduino Leonardo gestestet, sollte aber auch auf Uno und Duemilanove problemlos laufen.

Die technischen Daten des SIM900
Abmessungen Shield:                  7,3cm * 5,4cm
Betriebsspannung Shield:            5V
Interne Spannung Controller:       typ. 4V, min. 3,4V, max. 4,5V
Stromaufnahme Power Down:    30uA
Stromaufnahme Sleep Mode:      1,5mA
Stromaufnahme Burst Senden:   max. 2000mA
SIM-Schnittstelle:                         1,8V, 3V (per Software wählbar)
Quadband Frequenzbänder:        GSM 850MHz, EGSM 900MHz,
.                                                     DCS 1800MHz, PCS 1900MHz
Sendeleistung:                              Class 4 mit 2Watt bei 850/900MHz
Class 1 mit 1Watt bei 1800/1900MHz
Temperaturbereich Controller:      -30°C bis +80°C
AT-Kommandos:                          GSM 07.07/07.05/Enhanced SIMCOM
UART:                                           19200bps 8N1
Serielle Schnittstellen per Jumper:Hardware Serial D0, D1
.                                                     SoftwareSerial D7, D8
Shield Power:                               Ein/Aus D9

Hier meine Zusammenfassung
Bauteil:              SIMCom SIM900 GSM GPRS Shield
Lieferant:           ebay
Verkäufer:          ge-th2009
Preis:                23,13 €
Lieferzeit:          etwa 9 Wochen
Versandkosten: inklusive
Sonstiges:         leider ohne jegliche Dokumentation
Bewertung:       entspricht meiner Erwartung, bin zufrieden

Agenda zur Bewertung:
*=Ganz Mies     **=Mies     ***=Akzeptabel     ****=Gut     *****=Sehr Gut
Verkäufer:                                         ***
Produkt:                                           ****

Leider bietet der Verkäufer bislang keinerlei technische Unterstützung an. Die Inbetriebnahme ist erst durch zum Teil aufwändige Recherchen im Internet möglich. Daher nur 3 von 5 Sternen. Das Produkt dagegen scheint bis zum jetzigen Zeitpunkt meiner Untersuchungen voll funktionsfähig zu sein. Es sind nur einige Kleinigkeiten zu bemängeln wie eingangs auch schon beschrieben. Der Preis ist m. E. angemessen, zumal es ähnliche Shields gibt, die deutlich teurer sind. Daher 4 von 5 Sternen.

Olaf Meier
Arduino Hannover       http://Arduino-Hannover.de
.                                   http://electronicfreakblog.wordpress.com/

 

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

13 Gedanken zu „Mein Paket… …ein SIM900 GSM/GPRS Shield

  1. Hallo Martin,
    nach den vielen Emails in den letzten beiden Tagen, habe ich mir heute nach einigen Recherchen eine Prepaid Karte von Klarmobil beschafft: http://www.klarmobil.de
    Nach Freischaltung des Pincodes in einem normalen Uralthandy, habe ich über das Menü Einstellungen die Eingabe eines Pincodes entfernt. Anschließend die SIm in das SIM900 Shield OHNE arduino eingelegt. Nach Betätigung des Einschalttasters lief die inzwischen bekannte Einschaltprozedur los. Nach etwa 15 Sekunden bereits hatte sich die SIM ins Netz eingebucht. Ich vermute daher immer mehr, dass Du entweder Dein Shield versehentlich verkonfiguriert hast ofrt tastsöächlich ein Defekt vorliegt.
    Melde Dich
    Gruss Olaf

    • Hallo Martin,
      ich hatte jetzt nichts mehr von Dir gehört, auch nicht über die privaten Mails. Hast Du Dein Board über die AT-Kommandos in den ursprünglichen Fabrikzustand zurücksetzen können? Melde Dich, falls noch etwas ist.
      Wie schon mitgeteilt, versuche unbedingt erst einmal das Board Stand Alone, also ohne Arduino zum Laufen zu bringen. Der Serielle Port und irgendwelche Konfigurationskommandos spielen dann keine Rolle. Eine entpinte SIM für das 2G Netz reicht dann aus, sofern das Board mit einem ausreichend kräftigen Netzteil (5V/2A) versorgt wird.
      PS. Zumindest in der Theorie habe ich jetzt auch herausgefunden, wie ich eine SIM-Karte mit PIn mittels Arduino benutzen kann. Muss ich nur noch mal bei Gelegenheit austesten.
      Gruß Olaf

  2. Pingback: Das SIM900 GSM/GPRS Shield und der Leonardo | Der Elektronik Freak

  3. Hallo Olaf,
    .
    ich habe mir auch so ein GSM-Shield bestellt. Dein Beitrag hat mir den Einstieg leicht gemacht. Vielen Dank dafür.
    .
    Ich habe jedoch die gleichen Probleme wie Martin. Mein GSM-Modul conneted zu Hause auch nicht.
    .
    Ich wohne auf dem Land. Deshalb habe ich mich mit dem Modul ins Auto gesetzt und bin zur nächsten Autobahn-Anschlußstelle gefahren.
    .
    Siehe da : Dort angekommen klappt alles wie am Schnürchen : Mein GSM-Modul connected. Ich kann SMS senden. Ich kann SMS empfangen. Ich kann anrufen. Das Modul meldet auch eingehende Anrufe. … alles bestens.

    Mein Modul sagt mir auf Anfrage : Connented mit Vodafon.de. Es berichtet über verfügbare weitere Anbieter : T-COM, EPLUS .O2….
    .
    Fazit : Ob unser Modul mit seinem GSM 2G-Modus conneten kann, hängt nicht generell vom Dienstanbieter ab, sondern einfach davon ob der lokale Zugangspunkt GSM 2G anbietet oder nicht. Diese Technik ist ja veraltet. Ich nehme an daß neugebaute Zugangspunkte sich auf GSM 3G mit UMTS und LTE usw. konzentrieren.
    .
    Hubbie

  4. Hallo Olaf,

    danke für diese Einführung. Mein SIM900 Chinamodul funktioniert nach Deiner Anleitung tadellos. Das mit der Lötbrücke steht zwar auf meinem Shield – ich hätte es aber wahrscheinlich ohne Dich nicht richtig gedeutet!

    Toll – Danke
    Rainer

    • Hallo Rainer,
      hört sich gut an. Offensichtlich konnte ich mit meiner kleinen Grundlagenforschung zu diesem Modul, einigen von uns etwas Starthilfe geben. Leider fehlte mir in den letzten Wochen einfach die Gelegenheit noch etwas tiefer einzusteigen. Der Hubert hat inzwischen auch eine tolle Lösung geschaffen. Vermutlich der eine oder andere auch noch, von dem ich jetzt nicht unbedingt Kenntnis habe. Bei weiteren fragen daher einfach die Mailingliste nutzen. Einer wird schon antworten 🙂
      Gruß Olaf

  5. Hallo Olaf, hast du auch Erfahrungen mit dem GSM/GPRS Shield 65191? Versuche krampfhaft damit eine Verbindung herzustellen.
    Der skript ist ok hardware ist mit arduino mega verbunden und eine 3G Karte ist eingelegt alles funzt bis zu dem Moment wo im Serial Monitor connected stehen sollte!
    Mfg Alex

  6. Alex, hast du die Möglichkeit statt Deines Megas einen Uno zu verwenden? Ich kenne das von Dir verwendete GSM Board nicht, vermute aber, es wird ähnlich seriell mittels AT-Kommandos gesteuert. Beim Mega sind allerdings die seriellen Schnittstellen auf andere Pins gelegt! Das wird Dein Problem sein.
    Gruß Olaf

  7. Ganz, ganz, gaaanz doofe Frage:

    Wie zum Teufel verbinde ich das GSM Shield mit meinem Arduino UNO Rev3?

    Die PINS/Lötstellen an der Unterseite erscheinen mit zu klein um die in die Arduino-Stecker einzubringen…

    • Hallo Jan,
      eine interessante Frage, ich hatte es damals wie jedes andere Shield auch, einfach nur auf den Uno draufgesteckt. Kannst Du von Deinem Arduino und dem Shield irgendwo Fotos temporär hochladen? Oder noch besser, einfach mal zu uns an einem Mittwoch ab 19:00 ins Leinelab zum Arduino Treffpunkt Hannover vorbeikommen?

  8. Hallo,
    hab mir 2 SIM 900 Boards besorgt. Kann per Hypertermin keine Verbindung aufbauen. Nutze D0(TX) und D1 (RX) mit ext. 5 Volt.
    Hab keine Lötbrücke gelegt – mein Board sieht aber auch leicht unterschiedlich aus. Hätte die Möglichkeit, bei „R13“ eine zu legen. Das ist ganz rechts außen oberhalb der roten Steckerleiste.
    Muss ich sonst was beachten oder warum geht das nicht ?
    Hab das Datenkabel eines Handys genommen, das Handy kann ich problemlos mit AT Kommandos erreiche. Liegt also nicht am Kabel oder so …. Gruß Paul

Schreibe einen Kommentar zu Olaf Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.