Antrax GPS/GSM/GPRS Shield

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Version vom 21. Februar 2013, 14:43 Uhr von Stefan s (Diskussion | Beiträge) (Änderung 72603 von Stefan s (Diskussion) wurde rückgängig gemacht.)
Wechseln zu: Navigation, Suche

von Stefan Schuster

Dieser Artikel nimmt am Artikelwettbewerb 2012/2013 teil.

GPS und GSM sind häufig mit Arduino verwendete Technologien. Bei der Kombination von beiden können Daten mit GPS Informationen angereichert und per GSM verschickt werden. Dieser Artikel beschreibt die Verwendung des GPS/GSM Shields von Antrax Datentechnik mit einem Arduino Board. Es wird eine eigene Bibliothek für die Verwendung von GSM und GPS vorgestellt (frei zum Download). Die verwendeten Chips sind auch in vielen anderen Produkten vorhanden oder können direkt mit wenig Beschaltung verwendet werden. Daher kann dieser Artikel auch bei ähnlichen Produkten mit diesem Chips weiterhelfen. Anhand von Beispielen wird auf die Funktionen des Shields eingegangen. Getestet sind die Beispiele auf einem Arduino Mega R3. Die Bibliothek kann mit kleinen Anpassungen auch auf einem Arduino Uno verwendet werden. Das Ziel des Artikels ist es, eine Grundlage für die Arbeit mit dem Shield oder den einzelnen sowie kompatiblen ICs zu liefern.

Die Hardware und Anbindung des GPS/GSM Shields

Dieser Abschnitt enthält die wichtigsten technischen Informationen zu den verbauten Komponenten und deren Anbindung. Die Angaben basieren auf den Produktinformationen aus der Seite des Onlineshops[1]. Das Shield ist für einen Arduino Uno ausgelegt, es ist jedoch auch eine Anleitung und sogar ein Umbaukit verfügbar, mit dem die einfach Adaption an einen Arduino Mega gegeben ist. Die Anbindung des Shields an den Arduino ist mit Level-Shiftern realisiert, d.h. die interne Betriebsspannung und die Pegel des GSM und des GPS Teils können von den üblichen 5V des Arduino abweichen (und tun es auch). Als Level-Shifter Bausteine kommen 74AVC4T774 ICs zum Einsatz. Die notwendigen Betriebsspannungen werden auf dem Shield selbst aus der Ardunio-Spannungsversorgung erzeugt.

Verwendete Pins

Die verwendeten Pins sind in der Shieldlist[2] dokumentiert. Aus Gründen der Übersichtlichkeit hier nochmals als Liste (bezogen auf das Arduino Uno Layout).

Arduino Uno Pin Bedeutung
D0, D1 RX, TX (Serielle Kommunikation mit GSM)
D2 CRING (Serielle Kommunikation mit GSM)
D3 CTS (Serielle Kommunikation mit GSM)
D4 DTR (Serielle Kommunikation mit GSM)
D5 RTS (Serielle Kommunikation mit GSM)
D6 DCD (Serielle Kommunikation mit GSM)
D7 GSM_EN (GSM einschalten)
D9 GPS LED (kann auch via SPI eingeschaltet werden)
D10, D11, D12, D13 SPI Kommunikation mit GPS
A0 als D14 P1 (GSM-Button, kann auch via SPI abgefragt werden)
A1 as D15 P2 (GPS-Button, kann auch via SPI abgefragt werden)

Achtung: Da die RX/TX Pins D0 und D1 verwendet werden, kommt es zu einer Überschneidung mit dem USB-UART eines Arduino Uno (und wenn die Pins nicht anderst verbunden werden auch beim Mega). Das zeigt sich auch daran, dass im Serial Monitor der Arduino IDE die AT Befehle und Antworten des GSM Modems zu sehen sind. Siehe dazu auch den Eintrag im Forum [3]

Für die Verwendung mit dem Arduino Mega R3 sind die folgenden Pins vorgesehen (Achtung, das bedeutet, das man das Shield nicht einfach stecken kann, es muss statt dessen mit Brücken/Kabeln passend verbunden werden!).

Arduino Mega R3 Pin Bedeutung
D19, D19 RX, TX (Serielle Kommunikation mit GSM Serial1)
D2 CRING (Serielle Kommunikation mit GSM)
D3 CTS (Serielle Kommunikation mit GSM)
D4 DTR (Serielle Kommunikation mit GSM)
D5 RTS (Serielle Kommunikation mit GSM)
D6 DCD (Serielle Kommunikation mit GSM)
D7 GSM_EN (GSM einschalten)
D9 GPS LED (kann auch via SPI eingeschaltet werden)
50, 51, 52, 53 SPI Kommunikation mit GPS
A0 als D14 P1 (GSM-Button, kann auch via SPI abgefragt werden)
A1 as D15 P2 (GPS-Button, kann auch via SPI abgefragt werden)

GSM Teil

Es ist das GSM-Modul Telit GE865-QUAD [4] verbaut. Eine Antenne ich nicht auf dem Board, es ist eine externe Antenne notwendig. Diese wird über einen SMA/M-Konnektor angeschlossen. Ebenso ist eine SIM-Karte notwendig (im Mini-SIM Format). Die Betriebsspannung des GSM Teils beträgt 4V. Die Kommunikation erfolgt über Pegelwandler direkt zwischen Arduino-Board und dem GSM Chip. Das Setup der Schnittstelle wird durch die Library erledigt. Ist die Verbindung hergestellt, werden AT-Kommandos ausgetauscht.

GPS Teil

Beim GPS Modul handelt es sich um ein UP501 von Fastrax [5]. Die Betriebsspannung des GPS Teils beträgt 3,3V. Die Kommunikation mit dem GPS Modul erfolgt über SPI zum Shield. Dort wird SPI mit einer SC16IS750 SPI-UART Bridge an das eigentliche GPS Modul angebunden. Das bedeutet, dass nach dem Setup der Bridge (wird von der Library erledigt) über SPI mit dem GPS Modul kommuniziert werden kann, die Fluss-Steuerung erfolgt durch die Kommunikation mit den Registern des SPI-UART Chips. Auch hier sind die Details durch die Library gekapselt. Die Kommunikation auf Anwendungsebene erfolgt durch den Austauch von NMEA Sätzen.

Die Software Library und die Funktionen

Dieser Abschnitt beschreibt die beiden Libraries, deren Methoden für den Anwender und interne Funktionsweise. Die Library kommt in einem zip-File. Dieses wird in das "libraries" Verzeichniss von Arduino entpackt. Danach stehen die beiden Headerfiles GSM.h und GPS.h zur Verfügung, die in eigene Programme inkludiert werden können. Ebenso steht nach einem Neustart der Arduino IDE ein Beispiel zur Auswahl.

GPS verwenden

Die GPS Klasse verwendet die SPI Pins der jeweiligen Plattform. Für den Arduino Uno sind das die oben in der Tabelle angegebenen, für den Mega die Pins 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS).

Einzelnachweise

  1. Shield Bezug GSM/GPS Shield im Antrax Online-Shop
  2. Antrax GPS/GSM bei Shieldlist Shieldlist
  3. Forenbeitrag zum Shield und Arduino UnoForenbeitrag
  4. Telit GE865-QUAD Datenblätter und Guides Telit GE865-QUAD Product Page
  5. Fastrax UP501 Datenblätter und GuidesFastrax UP501 Product Homepage
Board im Antrax Onlineshop