2021
HOME

Arduino hört Seewetter und schreibt mit: Software
RTTY-Decoder Arduino
All in One: RTTY-Decoder, Serielles Terminal, TFT-Display auf kleinstem Raum

Die 1/0-Information aus einem der auf dieser Seite beschriebenen Hardware- oder Software-Tondetektoren, erreicht den Arduino pro mini, der aus dem Signal die Baudot-Zeichen der Funkübertragung als Klartext dekodiert. Die Meldungen von zum Beispiel des Deutschen Wetterdienstes in Pinneberg erscheinen auf einem 240x240 Display und lassen sich bei 50 Baud gut mit lesen.

Display mit 48x30 ZeichenZusätzlich können serielle Daten, die am Eingang RX mit 9600 Baud eintreffen auf dem Display zur Anzeige kommen, wodurch quasi ein Hardware-Serial-Monitor für Arduino & Co verfügbar ist. Da das Display Hardware-Scroll in vertikaler Richtung unterstützt wird der eintreffende Text fortlaufend und mit blinkendem Cursor ausgegeben.

Das Modul ist der Hauptbestandteil eines kleinen Wetter-Readers, der seine Daten über Lang- oder Kurzwelle erhält und hier mit seiner Software beschrieben werden soll.

Weitere Module können sein:

Dieses Modul kann übersichtlich als Funktionsblock - wie oben angegeben - dargestellt werden, wodurch die Wirkungsweise und das Zusammenspiel mit anderen Komponenten oder Moduln deutlicher werden kann. Die Software besteht aus einem Mix aus RTTY-Decoder und Serial Terminal aus fremder Feder, angereichert um wenige Zeilen, damit das Zusammenspiel funktioniert.

Als Hardware kommen die folgenden Komponenten zum Einsatz:

  • Arduino pro mini 5V/16MHz(!)
  • ST7789 SPI-Display 240x240 Pixel und bis zu 48x30 Zeichen (siehe Abbildung)

Beides betrieben mit 3,3 Volt bzw. Lipo-Akku. Der Prototyp ist im Beitrag zum XR2211 zu sehen und ist laut weiter unten verlinkter Software nach folgender Tabelle verschaltet

ST7789

Display-Breakout

Arduino pro mini

3,3V

VCC

3,3V

DC

DC

7

RST

RES

8

MOSI

SDA

11 (fest)

CLK

SCL

13 (fest)

MISO

-

12 (fest)

Gnd

GND

Gnd


Software RTTY-Decoder aus fremder Feder
Der RTTY-Decoder ist als Public Domain Software in der Datei R_DWD_50BAUD.ZIP im Netz zu finden. Der Arduino Sketch erwartet ein LCD 16x2 (SD1602 HUOB-XA). Die Dekodierung erfolgt mit Hilfe der Bibliothek FlexiTimer2.h. Der Kopf der Software zeigt folgende Zeilen:

/****************************************************************
RTTY DECODER FOR DDH47 (SPACE CANCEL FUNCTION)
5BIT-BAUDOT-CODE, 50baud
LCD 16x2 (SD1602 HUOB-XA)
** THIS PROGRAM IS IN THE PUBLIC DOMAIN **
/****************************************************************/

Das übersichtlich geschriebene Programm - insbesondere das Timing - lässt sich leicht in andere Umgebungen einbauen. Ein träges 2x16 LCD-Display ist für Wettermeldungen nur bedingt geeignet. Mit einem 240x240 TFT mit SPI Ansteuerung sind dagegen 9600 Baud und 48x30 oder 30x15 Zeichen kein Problem, wenn eine Lupe bereit liegt.


Software Serial Terminal aus fremder Feder
Die Ansteuerung des ST7789-Displays erfolgt mit der sehr schnellen Bibliothek Arduino_ST7789_Fast.h aus der Feder von cbm80amiga, scheinbar laut Google ein Kollege aus Warschau. Auch benötigt wird Adafruit_GFX.h. Der enthaltene Beispielsketch ST7789_terminal.ino beginnt mit folgender Bekanntmachung:

// Serial terminal display (VT100)
// 30x15 screen with 8x16 font
// ST7789 & RRE library example
// (c) 2019 Pawel A. Hernik
// YT video: https://youtu.be/Z4PMT5wUhMw
// Use case: https://youtu.be/a1vxOkcO5Fw

Der Autor zeigt in vielen weiteren Bespielen die Geschwindigkeit seines optimierten Codes für dieses Display. Ein 16 MHz-Arduino kann damit schon beeindrucken.

Der Sketch wurde an wenigen Stellen so verändert, dass jeweils in der unteren Zeile sichtbar geschrieben wird und bei Überlauf alles einmal nach oben gescrollt wird. Ein blinkender Cursor kam hinzu, der aber wegen der fehlenden XOR-Funktionalität des Displays nur teilweise einem Terminal-Cursor entspricht. Für diese Anwendung wurden die Escape-Sequenzen des VT100 entfernt.


Software aus eigener Feder
Der Anteil aus eigener Feder ist sehr gering. Zunächst müssen lediglich beide Sketche so angepasst werden, dass der RTTY-Decoder auf dem ST7789 ausgibt. Ein Zeichenfolgen-Detektor (Variable dect) kam ad hoc hinzu, um die Folgen RYRY, ZCZC und NNNN im einlaufenden RTTY-Strom zu erkennen. Der Sinn ist das Schalten von LED, wie im Funktionsblock angegeben. So leuchtet eine grüne LED, wenn RYRY empfangen wird. Damit lässt sich ein Ton-Detektor eventuell abgleichen währen der Testschleifen des DWD. Die anderen beiden Zeichenfolgen stehen für Anfang und Ende einer Meldung. Damit sollte die Aufzeichnung der einlaufenden Daten auf einer SD-Karte realisiert werden. Aufgrund von Speicherplatzmangel, durch die SD-Bibliothek hervorgerufen, wurde die Integration dieser Funktion fallen gelassen. Die Aufzeichnung erfolgt dadurch in einem weiteren autargen Modul, was dann auch für andere serielle Aufzeichnungen Verwendung finden kann. Die laufende Meldung wird durch die zweite LED angezeigt. Schließlich erscheinen die Daten aus den beiden Eingangskanälen neben dem Display auch am seriellen Sendeausgang TX, um weitere Module versorgen zu können, wie die genannte ausgelagerte SD-Karten-Aufzeichnung.

Der Gesamtsketch für 30x15 Zeichen, wie er im Prototyp läuft, ist hier als Klartext einzusehen.


Mehr zum Thema
Arduino Morse-Decoder
Arduino RTTY-Decoder
Arduino RTTY-Recorder
Tondetekor XR2211
TA7642-LW/MW-Radio
DCF-Funkuhr mit dem Radio
Mit 200 mW um die Welt
Eigener Mittelwellensender

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt