SIM900A

Aus m-wiki
Zur Navigation springen Zur Suche springen

Einführung

Mit dem Modem SIM900A kann man mit einem Minicomputer wie dem Arduino oder Raspi telefonieren oder SMS versenden.

Hardware

Je nach Print gibt es verschiedene Funktionen, da der Prozessor viele Funktionen unterstützt wie etwa ein Mikrophon und einen Lautsprecher aber auch verschiedene Schnittstellen wie SPI/I2C oder serial. In diesem Projekt wird die serielle Schnittstelle verwendet.

Damit die Einspeisung funktioniert, sollte man die externe Einspeisung über den Stecker verwenden, wobei man dort direkt die 5V des Minicomputers durchschleifen kann. Je nach Kommando kann es aber sein, dass der Computer nicht genügend Strom liefert, was sich in Abstürzen äussern kann. In diesem Fall muss das Modul extern eingespiesen werden. Hierzu eignet sich auch eine Powerbank.

Bei mir gibt es zwei Pin-Reihen auf dem Modul. Eine ist seitlich angebracht und enthält 3 Pins, wobei ich deren Funktion (noch) nicht kenne. Die anderen 6 Pins befinden sich neben der Antenne und sind mit 3VT/3VR, 5VT/5VR und GD/VCC beschriftet. Die oberen 2 Reihen kann man direkt zur Kommunikation über die serielle Schnittstelle verwenden, wobei man schauen muss, welchen Spannungspegel das Gerät verträgt. Beim Arduino nimmt man die mittleren mit 5V und beim Raspi die oberen mit 3V.

Die Pins werden gekreuzt, so dass Receive auf Transmit kommt und umgekehrt. Entsprechend werden beim Raspi die Pins 4 und 5 in der ersten Reihe verbunden. Die Spannung nimmt man über Pin 1 und 3. Achtung, beim Verbinden im laufenden Betrieb stürzt der Raspi ab, da das Modul beim Starten zu viel Strom zieht. Entsprechend sollte man die Verbindung im ausgeschalteten Zustand vornehmen.

Nach dem Einstecken leuchtet eine (rote) LED neben der SIM-Karte und neben der Antenne blinkt eine LED etwa im Sekundentakt. Anschliessend ist das Modul bereit für eine Kontaktaufnahme.

Je nach Version heisst die serielle Schnittstelle anders. Man sollte ein ls /dev/tty* durchführen um zu schauen, ob diese ttyS0 oder ttyAMA0 heisst. Man kann aber auch über den Alias serial0 zugreifen.

Software

Die Verbindung lässt sich relativ einfach mit python testen. Man kann sich aber auch mit minicom verbinden mit minicom -b 9600 -o -D /dev/ttyAMA0.

import serial
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
port = serial.Serial("/dev/serial0", baudrate=9600, timeout=1) # Standardverbindung

port.write(b'ATI\r')  # Steuerkommando -> https://www.engineersgarage.com/articles-raspberry-pi-sim900a-gsm-gprs-modem-at-commands/
rcv = port.read(100)  # max. 100 Zeichen lesen
print(rcv)            # Antwort ausgeben

Wenn alles klappt, dann erhält man die CPU-Bezeichnung in einem String zurückb'ATI\r\r\nSIM9'. Die Datei darf nicht als serial.py gespeichert werden, da man sonst die Bibliothek durcheinander bringt. Am besten serialtest.py oder so verwenden.