Sonntag, 21. Februar 2021

Ein SDR Funkempfänger für den Dachstuhl

Inspiriert von den vielen Amateurfunkempfängern die mittlerweile online für jeden zugänglich sind möchte ich Ähnliches für das 2m Band, 70cm und die Kurzwellenbänder realisieren. Die Empfangsstation soll zusammen mit den Antennen unter dem Dach angebracht werden, und im eigenen Heimnetzwerk fernsteuerbar sein. Das Bild unten zeigt die Anlage vor der Montage unter dem Dach.


Zum Einsatz kommen zwei DVB-T TV-Empfänger Sticks mit RTL2832U+R820T2 Chipsatz von DollaTek . 


Der erste RTL-Stick wird direkt für das 2m Band (144-146 MHz) und 70cm (430-4440 MHz) verwendet, da sich der R820T Chip von 25 MHz bis 1700 MHz tunen lässt. Der andere Stick soll für den Kurzwellenempfang verwendet werden. Dazu wird ein 125MHz RF-upconcerter vorgeschaltet.  Zum Einsatz kommt der Ham It Up v1.3 Barebones von Nooelec. 

Der Upconverter wird zum Schutz gegen Störstahlung in eine Blechdose montiert.


Die Sticks habe ich zusätzlich mit Alufolie umwickelt.


Die Steuerung der RTL-Sticks erfolgt mit einem Rasperry Pi 4 , auf dem auch die SDR Sofware läuft. Den Raspberry 4 habe ich zur besseren Kühlung in ein altes Schaltnetzteil mit Lüfter eingebaut. Ohne Lüfter steigt die mit 'vcgencmd measure_temp' ausgelesene Prozessortempertur auf bis zu 70°C. Mit Lüfter bleibt sie bei ca. 30°C. 


Desweiteren ist im Gehäuse eine externe USB Soundkarte von UGREEN 


sowie eine 256GB SSD-Festplatte von Intenso und der zugehörige 2,5-Zoll-SATA-Festplatten Adapter  verbaut.

 


Die gesamte Anlage kann mit einem Homematic Funkschalter HM-LC-Sw1PBU-FM  stromlos geschaltet, und anschließend neu gestartet werden. Den Funkschalter habe ich in die hauseigene FHEM Steuerungsoftware integriert.


Der Empfang von 2m und 70 cm erfolgt mit einer kommerziell erhältlichen Diamond X-30N Antenne. Das Bild unten zeigt die Antenne im montierten Zustand.


Für den Kurzwellenempfang habe ich eine quadratische Loop Antenne aus 1mm starkem Kupferdraht an den Balken des Dachstuhls aufgespannt. Das Bild unten zeigt schematisch die Abmessungen und den Einspeisepunkt.

Unter der Randbedingung, dass gegenüber dem Einspeisepunkt ein Strombauch zu liegen kommt, ergibt sich folgende Stromverteilung für das 40m, das 20mm und das 10 Band. 


Es ist leicht zu erkennen dass am Einspeisepunkt kein Strommaximum zu liegen kommt, der Eingangswiderstand der Antenne also eher hochohmig ist. Um die Kurzwellenantennendrähte halbwegs gematcht an den Upcoverter anschließen zu können verwende ich daher einen kleinen 1:9 Balun

Das Bild unten zeigt den Balun in einem kleinen gedruckten Gehäuse verbaut, und mit angeschlossenem SMA-Stecker.


Benötigt werden desweiteren diverse pigtail Adapter, z.B MCX auf N-Buchse für den Anschluß der 2m/70cm Diamond X-30N Antenne, MCX auf SMA für den upconverter, und SMA auf SMA Verlängerungen.

Doch nun zur Installation der nötigen Software. Zu Beginn muss Raspberry Pi OS auf der SD Karte installiert werden. Ich nutze den Raspberry Pi Imager für Windows und folge den Installationsanweisungen.

Zusätzlich zur üblichen Konfiguration des Raspberry wie dem Setzen eines neuen user und root Passwortes, dem Aufsetzen einer WLAN Verbindung und so weiter, installiere ich mit 'sudo apt-get install xrdp' noch xrdp um die remote desktop Funktion von Windows nutzen zu können. Die weitere Installation kann nun remote erfolgen.

