Elektronik

Radio-Empfang mit DVB-T-Sticks und Elektor SDR-Shield

Der Radio- und Funkempfang mit billigen DVB-T Sticks bietet beeindruckende Möglichkeiten zu kleinem Preis. Zum Beispiel: viele Leute verfolgen gerne live Flugzeuge am Himmel im Internet mit dem Flightradar:

Wenige wissen aber , dass diese Positionen nicht von den Fluggesellschaften bereitgestellt werden. Vielmehr sind es Enthusiasten, die mit Funkempfängern die Positionsmeldungen (ADSB) empfangen und ins Internet einspeisen. Dies nur so als Seitenhieb an diejenigen, die keine Antennen wollen, aber diese Dienste dann doch gerne nutzen.

Von Nachteil bei vielen Empfangsstationen ist aber der dazu nötige PC (und/oder ein teures Funkgerät): Vor allem bei autonomen Dauerbetrieb würden Stabilität und Stromverbrauch unangenehm auffallen. Es ist deshalb nicht verwunderlich, dass man sich nach anderen Möglichkeiten umgeschaut hat. Die digitale Signalverarbeitung stellt aber schon einige Ansprüche; eine einfache Decodier-Platine kann es nicht sein. Das teure Funkgerät kann man sich trotzdem schon häufig ersparen.


Elektor SDR Shield

Auf halben Weg zum Ziel „PC-lose Empfangsstation“ steht das neu aufgelegte Elektor Arduino SDR Shield, das immerhin schon die digitale Signalverarbeitung ab Antenne bis hinunter zur Niederfrequenz (in den Audiobereich) übernimmt. Die Decodierung/Interpretation der Signale erledigt diese Platine aber nicht, dazu ist noch ein „PC-ähnliches Gerät“ nötig ([4,7]). Der Bedienung per Fernsteuerung – z.B. via eine Webseite – steht damit auch nichts mehr im Wege([5]).

Für den Empfang von Kurzwellen-Radio (AM) findet man auf den Seiten von Burkhard Kainka eine kleine analoge Schaltung. Zugegeben viel Aufwand fürs Kurzwellen-Radiohören, das geht auch einfacher (Simple AM and Short Wave Radio Projects for Beginners).

Es handelt sich um eine Aufsteckplatine (Shield) für Arduino Uno und kompatible Mikrocontroller.

Die technischen Daten sind:

  • Versorgungsspannung 5V und 3.3 V
  • Frequenzbereich: 150 kHz bis zu 30 MHz
  • Sensibilität: 1 μV
  • Totale Lautstärke: 40 dB
  • Max. Antennensignal: 10 mV
  • Dynamischer Bereich: 80 dB

Die Platine ist in einigen Artikeln ausgiebig beschrieben:

  1. Elektor Heft 2016/7 Seite 80 resp. https://www.elektormagazine.de/magazine/elektor-201607
  2. http://www.elektronik-labor.de/HF/SDRshield.html
  3. http://www.b-kainka.de/sdrusb.html (Beschreibung zum originalen Projekt von 2007)
  4. https://www.elektor.de/elektor-sdr-reloaded-150515-91
  5. https://www.elektormagazine.de/news/sdr-shield-fur-arduino
  6. https://www.elektormagazine.de/news/das-neue-sdr-von-elektor Einführungsvideo
  7. https://www.elektormagazine.de/news/los-gehts-mit-dem-elektor-sdr-shield Empfang verbessern
  8. http://www.elektronik-labor.de/HF/G8JCFSDR.html neues Frontend im Stil eines Funkgeräts von G8JCF
  9. http://www.elektronik-labor.de/HF/IQdetektor.html AM-Demodulator für IQ-Signale

Das Elektor SDR Shield am PC

Für den Anschluss an den PC (zur einmaligen Programmierung) ist kein Adapter nötig. Die Arduino IDE muss noch mit dem Board Package erweitert werden, damit sie die richtigen Einstellungen setzt (mit dem Boards Manager: Tools -> Board -> Boards Manager, siehe [8]). Danach kann die Elektor Firmware geladen werden.

