GSM-Modul am Raspberry Pi 2

July 28th, 2017

In meinem Haushalt werkeln zwei Raspberry Pi 2 Model B vor sich hin und erledigen Aufgaben zur Heimautomatisierung. Dabei halten mich die beiden Helfer im Normalfall per E-Mail über ihre Befindlichkeiten auf dem Laufenden. Es wäre praktisch, dachte ich mir, wenn es einen alternativen Kommunikationsweg als Fallback-Lösung gäbe, falls das heimische Netzwerk einmal aus irgendeinem Grund nicht erreichbar ist.

Eine Kommunikation per SMS ist vergleichsweise günstig zu realisieren und praxistauglich für unterwegs. Stand-alone zu betreibende GSM-Modems in der Art von Falcom Twist oder Siemens TC35i/M35i sind schick und zuverlässig, aber für meinen Einsatzzweck zu sperrig. Es sollen schlanke Module (Platinen) sein, die huckepack zu montieren sind und sich an der vorhandenen Stromversorgung des Raspberry nähren können.

Bei www.roboter-bausatz.de ist unter der Artikelnummer RBS10504 ein “GSM Modul Kit für Arduino” zum Preis von 9,90 Euro erhältlich. Es basiert auf dem GSM-Modul Neoway M590E und kommt als Bausatz mit nur wenigen zusätzlichen SMD-Bauteilen zum Selberlöten daher. Begibt man sich auf eine Suche im Netz, stellt man fest, dass dieses Kit sehr populär zu sein scheint und allerorten angeboten wird — bei chinesischen Anbietern zuweilen für unter 2 Euro das Stück. Da stellt sich die Frage: Saugt das oder taugt das?

Das Kit

Geliefert wird das Kit in einem verschweißten Antistatik-Beutel. Darin enthalten: Platine, Antenne, GSM-Modul, SIM-Kartenhalter sowie eine handvoll Kleinkram und SMD-Krabbeltierchen. Die Platine macht einen guten Eindruck, einige andere Bauteile sehen irgendwie gebraucht aus: Das Etikett abgewetzt, die Kontakte verzinnt, der SIM-Kartenhalter teilweise mit Zinnresten überzogen. Man muss annehmen, dass es sich hier um gebrauchte Komponenten handelt oder um solche, die zur Wiederverwendung von anderen Baugruppen “geerntet” wurden.

Ein Beutel enthält zwei LEDs in unterschiedlichen Bauformen, obwohl nur eine benötigt wird. Im anderen Beutel fehlt der (einzige) SMD-Elko, stattdessen enthält dieser eine (nicht benötigte) SMD-Diode. Vor meinem geistigen Auge sehe ich arme Lohnknechte, die unter schwierigen Bedingungen Tüten packen, und fühle mich schuldig. Apropos “nicht benötigt”: Eine Aufbauanleitung liegt nicht bei; was wohin zu löten ist, muss man selbst herausfinden. Dank des Internets und des herunterladbaren Entwurfshandbuchs zum M590E ist diese Herausforderung zu meistern.

Das Entwurfshandbuch gibt zahlreiche Empfehlungen für ein gutes Schaltungs- und Platinendesign, welches Störungen vermeiden und einen stabilen Betrieb fördern soll. Die Entwickler der Platine, so scheint es, haben sich davon nicht verrückt machen lassen und sind ihren eigenen Weg gegangen. Beispiele:

DO NOT USE SERRIES diodes to directly step-down the voltage.

Hier wird dennoch eine Diode in Serienschaltung als Verpolungsschutz und zum Absenken der Versorgungsspannung verwendet. Der M590E arbeitet mit 3,3 V bis 4,8 V, wobei 3,9 V der empfohlene Wert ist. Das entspricht ungefähr dem Niveau einer Lithium-Zelle. Für den Betrieb an 5 V ist es natürlich zu verlockend, sich an dieser Stelle mit einer Diode zu behelfen. Ich habe diese auch eingelötet und ziehe mir provisorisch die 5 V vom Raspberry herüber.

USE HIGH VALUE, LOW ESR CAPACITORS, CLOSE TO THE MODULE.

Hier ist genau eine Bestückungsposition vorgesehen für den beiliegenden Tantal-Elko mit 100 μF (C1 laut Entwurfshandbuch). Schöner wären weitere Bestückungspositionen für zusätzliche Kondensatoren (C2 & C3). Bei der Bestückung mit 100 μF können laut Entwurfshandbuch im Sendebetrieb Spitzenströme von bis zu 1,2 A auftreten.

When designing the serial communication interface circuit, a series resistor should be used should the external MCU be operating on a higher voltage – a 200 Ohm resistor should be used if the external MCU is operating on 3.3V. […] A filter capacitor of 100pF should be placed near the module receive pin.

