Arduino: Intelligenter Antennen Selektor

Nachfolgend beschreibe ich einen überarbeiteten Antennen Selektor der mittels CAT Verbindung mit Funkgeräten verbunden werden kann, die mit dem Protokoll von Icom cv-i kompatibel sind.

Der intelligente Antennen Selektor sorgt dafür, dass abhängig von der gewählten Frequenz am Funkgerät die passende Antenne verbunden wird. Das manuelle Umschalten entfällt und wird somit durch den Micro-Controller erledigt.

Bedienung und Programmlogik

Die Bedienung bzw. die Programmlogik des Antennenumschalters funktioniert wie folgt:

  • Mit den Tasten Up/Down kann jeweils eine Antenne (ein Relais) aktiviert werden.
  • Geht das Funkgerät auf Senden (PTT wird low) - ist das Umschalten der Antenne aus Sicherheitsgründen gesperrt.
  • Zusätzlich wird pro Frequenz Band (!) die gewählte Antenne separat gespeichert. Dies erfolgt automatisch nach einer Verzögerung von einigen Sekunden.
  • Die aktuelle Frequenz (QRG) wird aus der CAT Verbindung mittels Icom cv-i ausgelesen. Der Arduino ist rein lesend am Bus. Er sendet KEINE Telegramme in den Bus. Ändert sich die aktuelle Frequenz QRG, wird diese am LCD angezeigt. Zusätzlich wird ermittet ob sich dadurch auch das Frequenzband geändert hat.
  • Bei einer Bandänderung (durch Änderungen der QRG) wird auf die definierte Antenne umgechaltet.
  • Wird eine Frequenz außerhalb eines definierten Bandes angewählt, so wird die Antenne NICHT geändert. Die Antenne kann dann aber immer mit Links/Rechs geändert werden.

Beispiel: LCD Anzeige: Das Funkgerät wird auf eine Frequenz von 21.1151 gestellt, der Intelligente Antennen Selektor schaltet automatisch auf die Antenne A um:

Mit den Up / Down Tasten kann eine andere Antenne aktiviert werden:

Nach einer kurzen Verzögerung wird die Antenne B zum Band 15 gespeichert.

Goodies

  • Bei CAT Aktivität (neue QRG Meldungen im cv-i Format) wird dies am LCD kurz angezeigt (so wie im Sketch von ON7EQ)
  • Werden Werte im EEPROM gespeichert wird dies kurz am LCD angezeigt (ählich wie im Code von ON7EQ)

Änderungen

In meinem Sketch sind folgende Änderungen gegenüber dem Sketch von ON7EQ enthalten

  • Wird längere Zeit keine QRG empfangen erscheint ein "Offline Indikator" links in der oberen Zeile. Damit sieht man, dass die Verbindung zum Funkgerät abgebrochen ist (oder längere Zeit keine Frequenzänderung vorgenommen wurde).
  • Jeder Antenne kann man im Sketch einen "sprechenden" Namen geben.
  • Als CAT Schnittstelle zum Funkgerät kann wahlweise Soft-Serial (für den UNO), oder eine HW-Serial (für den MEGA) verwendet werden. Dazu reicht die Änderung eines precompiler #define.
  • Da der OM für den ich das programmiert habe, keine abweichenden  RX - TX Antennen wollte, ist dies aktuell im Sketch nicht unterstützt. Wenn du dir den Code genauer ansiest, wirst du einige Vorbereitungen dafür sehen. Wenn das wirklich ein Feature ist, ohne dem andere nicht auskommen, dann könnte dies auf Anfrage realisiert werden.
  • Ab dem Einschalten ist eine Antenne (ein Relais) aktiv. Wenn das nicht gewünscht ist, kann dies relativ einfach im Sketch geändert werden. Die "Default" Antenne muss nicht zwangsweise am ersten Ausgang hängen.
  • Die Anzahl der Ausgänge ist eigentlich primär durch die verfügbaren Pins beschränkt. Ein UNO hat 13 "Digital" pins und 5 "Analog" Pins. Der Sketch verwendet bis zu 3 Usertasten, einen PTT Eingang, zwei GPIOs für das I2C Display, die zwei 2 HW-Serial/USB belege ich nie und für die Kommunikation zum Funkgerät sperre ich auch 2 Pins (auch wenn wie angeführt TX nicht verwendet wird). 23 - 10 = 13 freie Pins. Ein Variante mit 8 Pins habe ich selber gebaut.
  • Wegen dem Mehr an Ausgängen musste der Aufbau der zweiten Zeile angepasst werden. Es wird nur mehr die aktuelle Antenne angezeigt. Wie oben angemerkt, im Code kann auch eine Klartextbezeichnung (8 Zeichen) angegeben werden.
  • Wer weiterhin die "alte Antennenanzeige" von ON7EQ mit 5 Antennen haben möchte, braucht eigentlich nur die Funktion displayShowAntenna() anpassen und die zwei Custom Characters wieder anlegen. Eine alternative Funktion ist im Sketch enthalten.
  • Der Sketch aktiviert die internen Pullups für die Eingabe-Taster, externe Pullup Widerstände werden daher nicht benötigt (sollten aber auch nicht stören).
  • Meine verwendete LCD library bietet mehrere Schnittstellen an. Quasi "Standard" ist zwar I2C, aber man kann mit der gleichen Library das LCD auch parallel verbinden oder ein RGB LCD anschließen. Die LCD Library findet man auch auf meiner Homepage. Deutschprachige Leser mögen auf alle Fälle mal einen Blick auf diese Version werfen (Stichwort öäü im Fließtext ...).
  • Die Variablenbezeichnungen haben sich großteils geändert, lauten aber ähnlich wie bei ON7EQ, ein Umstieg soll daher leicht von der Hand gehen.
  • Der Auswertungsteil wurde von "Pete & SAM " übernommen. Das ist so aufgebaut wie gut in den "Serial Basics 2" im Arduino Forum beschrieben. Ehrlich, das hätte ich auch nicht anders gemacht. Die Änderungen sind dort nur marginal.
  • In der restliche Programmlogik gibt es keine GOTO mehr. Ich verwende teilweise OOP und überwiegend Funktionen. Damit werden Redundanzen im Code (Code Duplikate) vermieden. Auch sollte dadurch der Umbau auf ein 20x04 LCD leichter fallen.
  • Und last but not least: Der Sketch kompiliert mit einer aktuelleren Arduino IDE (Anfang 2021 ist das z. B. die 1.8.13).
  • Hinweis: Der Download wird erst in ein paar Tagen zur Verfügung stehen, ich muss noch ein paar Bereinigungen vornehmen

Hardware

Die Schaltung wurde in ein altes Tuner Gehäuse verbaut da die Schirmung eines Metallgehäuses gewünscht war und eine transparente Front für das Display vorhanden war:

Der Innenaufbau gibt nicht viel her. Ich verwende das originale Netzteil, zwei Step-Down Wandler für 5.5V und 12V (als Steuerspannung für die Relais-Ausgänge), ein I2C LCD, einige der originalen Tasten und eine 8 fach Relaiskarte:

Zum Ansteuern der Antenennmatrix verwende ich eine 8 fach Relais-Karte. Das Klicken der Relais gibt auch eine akustische Rückmeldung, dass bei einem Bandwechsel die Antennen umgeschaltet wurde. Es wurde kein einziges Dupont-Kabel verwendet, alle Leitungen wurden verlötet/mit Schrumpfschlauch versehen.

Für die CI-V Schnittstelle wurden zwei Stereo-Klinkenbuchsen verbaut. Das externe PTT Signal wird auf Cinch einer Buchse eingelesen und auch auf einer zweiten wieder weitergegeben. Damit kann der Intelligente Antennen Schalter einfach in ein bestehendes Setup eingebunden werden.

Am Tranceiver (hier ein ICOM IC-7300) muss die CI-V Schnittstelle auf 9600 Baud aktiviert werden

Hinweise zum ICOM CI-V

Die CAT Schnittstelle unterscheidet sich je nach Hersteller. Bei ICOM ist das ci-v ein Protokoll ähnlich der seriellen Schnittstelle, jedoch nicht mit RS232 Pegel sondern mit TTL. Die Baudrate kann meist am Funkgerät eingestellt werden. Ich verwende (wegen Soft-Serial) 9600. Die Beschreibung des Protokolls findet man im Internet. Das vorliegende ICOM sendet die Frequenz nur bei Änderungen. Möchte man auf einem PC mitlesen soll auf HEX umgestellt werden. Die CAT Telegramme bei ci-v  beginnen mit 0xFE 0xFE und enden mit 0xFD. Mein Sketch wertet  nur Frequenzinformation aus.

Alternativen (mit Rückblick auf ältere Versionen) - Credits

Abschließend noch die Information auf den Urheber: 2011 hat ON7EQ bereits einen "ARDUINO intelligent antenna matrix switch" vorgestellt. Der Code ist auch auf seiner Homepage verfügbar kompiliert aber nicht mehr mit einer aktuellen Arduino IDE. Auf seiner Seite gibt es noch einen stark überarbeiten Sketch mit dem Verweis auf "Pete & Sam" ZS6SAM.  Auch dieser benötigt Anpassungen damit er sich mit einer aktuellen IDE kompilieren lässt. Der Code von Sam wurde vermutlich für den Arduino MEGA erstellt. Während der Anpassungen habe ich dann den Entschluss gefasst, die meisten Teile neu zu schreiben. Auf der Homepage von DM2RM gibt es eine Variante des ursprünglichen Codes mit dem Umbau auf ein I2C Display. Aber auch dieser compiliert nicht mit einer aktuellen IDE. Interessant auf seiner Seite ist der sauber gezeichnete Schaltplan.

Resümee

Von der Programmierung abgesehen (die Aktualisierung hat eigentlich mehr Aufwand verursacht als ein "fertiger Sketch" vermuten lassen wurde). Am meisten Zeit ist eigentlich in den Hardware Aufbau eingeflossen. Obwohl umfangreich mit dem PC getestet, hat sich dann auch die eigentliche Inbetriebnahme am ICOM IC-7300 in die Länge gezogen. Die Verbindungseinstellungen am IC-7300 konnten schließlich mit einer Direkt-Verbindnung Verbindung Funkgerät -> TTL-USB Wandler -> Laptop geklärt werden und anschließend hat auch der Intelligente Antennen Selektor wie geplant funktioniert.

Links

Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Affiliate/Provision-Links. Wenn du auf so einen Verweis klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine (kleine) Provision. Für dich verändert sich der Preis dadurch nicht. Ich empfehle nur Produkte die ich selber besitze und wenn ich überzeugt bin, dass sie für andere Maker interesssant sind.

History

First upload: 2021-02-20 | Version: 2021-02-25