Um die DVB-T Sticks als preiswertes Software Sefined Radio (SDR) mit einem Empfangsspektrum das über den Empfang von DVBT(2) Frequenzen von 470 MHz bis 690 MHz hinausgeht einsetzen zu können muss das Softwarepacket rtl-sdr instaliert werden. Wir holen uns die Dateien von GitHub mit 'git clone git://git.osmocom.org/rtl-sdr.git'


Dann mit 'cd rtl-sdr' ins angelegte Verzeichnis wechseln und mit 'mkdir build' ein Unterverzeichnis 'build' anlegen. Dort 'cmake ../ -DINSTALL_UDEV_RULES=ON' ausführen, gefolgt von 'sudo make' und 'sudo make install'. Mit 'lsusb' lassen wir uns alle USB devices anzeigen und wir können die RTL-Sticks anschließend mit 'rtl_test -t' testen. Device_ID RTL=0 habe ich für Kurzwelle über den upconverter vorgesehen, Device_ID RTL=1 ohne upconverter für z.B. 2m und 70cm. 

Nun folgt die Installation der SDR Software Gqrx. Dazu auf dem Raspi Desktop einfach unter Einstellungen - Add/Remove Software nach Gqrx suchen, und die Software installieren. Die Software erscheint dann unter 'Internet' auf dem Desktop.

In Gqrx muss dann 'Realtek RTL2838UHIDIR SN:0000001' als Eingabegerät ausgewählt werden, und die digitale Signalverarbeitung (DSP) kann mit dem 'Play' Kopf gestartet werden. Damit das Audiosignal am Klinkenstecker des Raspi ausgegeben wird, muss unter Umständen mit 'sudo raspi -config' unter System S2 'Audio auf Klinke' eingestellt werden. In Gqrx regelt 'audio gain' dann die Lautstärke. Die  Bilder unten zeigen z.B. den Empfang des Rundfunksenders Bayern3 ohne angeschlossene Antenne


und ein Frequenzspektrum im 49m KW Rundfunkband mit angeschlossenen Loop Antenne.


Gqrx bietet die Möglichkeit raw audio Dateien per udp Protokoll zu streamen. Dazu muss unter 'udp setup' der hostname (192.168.178.29) des empfangenden Rechner eingetragen werden. Mit dem VLC media player lasst sich der Stream dann z.B. wiedergeben. Hierzu muss "udp://@:7355" unter 'Medien - Netzwerkstream öffnen' als Netzwerkadresse eintragen werden. Allerdings ist meine 820.11n WLAN Verbindung mit bis zu 150 Mbit/s und tatsächlichen 144 Mbit/s netto zu langsam für den stream.

Um die Audiodaten in komprimierter Form übertragen zu können, und weil xrdp keine Audioübertragung zulässt, habe ich daher einen Mumble server auf dem Raspberry aufgesetzt. Mit 'sudo apt-get install mumble-server' erfolgt die Installation, und mit 'sudo dpkg-reconfigure mumble-server' kann der Server konfiguriert werden. Bei 'Autostart' habe ich 'Yes' ausgewählt, bei 'High Priority' ebenfalls. Dies gewährleistet das Mumble immer höhste Prriorität hat, auch wenn der Rechner mit vielen anderen tasks beschäftigt ist. 

Mit sudo nano /etc/mumble-server.ini kann die *.ini Datei aufgerufen werden, und z.B. unter 'welcomeText' der Begrüßungsstext geändert werden. Nach Ausführen von 'sudo /etc/init.d/mumble-server restart' ist der Server einsatzbereit.

Zusätzlich muss auf dem Raspberry und dem entfernten Rechner ein Mumble client aufgesetzt werden. Die Installation auf dem Raspberry erfolgt mit 'apt-get install mumble'. Meine Settings sind in untenstehender Graphik gezeigt.


Für den entfernten Rechner kann ein Installationspaket für z.B. Win 10 Mumble1.3.3 heruntergeladen und installiert werden. Es empfiehlt sich das Mikrofon des empfangenden Rechner stumm zu schalten. 

Der Raspberry als sendender Rechner verfügt selbst über kein Mikrofon. Ich habe daher eine kleine USB Soundkarte verbaut, und habe den Audioausgang über eine Klinkensteckverbindung an den Mikrofoneingang zurückgeführt. 

In der '/boot/config.text' habe ich durch Auskommentieren von 'hdmi_force_hotplug=1' zuerst die Audioausgabe über HDMI erzwungen, und dann in der raspi-config unter System, 'default audio' auf die USB Soundkarte umgelenkt. Alle Audiosignale werden nun in komprimierter Form auf den remote Rechner übertragen.