Weder Serienwiderstand noch Filterkondensator sind vorgesehen, müssen also bei Bedarf fliegend oder extern ergänzt werden. Die GPIO-Ports des Raspberry arbeiten mit 3,3 V, die seriellen Ports des M590E mit 2,85 V, aus diesem Grund habe ich zur Entkopplung in die RxD- und TxD-Leitung je einen Serienwiderstand eingesetzt.

Um das Bild abzurunden, bleibt noch zu erwähnen, dass eines der beiden GSM-Module sich partout nicht zur Zusammenarbeit bewegen lassen wollte, also wohl defekt ist. Es bootet nicht trotz testweise nachgerüsteter Pufferkapazitäten, kommuniziert nicht über die serielle Schnittstelle und saugt nur gepulst im Abstand weniger hundert Millisekungen Ströme aus dem Labornetzteil. Zum Glück bekam ich vom freundlichen Shop ohne Diskussionen ein Ersatzmodul nachgeliefert.

Und trotz des ganzen Gemäkels klappt es am Ende mit der Funkerei. Nachfolgend abgebildet mein Testaufbau des GSM-Moduls auf dem Experimentierboard. Damit das Modul gesättigt an der 5-V-Versorgung des Raspberry mitnuckeln kann, habe ich eine Parallelschaltung von 100 nF und 1000 μF Low-ESR-Elko anstelle des einzelnen Tantal-Elkos aufgelötet. Vorteil: Der Spitzenstrom im Betrieb reduziert sich damit auf 0,6 A und das Modul ist gut versorgt. Nachteil: Beim Einschalten muss sich der dicke Elko einmalig vollsaugen, wodurch das Netzteil kurzzeitig stark belastet wird — so stark, dass der Raspberry einen Reboot durchläuft, wenn man das Modul im Betrieb anklemmt. Für einen betriebsfertigen Aufbau werde ich mir also eine robustere Lösung überlegen müssen, notfalls mit zwei getrennten Stromversorgungen.

Erste Kontaktaufnahme per Minicom

Für die serielle Kommunikation verwende ich die Pins GPIO14 (UART0_TXD) und GPIO15 (UART0_RXD) über das Device /dev/ttyAMA0. Ist dieses nicht verfügbar, muss zunächst mittels des Tools raspi-config die standardmäßig auf den Pins aktivierte serielle Login-Shell deaktiviert und die Nutzung als serielle Schnittstelle aktiviert werden:

sudo raspi-config
Interfacing Options
> Serial
  > Would you like a login shell to be accessible over serial?
    <no>
  > Would you like the serial port hardware to be enabled?
    <yes>

Nach einem Reboot sollte das Device nun zur Verfügung stehen:

ls -al /dev/ttyAMA0 
crw-rw---- 1 root dialout 204, 64 Jul 09 18:06 /dev/ttyAMA0

Anschließend kann die erste Kontaktaufnahme zum GSM-Modul über ein Terminal erfolgen. Ich verwende dafür das Programm Minicom.

sudo apt-get install minicom

Damit der Standard-User pi auf die serielle Schnittstelle zugreifen darf, muss dieser zur Gruppe dialout hinzugefügt werden.

sudo adduser pi dialout

Anschließend einmal ab- und wieder anmelden und ausprobieren:

minicom -b 115200 -o -D /dev/ttyAMA0

Die Willkommensmeldung überspringen mit Taste <ENTER>. Dann lokales Echo aktivieren mit Tastenkombination <STRG>+<A> und dann Taste <Z> und dann Taste <E>. Nun Eingabe AT <ENTER> usw.

AT
OK

AT+CPIN="1234"
OK

AT+CPIN?
+CPIN:READY

Verlassen des Terminals mit Tastenkombination <STRG>+<A> und dann Taste <Q> und dann Taste <ENTER>. Die verfügbaren AT-Befehle sind dokumentiert in der Befehlsreferenz des M590E.

SMS-Daemon als Poststelle

Der SMS-Daemon smsd ist im Paket smstools enthalten. Ähnlich wie ein MTA (Mail Transfer Agent) für das Senden und Empfangen von E-Mails, kümmert sich der SMS-Daemon im Hintergrund um das Senden und Empfangen von SMS.

sudo apt-get install smstools

Für eine grundlegende Funktion müssen nur wenige Parameter in der Konfigurationsdatei /etc/smsd.conf eingetragen werden (diese finden sich ganz am Ende der Datei):

[GSM1]
device = /dev/ttyAMA0
incoming = yes
pin = 1234
baudrate = 115200

Anschließend den SMS-Daemon einmal neu starten:

sudo service smstools restart

Damit der Standard-User pi auf die Verzeichnisstruktur des SMS-Daemons zugreifen darf, muss dieser zur Gruppe smsd hinzugefügt werden.

