
SSB mit HackRF One
Der HackRF
One hat sich bereits als Empfänger bewährt, wobei im einfachsten Fall
SDR Sharp verwendet wird. Das Gerät kann aber auch senden, und da steht
SSB an oberster Stelle. Wenn das geht, hat man auch FT8 und vieles mehr
im Griff. Als Werkzeug setze ich Gnu Radio ein. Dazu wurde RadioConda
installiert und läuft jetzt auch unter Windows. So kann ich Gnu Radio
Companion starten. Man verwendet dabei fertige Blöcke, verbindet sie passend und
stellt Parameter ein. Der Entwurf wird dann zu einem Python-Programm
kompiliert und ausgeführt. Zur Einführung habe ich diesen Kurs
angesehen: https://greatscottgadgets.com/sdr/
Nach vielen andern Übungen habe ich mich an einen Vorversuch zum Thema
SSB gewagt. Ich verwende zwei Blöcke vom Typ Signal Source, beides
sind Sinusgeneratoren. Der obere erzeugt die Trägerfrequenz 10 kHz als
komplexes Signal (Signalfarbe blau), also praktisch zwei Signale I und
Q mit einer Phasendifferenz von 90 Grad. Der untere liefert die
Modulationsfrequenz von 1 kHz und steht stellvertretend für das spätere
Mikrofon-Signal. Dieses Signal ist vom Typ float, besteht also aus
Realzahlen bis 1.
Das Modulationssignal durchläuft eine Hilbert-Transformation. So werden
die komplexen IQ-Signale erzeugt, wobei jede Frequenz genau um 90 Grad
verschoben wird. Hier passiert genau das, was ich mit einem RC-Phasenschieber
zur SSB-Erzeugung versucht habe, aber es passiert wesentlich präziser,
weil es auf reiner Mathematik basiert. Wie das genau funktioniert, habe
ich noch nicht verstanden. Aber ich kann den Hilbert-Block als Back Box
einsetzen.
Beide komplexe Signale werden dann multipliziert, und zwar Sample für
Sample mit der gemeinsamen Taktrate von 32 kHz. So bildet man einen
Mischer, oder genauer gesagt zwei Mischer für I und Q. Dabei sollte das
fertige IQ-SSB-Signal entstehen. Um es zu sehen, verwende ich den QT
GUI Frequency Sink, also praktisch eine FFT mit grafischer Ausgabe.
Und tatsächlich, bei 11 kHz sehe ich das Signal im oberen Seitenband,
der Träger bei 10 kHz ist völlig verschwunden, und das untere
Seitenband ist um fast 100 dB unterdrückt. Super, so genau hätte ich
das mit Hardware niemals hinbekommen. Dann also der nächste Schritt mit
einem echten Mikrofon und einem Sender im 20m-Band.
Für die Ausgabe verwende ich den Block Osmocom Sink, also eine
Datensenke, die meine Zwischenfrequenz-Daten mit einer Bandbreite von 4
MHz über USB an den HackRF One sendet. Dort wird das Signal mit 12 MHz
gemischt. Meine ZF liegt bei 2,15 MHz, sodass mein USB-Signal auf 14150
kHz erscheinen soll.
Die Sache wird etwas komplizierter, weil ich jetzt mit zwei
verschiedenen Abtastraten arbeiten muss. Die Soundkarte frage ich mit 8
kHz ab. Danach kommt ein Filterblock für den Bereich 300 Hz bis 3 kHz.
Dann folgt die Hilbert-Transformation und die FFT-Ausgane zur
Kontrolle.
Mit dem Block Rationial Resampler setze ich die Abtastrate von 8 kHz
auf 4 MHz um, indem jeweils 500 Werte interpoliert werden. Nur so kann
der Mischer (Multiplikation) mit dem ZF-Trägersignal von 2,15 MHz
funktionieren. Am Ausgang des Multipy-Blocks steht das fertige
SSB-Signal bei 2150 kHz und kann an den HackRF One übergeben werden.
Die FFT-Anzeige bestätigt, dass ein gutes SSB-Signal im oberen
Seitenband erzeugt wurde.
Das Antennensignal wurde mit dem Elektor SDR-Shield und SDR #
empfangen. Dabei kann ich mich selbst gut hören, weil das Signal durch
alle Puffer und Verarbeitungsschritte um ca. eine Sekunde verzögert
erscheint. Ob das noch verbessert werden kann, weiß ich nicht. Aber ich
kenne das Phänomen aus dem realen Amateurfunk. Wer digital arbeitet,
hat irgendwie eine verlängerte Reaktioniszeit bei der Umschaltung von
Empfang auf Sendung.
Ansonsten sieht das Signal sehr gut aus und hört sich auch perfekt an.
Vielleicht müsste man noch etwas bauen, um den Mikrofonpegel mit einer
ALC zu optimieren.