Der NF Ausgang ist als Klinkenstecker ausgeführt. Die NF wird über eine externe Soundkarte in den PC gegeben und an eine SDR Software weitergereicht (ich benutze SDR#, [7]). Die Details sind immer etwas trial-and-error (Wahl des Mikrofon-Eingangs, Pegel des Mikrofons, Einstellung des Windows Soundmappers…) bis es klappt. Im SDR# erscheinen die Soundkarten mehrfach mit verschiedenen Treibern und manchmal sind es zuviele, sodass die passende nicht ausgewählt werden kann. Über den „Soundmapper“ sollte es aber gehen.

Die Frequenzwahl erfolgt

  •  per seriellem Terminal: man muss nur die Frequenz in kHz senden (z.B. „7310“)
  • oder mit einem VB Script von Elektor


Frequenzeinstellung mit Nextion Touchscreen Display

Das VB Programm zur Frequenzeinstellung schickt im wesentlichen nur die Frequenz im Klartext über die serielle Schnitttelle an den Arduino. Der  Code auf dem Arduino übernimmt die mühevolle Berechnung der diversen Si5351 PLL Register. Diese einfache Aufgabe (die Übermittlung der Frequenz) könnte auch ein intelligentes Touchscreen Display übernehmen, z.B.  ein Nextion Display. Das ist jetzt mein Vorhaben.

Die Komponenten: ein Nextion Plus Display, das Elektor SDR reloaded Shield auf einem Elektor Arduino R4, sowie ein verkabelter USB-Seriell Adapter

Für den Einstieg informieren wir uns beim Hersteller und bei böcker Systemelektronik (Link), siehe Links am Schluss. Besonders zu erwähnen sind die letzteren. Die mehrteiligen Tutorials gehen auf die Details der Displays und der Anbindung u.a. an Arduinos ein. Eine absolut erstklassige Einführung.

 

Programmierung des Displays

Das Nextion Display ist in 5v Technik gebaut und kommuniziert über den Serial Port. Daher verwende ich zum Anschluss an den PC einen USB-seriell Adapter von Sparkfun in 5V Ausführung, nicht das 3V Modell. Der Anschluss ist wie zu erwarten:

GND (schwarzes Kabel) des Nextion-Displays an GND  (Pin GND)
+5 V (rotes Kabel) des Nextion-Displays an 5 V (Pin +5 V)
TX (blaues Kabel) des Nextion-Displays an Pin RX
RX (gelbes Kabel) des Nextion-Displays an Pin TX

Beim PC kommt das übliche Spiel mit der Installation von Treibern, wir kennen das. Der Nextion Editor findet ein angeschlossenes Display automatisch. Der Editor ist etwas gewöhnungsbedürfig, man kommt aber schnell klar damit:

 

Das GUI des Prototyps

Die Tutorials von böcker (Link) helfen uns jetzt mit den Schritten

  • Schrift definieren und laden
  • Textfelder anlegen und gestalten (t0,t1,t2)
  • Buttons b1-b4 anlegen
  • Numernfeld n0 erzeugen
  • interne Variablen va0, fStart, freqstr anlegen

(der güne Button ist ohne Funktion). Grafisch ist das GUI jetzt fertig, es geschieht aber nichts. Für Action müssen wir die Events mit Code aufbuttern. Die 4 Buttons b1-b4 sollen die Anfangsfrequenz des Frequenzbandes setzen und seriell ausgeben. Im Detail:

  1. mit print wird die Frequenz als text auf den seriellen Port geschrieben
  2. die Variable fStart wird mit der Frequenz gesetzt und dem Anzeigefeld n0 übergeben. So wird sie angezeigt.
  3. zusätzlich wird sie die Startfrequenz für den Schieberegler h0, die auch in va0 festgehalten wird

Der Schieberegler addiert bei Bewegung den Stellwert zur Frequenz und speichert sie in va0. Der Stellwert ist zwischen 0 und 1000 (=1000 kHz) festgelegt.

Beim Loslassen wird die Frequenz in einen Text (String) konvertiert und seriell ausgegeben. Die Konversion ist notwendig, da sonst die Buchstaben hexadezimal geschickt werden.

Das wärs bereits für den Code! Complilieren und hochladen, Display vom PC abstecken.

Jetzt verbinden wir das Display mit dem R4. Beim Arduino R4 finden wir RX am Pin 0 und TX am Pin 1. Pin TX vom Nextion (blaues Kabel) muss an RX des R4, also Pin 0. Den 2. seriellen Port an en Pins 11/12 brauchen wir nicht.

Das ganze sieht jetzt so aus und funktioniert. Der USB Anschluss dient nur zur Stromversorgung.

 


Links SDR

  1. http://www.der-hammer.info/terminal/ leistungsfähiges Terminalprogramm
  2. Andreas Spiess The Swiss Guy – Epsiode 170
  3. SDR allgemein bei Wikipedia
  4. Gute Zusammenstellung zu SDR Empfangsmöglichkeiten inkl. Frequenvorschlägen von Markus Gerber
  5. Raspberry Pi als SDR Server für SDR#
  6. Datenformat Nextion Serial Port Details
  7. SDR# Software (Airspy)
  8. Arduino IDE für R4 anpassen

Links Nextion

  1. Test im Heft c’t 2016 Nr. 6 p. 76
  2. Sehr gute deutsche Tutorials von böcker Systemelektronik, Link auf die Sammlung
  3. Nextion Displays von Itead: allgemeines Wiki
  4. Swiss Guy gutes Video-Tutorial
  5. Itead Tutorial Arduino-Library
  6. Intelligenter Grafik-Touchscren, Make 5/2018 Seite 70ff.

Update 20181227

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.