Tinkering Arduino

eine kleine Welt der Elektronik.

Erste Schritte Mit Dem SIM900 GSM/GPRS Shield

Empfang der ersten SMS auf einem Android Smartphone Im heutigen Beitrag möchte ich kurz das SIM900 GSM/GPRS Shield von ITEAD vorstellen. Die Probleme es auf dem Weg auszuräumen galt, bis auf meinem Android die erste SMS auftauchtet, sollen hier aufgezeigt werden.

Nachdem das SIM900 GSM/GPRS Shield (Bezugsquelle: EXP-Tech) vor einigen Tagen ankam und gleich auf einem Arduino gesteckt wurde, eine aktive Prepaid SIM-Karte hatte ich noch in einer Schublade liegen, sollte es gleich mal ausgetestet werden.

Arduino Uno mit SIM900 GSM GPRS Shield Leider führten die Links im Shop auf die Seite des Herstellers und führten im Blog immer auf die Startseite. Das scheint beim Hersteller irgendwie mit allen Links zu passieren, denn selbst Links im Blog selbst funktionieren nicht. Darum soll es in meinem Beitrag aber nicht gehen. Schnell führte der Weg in den Onlineshop, wo dann einzelne Dokumente verlinkt sind. Unter den Downloads wurde dann schnell eine Bibliothek gefunden und heruntergeladen. Leider ist diese für eine aktuelle Arduino IDE nicht zu gebrauchen. Es werden Funktionen aufgerufen, die schon mit Arduino 1.0 ersetzt wurden. Eine kurze Suche im Internet ergab auch erst einmal nicht viel neues und so habe ich die Bastelei für den ersten Abend nach zwei Stunden ergebnislos abgebrochen.

Um jetzt nicht die einzelnen Schritte bis zur ersten SMS zu erklären, was wahrscheinlich nichts erhellendes liefert, möchte ich im folgenden lieber beschreiben, was notwendig ist, um auch Erfolg mit dem Shield zu haben.

Voraussetzungen

Status LED am SIM900 GSM GPRS Shield

  • Arduino (z.B. Arduino Uno)
  • SIM900 GSM/GPRS Shield
  • aktive SIM Karte ohne PIN
  • zusätzliche Stromquelle für den Arduino

Die zusätzliche Stromquelle ist notwendig, da die Versorgung über USB anscheinend nicht ausreichend ist. Beim aktivieren des des Moduls “SIM900-Power” die “Status LED” aufleuchtete, die “NET LED” drei mal blinkte und dann beide ausgingen.

Die Bibliothek

Da wie oben die direkt verlinkte Bibliothek hoffnungslos veraltet ist, ich aber nicht auf eine ältere Version der Arduino IDE zurück greifen wollte, hatte ich begonnen die Dateien direkt anzupassen. Die Mühe muss man sich aber nicht machen, denn es gibt schon ein GIT Repository von Jason Garland, welches man von Github clonen kann.

Da die letzten Änderungen daran auch schon 8 Monate zurück liegen, kann, wer nicht weiß, wie man mit GIT umgeht, das folgende ZIP-Archiv (GSM_Shield.zip) herunter laden. Änderungen sind hier vermutlich nicht so schnell zu erwarten. Der entpackte Ordner muss wie alle anderen Bibliotheken in den Ordner ‘Arduino/libraries’ kopiert/verschoben werden. Nach dem Neustart steht dann die Bibliothek mit den vier Beispielen zur Verfügung.

Leider lief es so noch nicht, denn die PIN-Belegung des SerialMonitors stimmen noch nicht mit der UART Multiplexer Einstellung des Shields überein. Das ist mit zwei weiteren Bildern sicher schnell erklärt.

In der Datei ‘GSM_Shield.cpp’ der Bibliothek wir in Zeile 19 festgelegt, dass die serielle Kommunikation über PIN 2 und 3 erfolgt.

GSM_Shield.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 GSM.cpp - library for the GSM Playground - GSM Shield for Arduino
 Released under the Creative Commons Attribution-Share Alike 3.0 License
 http://www.creativecommons.org/licenses/by-sa/3.0/
 www.hwkitchen.com
*/
#include <Arduino.h>
#include <SoftwareSerial.h>
#include "GSM_Shield.h"

extern "C" {
  #include <string.h>
}

#define rxPin 2
#define txPin 3

//SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
SoftwareSerial mySerial(2, 3);  //rx, tx

Genau dies muss man auf dem Shield durch das richtige Stecken der Jumper auch einstellen. Belegung des UART Multiplexers am SIM900 GSM GPRS Shield

Wie man sieht, ist hier TXD auf 2 und RXD auf 3 eingestellt. Das hat seine Richtigkeit, denn es handelt sich um serielle Datenkanäle und der PIN 3 ist der TX am Arduino ist die Leitung für ausgehende Daten. Natürlich ist das am SIM900 GSM/GPRS Shield dann der Dateneingang. Der Datenausgang TXD am SIM900 GSM/GPRS Shield führt dann zum Dateneingang RX am Arduino.

Arduino PIN Arduino SIM900 GSM GPRS Shield SIM900 GSM GPRS Shield PIN
3 TX RxD 2
2 RX TxD 3

Wer mehr über die serielle Kommunikation erfahren möchte findet bei Wikipedia einen guten Einstiegspunkt.

Programm

Im Programm “GSM Shield Test” aus den Beispielen kann man die anzurufende Nummer ändern und auch den Text, der per SMS verschickt werden soll.

Nun kann das Programm übersetzen und auf den Arduino laden. Nicht zu vergessen ist dabei, den Arduino mit einer zusätzlichen Stromquelle zu versorgen und mit dem Taster “SIM900-Power” das SIM-Modul einzuschalten. Die grüne “Status LED” sollte zusätzlich zur “Power LED” leuchten.

Arduino Programm und Serial Monitor

Gibt man nun über den Serial Monitor ein “s” ein und sendet dieses an über die serielle Schnittstelle an den angeschlossenen Arduino, wird eine SMS an die vorgegebene Rufnummer verschickt. Auch das Anrufen sollte mit diesem Beispielprogramm funktionieren. Hierfür sind die Kommandos “c”=call und “h”=hangup interessant. Die anderen Funktionen habe ich zum jetzigen Zeitpunkt noch nicht getestet.

Comments