sudo adduser pi smsd

Anschließend einmal ab- und wieder anmelden und via echo-Befehl eine Test-SMS versenden:

cd /var/spool/sms/outgoing
echo -e "To: 491575xxxxxxxx\n\nEine Test-SMS!" > testdatei

Oder via Editor vi, dort ist die erforderliche Leerzeile zwischen der Rufnummerangabe und der Textmitteilung besser erkennbar:

vi /var/spool/sms/outgoing/testdatei
To: 491575xxxxxxxx

Eine Test-SMS!

Innerhalb weniger Sekunden sollte die SMS nun an ihren Empfänger versendet werden. Im Normalfall, wenn es geklappt hat, wird die soeben erzeugte Datei testdatei aus dem Verzeichnis /var/spool/sms/outgoing verschwunden sein und — um ein paar Info-Zeilen ergänzt — im Verzeichnis /var/spool/sms/sent wieder auftauchen:

To: 491575xxxxxxxx
Modem: GSM1
Sent: 17-07-09 19:09:11
IMSI: 24xxxxxxxxxxxxx


Eine Test-SMS!

Ging etwas schief, findet sich die Datei im Verzeichnis /var/spool/sms/failed wieder, ergänzt um einem Fehlerhinweis. Eingehende SMS landen automatisch im Verzeichnis /var/spool/sms/incoming.

Mit ein wenig Skripterei umzu lässt sich also eine einfache Remote-Steuerung des Raspberry per SMS auf die Beine stellen. Eine Auswertung des RING-Signals (für eingehende Anrufe) sowie die Datenkommunikation per GPRS habe ich bisher nicht benötigt und nicht ausprobiert.


Reparatur eines ESGE-ZauberStab SG 2000

February 14th, 2017

“Deinen Toaster kenne ich. Aber gibt es denn nicht mal was Neues?”

Doch, sollte es eigentlich immer mal gegeben haben. Es geht ja auch ständig etwas kaputt. Aber irgendwie fehlte mir der Antrieb. Vielleicht bringt der Zauberstab meiner lieben Kollegin neuen Schwung ins Blog.

Dieser Zauberstab ist geschätzt 20 Jahre alt. Das Fehlerbild: Keine Funktion, der Motor dreht nicht mehr. Wie es sich für ein gutes Gerät gehört, lässt sich das Gehäuse über zwei Schrauben leicht öffnen und das Innenleben in Form einer Platine entnehmen. Auf der Platine montiert sind die zwei Bedientaster für Drehzahlstufe I und II sowie ein X2-Kondensator 47nF/250V, eine Diode und zwei Ferritperlen.

Der Kondensator und die Diode sind in Reihe geschaltet. Der Abgriff für den Motor erfolgt entweder hinter dem Kondensator (hohe Drehzahl) oder hinter der Diode (niedrige Drehzahl). Bei niedriger Drehzahl läuft der Motor nur an einer Halbwelle der Netzspannung, was sich ziemlich “stökerig” anfühlt, wenn kein Aufsteckteil als Schwungmasse dient.

Eine einfache Prüfung der Bauteile mit dem Multimeter ergibt keinen Befund, dafür aber fällt eine defekte Lötstelle an einer der Ferritperlen ins Auge. Die Ferritperlen sind nicht zusätzlich auf der Oberseite der Platine fixiert, zum Beispiel durch einen Tropfen Klebstoff, und möglicherweise hat die mechanische Belastung durch Motorvibrationen zum Defekt geführt. Mit etwas Nachlöten ist der Zauberstab nun wieder fit für die nächsten 20 Jahre.


Reparatur eines Siemens TT911P2 Toasters

March 12th, 2012

Dieser Toaster flog mir kürzlich aus Familienbeständen zur Reparatur zu. Mit seinen Alu-Seitenblenden und der vergleichsweise großen Gestalt ist das Gerät eine echte Schau. Porsche-Design macht auch auf dem Basteltisch etwas her. Das Fehlerbild: Nach dem manuellen Absenken des Schlittens verbleibt dieser nicht in der Toast-Position, sondern schnellt direkt wieder nach oben — kein Toasten mehr möglich, der “Pop-Up”-Blocker versagt gewissermaßen. Wegen des gleichen Defekts musste das Gerät früher bereits einmal zum Herstellerkundendienst, damals noch in der Garantiezeit. Meine Netzrecherche führte zu der Erkenntnis, dass auch andere Nutzer des TT911P2 dieses Problem kennen. Reparaturberichte fand ich leider keine, daher nun dieser Text.

