WSPR Signaltest mit Arduino

WSPR Signal-Informationen und -Kodierung

Eine WSPR – Standard-Aussendung besteht stets aus einem Rufzeichen, einem QTH-Locator(4-stellig) und der Sendeleistung des WSPR-Senders in dBm das ist alles. Beispiel:

DL0RI JO40 23

Diese Informationen werden in 162 quartäre Kanalsymbole (Ziffern 0,1,2,3) gepackt, welche durch vier verschiedene Träger – Frequenzen innerhalb einer Bandbreite von ca. 6Hz realisiert werden, d.h. die vier Träger liegen sehr dicht beieinander (Schmalband 4-FSK Modulation). Die Dauer der Aussendung für ein Kanalsymbol dauert jeweils 683ms, so dass für die Übertragung insgesamt 162 * 0,683s = 110,6s nötig sind. Die Kodierung selber ist ein Thema für sich; dafür steht ein frei erhältliches Programm zur Verfügung (Dank dem Erfinder von WSPR, Joe Taylor, K1JT !), welches als Eingabe die Sende-Information erhält, hier z.B. DL0RI JO40 23, und in der Ausgabe ein Textfile liefert, welches die 162 Kanalsymbole für diese Eingabe enthält.

Für einen Test soll nun ein einfacher Versuchsaufbau für eine Aussendung im 10m Band realisiert werden. Für WSPR Aussendungen ist dort ein 200 Hz breiter Kanal reserviert (28,126 000 MHz – 28,126 200 MHz). Dort legen wir unser Signal in die Mitte (28,126 100 Hz). Die vier Trägerfrequenzen für die Kanalsymbole 0,1,2,3 liegen jeweils genau 1,46 Hz auseinander; für die Übertragung eines WSPR-Signals werden dann ca. 6 Hz Bandbreite beansprucht. Folgender Frequenzplan ergibt sich dann:

 

Was es jetzt nur noch braucht ist ein frequenzgenau einstellbarer Oszillator (z.B. Si5351, steuerbar über den I2C-Bus), einen Feldeffekttransistorfür die Signalverstärkung inklusive Tiefpass (zur Vermeidung von Störungen anderer Funkdienste in höher gelegenen Frequenzbereichen).

Beispiel des zeitlichen Verlaufs der Kanal-Symbol-Übertragung

Ein Mikrocontroller(Arduino UNO), übernimmt die zeitliche Steuerung und Frequenzeinstellung am Oszillator, indem er die 162 Kanalsymbole nacheinander abarbeitet und für jedes Kanalsymbol die entsprechende Trägerfrequenz am Oszillator für jeweils 0,683ms einstellt.
Die 162 Kanalsymbole, in denen die codierte WSPR-Information enthalten ist (Rufzeichen, QTH, Leistung) werden im Arduino-Programm in einer  Liste abgelegt:

          byte symbols[162] = {1,3,2,2,2,2,0,2,…….. };

Ebenso die vier Oszillatorfrequenzen für die Symbole 0,1,2,3:

          unsigned long long frequency[4] = {f0,f1,f2,f3}; mit

f0 = 28126097,81 Hz
f1 = 28126099,27 Hz
f2 = 28126100,73 Hz
f3 = 28126102,19 Hz

Der Oszillator wird dann über die beiden Listen gesteuert. Möglich macht das eine formidable Arduino Programm-Bibliothek Etherkit Si5351 Library von Jason Milldrum, NT7S (https://github.com/NT7S/Si5351), mit der die Oszillatorfrequenz mit dem Befehl

          si5351.set_freq(frequency[val]);

erforderlich genau eingestellt werden kann – thanks a lot, Jason! Um nun den Oszilator gemäß Kanal-Symbol-Liste steuern zu können, wird mittels einer Laufvariable i  über eine Schleife das jeweilige Symbol aus der Liste ausgewählt und das so lange, bis alle 162 Symbole abgearbeitet sind.

          for (byte i=0; i< 162; i++){
si5351.set_freq(frequency[symbols[i]]);
}

Da es für den zeitlichen Ablauf einer Aussendung strenge Regeln gibt – gestartet darf eine Aussendung nur sekundengenau zu jedem ganzzahligem Minutenanfang) – bedarf es noch einer genauen GPS-Uhr (Smartphone-Uhr, PC-Netzzeit, etc.) und eines Schalters zum Starten einer Aussendung. Das Arduino-Programm findet man hier.

Hardwaremodule:

Si5351 Oszillator mit TXCO, Tiefpassfilter, QRPLabs Shield, Arduino

 

Den Rest erledigt die Software und der Operator, mit einem Taster und der QPS-Uhr zum Starten der WSPR-Sendesequenz bewaffnet. WSPR Sendesequenzen sind ca. 110,6s lang und müssen exakt zum Beginn jeder geradzahligen Minute gestartet werden. Das wird hier von Hand erledigt und reicht für Testzwecke völlig aus. Die Ergebnisse können dann auf wsprnet.org/drupal/wsprnet/spots nahezu zeitgleich nach der Aussendung besichtigt werden.
Protokollierung der WSPR-Sendungen bei DB0ZDF
Wem – verständlicherweise – das Starten der Aussendung mit Stoppuhr und Schalter keinen Spaß mehr macht, der kann den zeitlichen Ablauf mittels eines GPS-Moduls steuern, was aber ein anderes Thema ist.

Ein hervorragend ausgearbeitetes und vom Konstrukteur betreutes Projekt für eine automatisch arbeitenden WSPR Bake findet man unter http://www.qrp-labs.com.

 

zurück zu WSPR mit WebSDR

weiter zu WSPR mit Soundcard + TX