Um die Audiodaten dennoch im raw Format aufzeichnen zu können, habe ich eine 256GB SSD Festplatte in das Raspberry System eingebunden. Ich bin im wesentlichen der Anleitung hier gefolgt. Als erstes habe ich mit 'ls -l /dev/sd*' versucht die Festplatte zu identifizieren. Sie ist bei mir als '/dev/sda' zu finden. Danach wird die Festplatte mit 'sudo fdisk /dev/sda' partitioniert. Man wählt n = new, p = primäre Partition usw. bis schließlich w = schreiben. Anschließend wird mit 'sudo mkfs.ext4 /dev/sda1' formatiert, und mit 'cd /media' und 'sudo mkdir ssd' ein Unterverzeichnis für die Festplatte im Dateisystem angelegt. Dieses wird mit 'sudo mount /dev/sda1 /media/ssd' gemounted. Schließlich habe ich mit 'sudo chmod -R a+rwx /media' Rechte für Alle vergeben.

Im clip unten ist eine so aufgenommene Sendung und von China Radio International in portugiesischer Sprache zu hören. 


Wie eine Recherche auf short-wave.info ergibt ist der Senderstandort Peking mit einer Leistung von 500W. Insbesondere in den Abendstunden ist der der Empfang aus Sudostasien und Südamerika auf Bändern von ~60m bis 25m gut möglich

Zur (Fern)streuerung von gqrx gibt es diverse scripts. Zum Frequenzscannen z.B. gqrx-scan.

Zunächst müssen Pearl prerequisites installiert werden. Dies geschieht mit 'sudo apt-get install libnet-telnet-perl'. Dann wird das scanner script mit 'git clone https://gitlab.com/khaytsus/gqrx-scan' heruntergeladen. Das script das gqrx fernsteuert liegt nun im gqrx-scan Unterverzeichnis.

Der Befehl './gqrx-scan --type gqrxfile --pause 0.2 --wait --delaylevel=-35 --delaytime 0.5 --record' durchläuft z.B. die gqrx bookmarks mit einem zeitlichen Abstand von 0,2 Sekunden. Bei einem Signallevel von mehr als -35dB stoppt der scan und eine Aufnahme beginnt. Aufgenommen wird so lange bis das Signal wieder unter -35dB fällt, aber mit einer Verzögerung von 0,5 Sekunden. 

Aufnahmeort ist der in gqrx eingestellte Ort für Audiodateien, hier also /media/ssd. Als vernünftige Squelch Einstellung hat sich -37dB erwiesen, damit für einen delaylevel von -35dB tatsächlich etwas zu hören ist.


Und so sieht die fertig installierte Anlage dann aus. Der Aufbau ist bewusst 'fliegend' gehalten, damit Erweiterungen einfach möglich sind. 


Den Stahlblechdeckel des alten Computernetzteils habe ich nachträglich durch eine Kunststoffplatte ersetzt um die WLAN Anbindung des Raspberry zu verbessern. Da ich beim Gehäusebau häufig auf 3D Druck zurückgegriffen habe, seinen abschließend auch hierauf  einige Sätze verwenden.

Mit FreeCAD habe ich z.B. zwei kleine Winkel als Halterungen für den Raspberry Einplatinencomputer konstruiert, oder das bereits gezeigte Gehäuse für den Balun und ein Gehäuse für den Unterputz Funkschalter. Flowwies bietet ein gutes FreeCAD Tutorial auf seinem Youtubekanal  an.


Um den Körper sinnvoll als *.stl Datei exporieren zu können wechselt man in die 'Mesh Workbench', wählt 'Netze', und dann 'Netz aus Form erstellen'. Hier klickt man den 'Standard' mesher an, und übernimmt erstmal alle Einstellungen. Es wird nun ein Netzobjekt genau über dem ursprünglichen Objekt erstellt. Um die Triangulierung erkennen zu können kann man das ursprüngliche Objekt ausblenden und unter 'Ansicht'-'Zeichenstiel'- 'Flache Linien' wählen. Erscheint die Triangulation nicht ausreichend dicht kann der 'deviation value' des meshers erniedrigt werden.

Die so erzeugt Datei kann nun in die sclicing Software für den 3D Drucker geladen, und der entsprechende gcode erzeugt werden. 



Viel Spaß beim selber bauen und beim experimentieren mit Software Defined Radio!



Keine Kommentare:

Kommentar veröffentlichen