Die kleine Arduino-Bastelei: Fünf Taster für den Yaesu FT857
5 Taster zur Belegung mit Kommandos oder Frequenzen an der CAT-Schnittstelle
Der beliebte Transceiver kommt mit opulenter Menüstruktur daher. Ein paar externe programmierbare Tasten, die das Funkgerät über die CAT-Buchse steuern, können die Bedienung wesentlich erleichtern. Ein Arduino kommt zum Einsatz – für alle, die nicht programmieren wollen, sei schon jetzt entwarnt: Mögliche individuelle Änderungen werden detailliert erklärt.
Manche Einstellung ist im Menü versteckt. Sollen bestimmte Menüeinstellungen desöfteren verändert werden, ist das recht umständlich. Das Bedienkonzept sieht zudem nicht vor, dass ein Frequenzwechsel auf Tastendruck erfolgen kann. Abhilfe schaffen fünf Taster, ein kleiner Mikrocontroller und ein wenig Software. Damit ist es möglich, im Rahmen der Yaesu-CAT-Kommandos Funktionstasten zu definieren und den TRX mit einem Tastendruck in den gewünschten Zustand zu versetzen. Auf jede Taste lassen sich ein oder mehrere CAT-Befehle legen, die nach Betätigung des Tasters an den TRX übertragen werden und diesen steuern. Dabei kann es sich um einen simplen Frequenzwechsel handeln – legen Sie Ihre Lieblingsfrequenzen auf die Taster und ersparen sich einige Kurbelei. Komplexere Einstellungen, beispielsweise die Contest-Vorbereitung des TRX auf Split-Betrieb für das 20-m-Band sind mit wenigen Befehlen, die einer Taste zugeordnet wurden, leicht realisierbar.
Bild 2: Simpel: Arduino, 5 Taster und etwas Spannungsversorgung (siehe Text).
Die Hardware
Der Verdrahtungsplan zeigt einen Arduino Nano als Kern der Schaltung sowie die fünf angeschlossene Taster. Sie beziehen ihre Versorgungsspannung aus dem 5-Volt-Ausgang des Arduino Nano. Wird ein Taster betätigt, wird der entsprechende Port D3…D7 des Arduino Nano auf Masse gezogen und damit LOW. R1 bis R5 können Werte von 4700 Ohm bis wahlweise 10kOhm annehmen.
Der Arduino Nano selbst enthält auf seiner kleinen Platine alles nötige, um den Mikrocontroller Atmel ATmega328P zu betreiben und zu programmieren: Da ist zunächst der ATMega328P mit 32 kByte Arbeitsspeicher, ein Quarz, der USB-Anschluss zur Arduino-Programmierung sowie einige Leuchtdioden zur Anzeige von Versorgungsspannung und Betrieb auf den Datenleitungen Rx und Tx des UART. Der im Verdrahtungsplan gezeichnete Spannungsregler kann bei einer Eingangsspannung von weniger als 10 Volt entfallen. Bezieht man die Versorgungsspannung über die CAT-Buchse des TRX (13,8 Volt), ist der zwischengeschalteter Spannungsregler mit 9 Volt ratsam, um die Verlustleistung des winzigen Reglers auf der Arduino Nano-Platine zu entlasten. Die Diode im Eingang dient als Verpolungsschutz, die Kondensatoren vor und nach dem Spannungsregler sind unkritisch – man wählt die Werte nach Bedarf, beispielsweise 100µF vor dem 7809 und 100nF dahinter.
<- Bild 3: Belegung der Yaesu857 CAT-Buchse, wenn man von hinten auf das Funkgerät schaut. Quelle: Yaesu Manual.
Das Testprogramm
Soll der Aufbau der Schaltung einem Sendebetrieb stand halten, ist ein Metallgehäuse und eine abgeschirmte Verdrahtung zum TRX Pflicht. Nachdem die Schaltung verdrahtet, der CAT-Stecker gelötet und alles geprüft wurde, sollte ein Testprogramm die Basisfunktionen sicher stellen. Doch zuvor muss das Funkgerät konfiguriert werden. Die CAT-Buchse auf der Rückseite kann wahlweise mehrere Funktionen erfüllen, etwa zur Steuerung einer Linearendstufe, eines Tuners oder wie hier zur CAT-Steuerung. Ebenso muss die Geschwindigkeit der Kommunikation (Baudrate) mit der des Arduino-Programmes übereinstimmen. Diese Einstellungen nehmen Sie lt. Tabelle 1 in den Menüs 19 und 20 des TRX vor.
Nun kann man das Arduino-Testprogramm Nano_Cat_Test.ino (zum Download verfügbar, s.u.) in den Arduino-Projektordner kopieren, die Arduino-Programmierumgebung (Arduino IDE) starten und das Programm dort laden. Beim Einstecken des USB-Kabels in den PC sollte sich unter Windows ein virtueller COM-Port einrichten. Alsdann sind das verwendete Board und der virtuelle COM-Port einzustellen. Ist das geschehen, kann das Programm kompiliert werden. Das sollte ohne Fehlermeldung geschehen. Nach dem Kompilieren und der Übertragung des Programms auf den Arduino Nano mittels USB-Kabels sollte der TRX – sofern alle Kabel richgtig angeschlossen sind - sich etwa alle 10 Sekunden auf eine andere Frequenz einstellen. Das Betätigen der Tasten führt im Testprogramm noch zu keinerlei Reaktion.
Neben dem Basistest der Hardware kann das kleine Programm einen zusätzlichen Zweck erfüllen: Sie können es als Scan-Programm für ihre Lieblingsfrequenzen benutzen, welche der Transceiver zyklisch aufruft.
<- Bild 4: Der Arduino Nano ist klein, bringt alles Benötigte mit und passt in kleine Gehäuse.
Die Software
Interessanter ist allerdings die Software, welche die Taster abfragt. Es wurde einigen Aufwand getrieben, um die Tasten zu entprellen. Die Zeit, in der ein Taster betätigt wurde, wird gemessen. Ist die Zeit kürzer als die eingestellt Prellzeit von derzeit 50 ms, geschieht nichts. Bei längerem Tastendruck wird die Betätigung als gültig erkannt und die zum Taster zugeordneten Befehle an den TRX gesendet. Die Software bietet die hier nicht genutzte Option, kürzere und längere Betätigung der Taster zu erfassen und entsprechend unterschiedlich darauf zu reagieren. So könnte das Drücken eines Tasters von 1 Sekunde eine andere Kommandosequenz zum TRX senden als bei 2 oder 3 Sekunden. Zur Übertragung der Kommandos wird der Hardware-UART (die serielle Schnittstelle) des Prozessors verwendet.
Kopieren Sie auch dieses Programm Nano_Cat_5Taster von der ausgepackten Zip-Datei (unten zum Download) in den Arduino-Projektordner ihrer Festplatte. Laden Sie es in der Entwicklungsumgebung, kompilieren es und übertragen es auf den Nano. Mit Betätigung eines Tasters sollte der Transceiver reagieren. Ist das geschafft, können Sie das Programm ihren Wünschen individuell anpassen.
Änderunge und Anpassungen
Sicherlich möchten Sie als erstes die den Tasten zugeordneten Frequenzen anpassen wollen. Dazu gibt es zu jedem der fünf Taster eine solche Sequenz wie hier am Beispiel des Tasters 1 gezeigt:
if(taster_1_millis > PRELLZEIT) { // min. 50 ms wurde die Taste gedrückt // Mach was, nachdem Taster 1 gedrückt wurde... setFreq(607000); // 6070 kHz (Angabe in 10 Hz) sendCmd(am); // AM einstellen //...weitere Befehle... taster_1_millis = 0; }
Im Beispiel oben wird er TRX auf die Frequenz 6070 kHz des DARC-Radios eingestellt und anschließend auf AM-Empfang geschaltet. Beachten Sie bitte, dass die Frequenz innerhalb der Klammer des setFreq-Kommandos mit 10 Hertz-Genauigkeit angegeben wird. Aus 6070 kHz werden also 6070000 Hertz und streicht man die letzte Null, ist die Angabe für den sendFreq-Befehl korrekt. Zwischen der Kommentarzeile „//Mach was…“ und vor „//weitere Befehle“ fügen Sie Ihre TRX-Kommandos ein bzw. ändern vorhandene ab.
Andere Taster haben unterschiedliche Prellzeiten. Um die Prellzeit anzupassen, finden Sie etwa am Anfang des Programms die Zeile:
#define PRELLZEIT 50 // in Millisekunden
Es sind 50ms als Prellzeit eingestellt, Ändern Sie die Angabe, beispielsweise auf 100 ms, dann sollte auch ihr Taster nicht mehr prellen.
Welche Befehle als den zur Frequenzeinstellung können Sie noch verwenden? Im Programm finden Sie die Liste der Kommandos in folgender Form:
Die Liste enthält eine Untermenge der Yaesu-CAT-Befehle. Hiermit schalten Sie die PTT oder den Clarifier ein und aus, wählen die Betriebs- bzw. Modulationsarten wie CW, AM, FM, SSB, DIG und Packet und Sie sperren mit dem LOCK-Befehl den VFO-Knopf gegen verdrehen. Möchten Sie im Programm die PTT ein- oder ausschalten, schreiben sie:
sendCmd(ptt_on); bzw. sendCmd(ptt_off);
Beachten Sie bitte die Groß- und Kleinschreibung der Befehle! Schreiben Sie statt sendCmd alles klein, gibt es einen Fehler!
Und dann gibt es im Programm noch vordefinierte Frequenzen, die sehen beispielsweise wie folgt aus:
Hier ist eine Bytefolge definiert, wie sie das Programm zum Transceiver schickt, um diesen auf 144,675 MHz einzustellen. Man sieht gut, wie die 144675 kHz auf die ersten vier Bytes aufgeteilt werden. Das eigentliche Kommando zur Einstellung der Frequenz ist dann 0x01. Wenn Sie möchten, können Sie sich eigene Bytefolgen definieren. Detaillierte Informationen über den Befehlssatz finden Sie in der Yaesu-Dekumentation des Transceivers. Das Kommando zum Senden der Bytefolge lautet dann so:
sendCmd(f144675);
Auf diese Weise können Sie alle Yaesu-Befehle in das Programm einbinden und aufrufen. Falls es um das Einstellen einer Frequenz geht, ist der Befehl setFreq() jedoch leichter anzuwenden.
<- Bild 5: Ist kein Nano zur Hand, kann man beispielsweise auf einen Arduino UNO zurück greifen.
... auch mit Arduino UNO
Sollten Sie keinen Arduino Nano besitzen, aber auf einen Arduino UNO zurückgreifen können, können Sie den Verdrahtungsplan unverändert umsetzen. Im Verdrahtungsplan sind die Arduino-Pins mit D3 etc. bezeichnet – das ist Arduino Pin 3. Auf der UNO-Platine ist der Pin mit der „3“ gekennzeichnet. Auch das Programm bedarf keiner Änderung. Wenn es denn ins Gehäuse passt… Vor dem Kompilieren der Programme ist als Board natürlich der Arduino UNO zu wählen. Der UNO bietet zudem der Vorteil, dass der Spannungsregler entfallen kann, eine Buchse zur Spannungsversorgung ist auf der UNO-Platine vorhanden.
Möchten Sie die Taster an andere Pins Ihres Arduino-Boards anschließen wollen, so ist das mit nur einer kleinen Änderung im Programm möglich. Ziemlich weit oben stoßen Sie auf die folgende Sequenz:
Das bedeutet, dass der Taster 1 an den Arduino Pin 3 angeschlossen ist. Auf manchen Arduino-Platinen (oft bei Klons) ist der Pin drei alternativ mit D3 bezeichnet. „D3“ und „3“ sind hier als identisch zu betrachten. Schließen Sie beispielsweise Ihre Taster an die Ports 8 bis 12 eines Arduino UNO an, ersetzen Sie die Ziffern 3 bis 7 durch 8 bis 12. Wer sich schon etwas besser mit den Arduinos auskennt, weiß nun, wie man das Programm an jede Arduino-Platine anpassen kann.
Mit nur wenig mehr Aufwand lässt sich die Zahl der Taster erhöhen: Im Programm stoßen Sie für die Taster 1 bis 5 auf die immer wiederkehrenden Variablendefinitionen und Befehlsfolgen. Sie unterscheiden sich lediglich durch die laufende Nummer. Mit ein wenig Copy and Paste ist es leicht, weitere Taster hinzuzufügen. Damit nichts durcheinender gerät, muss man lediglich penibel darauf achten, dass der neu kopierte Block die richtige laufende Tasternummer erhält.
Andere Transceiver
Schaltung und Programm lassen sich für ähnliche Yaesu-Transceiver wie den FT897 oder den FT817 verwenden, da diese denselben Befehlssatz aufweisen. Mangels Verfügbarkeit der Geräte wurde das Programm jedoch am FT857 getestet.
Für Programmierer
Diese beiden Sketche verzichten auf die Nutzung einer Programmbibliothek zu Gunsten einer einfachen Handhabung der Programme für den Arduino-Einsteiger. Mehr Funktionalität zur Steuerung des TRX bietet die FT857D-Lib von James Buck, VE3BUX, auf https://www.ve3bux.com. James hat alle Yaesu-CAT-Kommandos in dieser Klasse umgesetzt, das Beispielprogramm FT857_Cat_Test1.ino zeigt deren Anwendung. Es benutzt SoftwareSerial mit dem Vorteil, beliebige Port-Pins zur Kommunikation nutzen zu können. Auf dem Arduino-Nano ist diese Flexibilität für dieses kleine Projekt nicht gefordert. Weitere Hinweise bietet die Dokumentation auf seiner Webseite.
Die Arduino-Programme finden Sie unten in der Download-Datei. Viel Spaß beim Tüfteln und Programmieren!