Ich hatte spontan die Sorge, dass die Reparatur nicht ganz einfach werden würde, und dies hat sich bestätigt. Kummer bereitet dabei weniger das Verstehen der Funktionselemente und der Elektronik, sondern hauptsächlich das zerstörungsfreie Zerlegen und wieder Zusammenbauen des Gehäuses. “Es ist eine reine Massage!”, würde wohl Dittsche dazu sagen. Keine einzige Schraube muss gelöst werden, um an das Ziel, die Steuerplatine, zu gelangen — alle Teile sind ineinander verclipst und verklemmt. Die Kunst liegt im Aufspüren der Befestigungspunkte und im zuweilen beherzten aber nicht-destruktiven Zugreifen.

Meine Reihenfolge der Demontage: Zunächst den Gerätefuß entfernen (vermutlich eine unnötige Aktion). Dann das linke Bedienteil mit dem Handrad des Brötchenaufsatzes abmontieren und so das seitliche Abziehen der Alu-Seitenblenden ermöglichen. Nun lässt sich das Oberteil lösen und zusammen mit dem rechten Bedienteil abnehmen. Fertig! Das hört sich jetzt einfach an, war es gefühlt aber nicht. Gerne lasse ich mir den geheimen Taekwondo-Schlag verraten, mit dem Profis das rechte Bedienteil direkt und in drei Sekunden abtrennen. Ganz wichtig übrigens bei einem gebrauchten Toaster: Nach jedem Arbeitsschritt Pinsel und Staubsauger hernehmen und die freigesetzten Zivilisationsreste entfernen. Das Krümeln hört die ganze Zeit nicht auf.

Die nachfolgenden Ansichten zeigen das noch ungereinigte Innenleben. Es funktioniert folgendermaßen: Wird der Schlitten per Handrad nach unten geführt, greift eine an ihm befindliche Nase in einen Hebelschalter auf der Steuerplatine (rechtes Bedienteil, später abgebildet) und schaltet mechanisch die Heizspannung ein. Die MCU (der Prozessor) auf der Steuerplatine erhält darüber Rückmeldung und aktiviert nun einen Zugmagneten, der einen Anker am Schlitten anzieht und diesen solange arretiert, bis der Toastvorgang beendet ist.

Im rechten Bedienteil befindet sich neben der Steuerplatine auch eine Mechanik zur Zahnriemenführung des Schlittens sowie zum Öffnen und Schließen der oberen Verschlussklappe. Ein seitlich am Heizelement angebrachtes Stück Bimetall führt in dieses Bedienteil hinein und dient der Sicherheit: Beim Erreichen der Betriebstemperatur löst dessen Verbiegung die mechanische Verriegelung der Verschlussklappe und verhindert einen Hitzestau im Geräteinnern. Ergänzt wird diese Maßnahme durch einen Neigungssensor auf der Steuerplatine, der bei einer Schieflage des Toasters von geschätzt größer 30 Grad jeden Toastvorgang verhindert oder abbricht.

Die Steuerplatine beherbergt nur wenige, gut erkennbar voneinander abgesetzte Funktionsgruppen. Für MCU und Zugmagnet finden sich separate Spannungsversorgungen, jeweils ausgeführt als einfache Kondensatornetzteile. Die MCU schaltet den Zugmagnet über einen Optokoppler mit Triac-Ausgang (“Photo-Triac”) K3023P. Weil sich die Gleichrichter, Kondensatoren und Widerstände der Netzteile am Multimeter unverdächtig zeigten, fiel mein Verdacht sogleich auf den Optokoppler. Den Trenntrafo ausgepackt und unter Spannung gemessen habe ich dann nicht mehr, sondern direkt einen Vergleichstyp MOC3023 für kleines Geld (circa 50 Cent) bestellt. Der Austausch zeigte den gewünschten Erfolg. Nach dem anschließenden Zusammenbau und einem gründlichen Funktionstest war der “Porsche” wieder startklar.


HoTT Firmware-Upgrade mit mySmartUSB MK2

January 16th, 2011

“Heiße” Verdrahtung, mit der ich das Firmware-Upgrade an einem Sender Graupner MX-16 HoTT und dem Empfänger GR-16 erfolgreich durchführen konnte:

  1. myAVR-Programmer in den UART-Modus versetzen.
  2. Pin 7 (TxD) und Pin 8 (RxD) des myAVR-Programmers über je einen 1.2kΩ Widerstand an Pin “S” des MX-16 respektive Pin “T” des GR-16 anschließen.
  3. Pin 10 (GND) des myAVR-Programmers an Pin “–” des MX-16 respektive des GR-16 anschließen.

Tipp zur seriellen Beschaltung gefunden im Forum des RC-Network.


E-flite MLP4DSM conversion from mode 2 to 1

January 16th, 2011

Recently somebody asked me to convert his E-flite MLP4DSM remote control from mode 2 to mode 1. Had already done this about two years ago for my own device, which I aquired second hand with a nice little Blade MCX but forgot to take photos of the procedure. So here it is for archival purposes and to whom it may be of interest.