FT8 mit dem SDR-Shield  

Elektronik-Labor  Lernpakete  Projekte  HF  



Bisher konnte ich nur mit meinem SSB-Transceiver FT8-QSOs fahren. Mein Ziel war aber, auch mit einem Eigenbau-QRP-Transceiver auf der Basis des SDR-Shield FT8 zu machen. Den Start gab mir die JTEncode-Bibliothek von Jason Milldrum (https://github.com/etherkit/JTEncode). Damit ist die Sache im Prinzip ganz einfach: Man stellt den message-Text bereit, der dann mit jtencode.ft8_encode in den tx_buffer übersetzt wird. Dieser enthält dann Hexzahlen, von denen jedes Nibble für eine von acht Frequenzen steht. Sie liegen 6.25 Hz auseinander, sodass insgesamt eine Bandbreite von 50 Hz belegt wird. Alle 159 ms wird die Frequenz auf den nächsten Schritt geändert.

void encodeFT8()
{
char message2[] = "DM7RO DL7JD RR73";
char call[] = "DK7JD";
char loc[] = "JO31";
symbol_count = FT8_SYMBOL_COUNT; // From the library defines
tone_spacing = FT8_TONE_SPACING;
tone_delay = FT8_DELAY;
jtencode.ft8_encode(message, tx_buffer);

digitalWrite (txOn,1); //Relais
digitalWrite (keyOut,1); //keyOut
si5351.output_enable(SI5351_CLK2, 1);
si5351.output_enable(SI5351_CLK1, 0); //RX off
delay (500);

for(int i = 0; i < symbol_count; i++)
{
si5351.set_freq((freqFT8 * 100) + (tx_buffer[i] * tone_spacing), SI5351_CLK2);
delay(tone_delay);
if (digitalRead(key) == 0) break; //Abbruch mit Morsetaste
if (Serial.available()) break;
}
// Turn off the output
si5351.output_enable(SI5351_CLK2, 0);
si5351.output_enable(SI5351_CLK1, 1); //RX on
digitalWrite (txOn,0); //Relais
digitalWrite (keyOut,0); //keyOut
delay (1500);
}

Schwieriger war die sinnvolle Steuerung aus einem eigenen Programm. Wenn man WSJT-X mit einem SSB-Sender benutzt, wird ja der Zeitablauf mit den vorbereiteten Nachrichten automatisiert. Nun aber ist der Empfang vom Senden getrennt. Ich muss also die Nachrichten selbst zusammenstellen und das genaue Timing einhalten.



Zu diesem Zweck habe ich mein vorhandenes VB-Abstimmprogramm um die nötigen FT8-Elemente erweitert. Ein CQ-Ruf startet dann zum Beginn einer Viertelminute, also bei 0 s, 15 s, 30 s oder 45 s. Das funktioniert auch sehr gut, wie man an den Empfangsberichten im Bild ganz oben sehen kann. Offensichtlich kann man mir zwei bis fünf Watt sehr gut arbeiten.  




Schwieriger wird es, wenn eine Station antwortet. Ich muss dann ihr Rufzeichen aus dem Empfangsprogramm in mein TX-Programm kopieren und außerdem das SNR einstellen. Ein paar QSOs habe ich damit hinbekommen, aber es war sehr holperig. Bei umfangreichen Tests ist mit erst klar geworden, dass ich nur eine maximale Textlänge von 13 Zeichen verwenden darf. Dass WSJT-X scheinbar auch längere Nachrichten verschickt, liegt an eine ausgefeilten Komprimierung. Eine Nachricht wie  "RA2AL DK7JD R13" hat ja schon 15 Zeichen. Tatsächlich verwendet FT8 drei Datenblöcke für beide Rufzeichen und den Lacator (bei mir JO31). Deshalb müssen die Leerzeichen nicht mit übertragen werden. Und Zusätze wie der Rapport "R-17" oder der Gruß "RR73" werden im Hintergrund jeweils in einen besonderen Lacotor umgesetzt, wo mit hoher Wahrscheinlichkeit nie ein Sender stehen wird.

Meine eigenen Nachrichten sind aber auf Volltext mit maximal 13 Zeichen begrenzt. Das gibt schon mal Probleme mit Rufzeichen von mehr als 5 Zeichen Länge. Und Rapporte unter 0 dB scheitern am Minuszeichen, ein Zeichen zu viel. Ich habe mir viel Mühe gegeben, die Nachrichten so weit zu kürzen, dass es gerade noch geht. Aber dabei stoße ich immer wieder auf automatische Abläufe auch beim Empfangen, die meine Nachricht dann unterdrücken oder verstümmeln. Aus dem Grunde hat noch kein Funkfreund meinen Gruß mit 73 sehen können. Fazit: Es funktioniert zwar, aber noch nicht so wie es sollte.

Der erste Versuch
ist meist nicht genug.
(Ing. Dietrich Drahtos)

Aber ich habe schon eine neue Idee, wie es gehen könnte...



Elektronik-Labor  Lernpakete  Projekte  HF