CW-Betrieb ohne Morsekenntnisse
Senden und Empfangen mit Android Smartphones/Tablets
In Bearbeitung
Stand: 5. Dezember 2016

   automatic translation by GOOGLE:
https://translate.google.de/translate?sl=de&tl=en&js=y&prev=_t&hl=de&ie=UTF-8&u=http%3A%2F%2Fwww.kh-gps.de%2Fcw.htm&edit-text=

CW-Betrieb war für mich eigentlich nie ein Thema. Weil es seinerzeit aber noch keine Lizenzklasse gab, die nicht auch Morsekenntnisse verlangte, musste ich es vor vielen Jahren zwangsläufig auch lernen. Ein QSO wurde von mir in dieser Betriebsart allerdings NIE geführt. Im Rahmen der Beschäftigung mit Amateurfunkanwendungen für ARDUINO-Mikrocontroller bin ich nun aber doch auf  Projekte gestossen, bei denen es um die Codierung und Decodierung von Morsezeichen ging. Dabei interessierte es mich zumindest in technischer Hinsicht und wenn eingefleischte CW-Freaks auch die Nase rümpfen mögen, bei weniger Routinierten kann der Einsatz entsprechender elektronischer Hilfsmittel m.E. durchaus auch sehr hilfreich sein.

Decodierung von Morsezeichen mit LCD-Anzeige

Zuerst ging es um Anwendungen zur Decodierung empfangener Morsezeichen. Warum das Rad neu erfinden, wenn so etwas an anderer Stelle schon erfolgreich realisiert wurde? So stiess ich auf die Projekte von Budd, WB7FHC*. Zur Ausgabe empfangener Daten können bei seinen Programmversionen sowohl standardmäßige 20x4-, als auch 16x2 Zeichen-LCD's zum Einsatz kommen. Besonders interessant fand ich dabei auch die von ihm realisierte automatische Geschwindigkeitserkennung für ankommende Morsezeichen. 
Vor ihrer Verarbeitung mit einem Mikrocontroller werden empfangene Morsetonsignale bei vorliegendem Projekt zuerst noch in binäre Impulse gewandelt. Dazu werden die weit verbreiten PLL-Schaltkreise der Typen LM567 bzw. NE567 verwendet. Sie sind sehr einfach einsetzbar und decodieren hier Tonfrequenzen, die üblicherweise im Bereich von etwa 600-800Hz liegen. Über eine am Ausgang des IC's angeordnete LED lässt sich das Decodieren dabei zumindest grob verfolgen.

* Die von mir als Ausgangsbasis verwendete WB7FHC-Decoder-Software Version 1.4 stammt aus dem Buch "Arduino™ Projects for Amateur Radio"
   von Dr. Jack Purdum, W8TEE und Dennis Kidder, W6DQ.
Die Sketches aus genanntem Buch sollten über die Link [6] erreichbar sein.


Abb.1  Morsezeichen-Empfangs- und Sendeanrordnnng

Budds Software ist ohne weitere Anpassung grundsätzlich auf allen Typen von ARDUINO-Mikrocontrollerboards lauffähig, so diese den Prozessor ATMEL328p verwenden. Hierzu gehören neben dem "UNO" und seinen Varianten vorallen auch der "NANO" und der "Pro-Mini" in der 5V-Version. Für meine ersten Versuche ( Abb.1 und hier nur Sektion 1 ) benutzte ich erst einmal einen "UNO". Die Elektronik zur Tondecodierung mit dem LM567 wurde unter Verwendung eines auf das UNO-Board steckbaren sog. Prototypen-Shieldes realisiert. Derartige Platinen gestatten eine universelle Bauteilebestückung entsprechend jeweiliger Anforderungen. Weiterhin aufgesteckt werden ein sog. LCD-KEYPAD-Shield von Fa. DFROBOT [3] mit seinem 16x2 Zeichen-LC-Display nach HD44780. Dazu sei noch darauf hingewiesen, dass die Anordnung der bei Nutzung dieses Shields zur LED-Steuerung verwendeten Verbindungsspins nicht mit der im Original-Quellcode vorgesehenen Aufteilung übereinstimmt, so dass hierfür auch noch eine geringfügige Modifikation des Quellcodes erforderlich wird. Dafür lässt sich bei Verwendung des LCD-Shields und nur einem Minimum an zusätzlich erforderlicher Verdrahtungsarbeit eine komplette CW-Decodereinheit realisieren. Im Gegensatz zu Versionen mit 20x4-Zeichen-Display erlaubt die Verwendung von 16x2-Zeichen-Versionen zwar nur einen etwas eingeschränkten Anzeigebetrieb, belohnt dafür aber durch ihre Kompaktheit. Abb.2 zeigt das entsprechende Anzeigeformat mit Ausgabe der erkannten Morsegeschwindigkeiten ( WPM = words per minute ) in Zeile 1 und dem als Lauftext erscheinenden Empfangsdaten in Zeile 2.

Abb.2  Darstellung am 16x2-Zeichen LC-Display mit
Geschwindigkeitsanzeige und horizontalem Textscrolling


Morsesignalauswertung mit ANDROID Smartphones bzw. Tablets
Schon bei früheren Projekten hatte ich mich mit der Übertragung serieller Daten via BLUETOOTH beschäftigt. Für wenige Euros erhältliche BLUETOOTH-Transceiverbausteine wie z.B. der "HC-06"erlauben dabei auf einfachste Weise den Aufbau drahtloser Datenverbindungen zwischen z.B. ARDUINO-Boards und ANDROID-Smartphones bzw. Tablets. Nachdem über GOOGLE PLAY auch geeignete Terminalprogramme verfügbar waren, begann ich mit Versuchen zur Weiterleitung von Ausgangssignalen unseres Morsedecoders auch in Richtung Smartphone. Nach dem Einfügen nur einer zusätzlichen Programmzeile stellte das Programm von WB7FHC decodierte Empfangssignale auch als Folge einzelner ASCII-Zeichen zur Verfügung. Mit einer Datenrate von 9600bps waren sie am seriellen UART-Ausgang des verwendeten Prozessors verfügbar und ihrer unmittelbaren Weiterleitung an den seriellen Dateneingang der BT-Bausteine stand nichts mehr im Wege.

Zum Aufbau von Bluetoothverbindungen zwischen zwei Teilnehmern ist vorher einmalig ein sog. "PAIRING" durchzuführen, wobei sich beide Partner quasi kennenlernen. Initiiert wird dieser Vorgang ausgehend von der als "Master" arbeitenden Seite, was in unserem Fall immer das Smartphone- bzw. Tablet ist. Wird am Androiden nach erfolgreichem "PAIRING" ein Terminalprogramm gestartet, so kann dort eine Auswahlliste mit allen dem Gerät bekannten Pairingpartnern aufgerufen werden. Darunter sollte auch der Name unserer mit dem Mikrocontrollerboard zusammengeschalteten BT-Gegenstelle zu finden sein. Somit könnte das im vorliegenden Fall z.B. "HC-06" sein. Zum Verbindungsaufbau genügt dann eine entsprechende Anwahl und ggf. auch noch die zusätzliche Betätigung einer CONNECT-Taste. Anschliessend sollten decodierte Morsezeichen auch auf dem Display des Smartphones bzw. Tablets erscheinen.
Die verfügbaren Terminalprogramme können sich durchaus in wichtigen Parametern auch voneinander unterscheiden. Auch sind für unsere Anwendung nicht unbedingt alle Versionen optimal geeignet. Um die einzelnen Betriebsmöglichkeiten optimal ausschöpfen zu können, ist es daher immer sinnvoll, sich zuerst einmal das Konfigurationsmenü ( engl. oft auch "SETTINGS" genannt ) genauer anzuschauen und einzelne Einstellungen samt der sich danach ergebenden Resultate ggf. auch auszutesten. Neben einer Auswahl zur Displaydarstellung bei horizontal oder vertikal positioniertem Gerät lässt sich oftmals auch die Grösse dargestellter Zeichen in zumindest einigen Stufen wählen. Sinnvoll dürfte es bei unserer Anwendung immer auch sein, die automatische Displayabschaltung zu deaktivieren.  



Abb.3   ANDROID-Terminalprogramm zeigt via Bluetoothverbindung ankommende und vom CW-Decoder ausgegebene ASCII-Zeichenfolgen.
 ( CW-Signal stammt von einer für Testzwecke benutzten Sendebbake );
siehe auch die Eingabezeile für aussendbare Zeichen, die Sendetaste und die fünf Tasten zum Abrufen vorabgelegter Textsequenzen

   
Das von mir bevorzugte Terminalprogramm ist unter dem Namen "BlueTooth Serial Controller" im GOOGLE PLAY STORE zu finden und erlaubt die schon genannten Funktioen. Abb.3 zeigt ein Darstellungsbeispiel. Im grossen Hauptfenster werden empfangene Zeichen sichtbar. Interessant ist hierbei auch die automatischen Wordlängenerkennung, die verhindert, dass Teile von Worten nicht verteilt über zwei Zeilen dargestellt werden. Als sehr nützlich hat sich auch die Möglichkeit erwiesen, ankommende Textsequenzen bei Bedarf auch per Logging-Funktion im Speicherbereich des Smartphones/Tablets ablegen zu können.    
Am unteren Rand des Displays ist eine Eingabezeile und eine Sendetaste zu erkennen. Für den Empfangsbetrieb ist das zwar ohne Bedeutung, aber in Hinblick auf späteren Sendebetrieb wird hierüber im nächsten Abschnitt noch zu berichten sein.

Aussendbare Morsetexte via ANDROID Smartphone bzw. Tablet eingegeben

Wer sein Smartphone/Tablet nicht nur zum Empfang, sondern auch zur Ausgabe von Textsequenzen benutzen will, der wird bei den meisten Terminalprogrammen dazu auch eine Ausgabezeile finden. Üblicherweise kann dabei zwischen Ausgaben im ASCII- oder im HEX-Format gewählt werden. In de meisten Fällen nutzen wir den ASCII-Mode und können dabei beliebige Zeichenfolgen vorschreiben, wobei ihre serielle Ausgabe erst auf zusätzlichen Tastendruck erfolgt. Dadurch kann mit dem Schreiben von Antworttexten bei Bedarf auch schon während des Empfangsbetriebes begonnen werden.
Das schon erwähnte Terminalprogramm
"BlueTooth Serial Controller" erlaubt dabei eine Unmenge von Konfigurationsmöglichkeiten. Besonders interessant fand ich dabei auch die Möglichkeit, fünf beliebige vorabgelegte Zeichenfolgen durch einfachen Tastendruck abrufen zu können. Dabei lassen sich aussendbare Texte von z.B. CQ-Rufen, Testendungen, Operatorvorstellungen oder auch Beschreibungen seiner Stations- und Antennenanlagen abspeichern.  
Vom Androiden ausgegebene ASCII-Zeichenfolgen werden via Bluetoothverbindung übertragen und liegen
daraufhin mit einer Datenrate von ( defaultmäßig* ) 9600bps am TxD-Ausgang unseres HC-06-Moduls an. Zur Wandlung in Morse-Tastsignale lässt sich nun wiederum eines kleines ARDUINO-Programm verwenden. Hierzu wurde ich bei Alastair, GW0AJU [7] fündig. Seine Originalsoftware verarbeitet serielle ASCII-Eingangssignale und steuert damit einen DDS-Baustein des Typs AD9850. Bei seiner Version erfolgt die Ausgabe von CW-Tastsignalen danach auf einer fest im Programm abgelegten Radiofrequenz. Dieses Programm habe ich stark abgespeckt und nur den Teil übernommen, der die Wandlung serieller Eingangssignale in Tastsignale beinhaltet.
Selbstverständlich würde es an dieser Stelle naheliegend sein, das vorhandene Empfangsprogramm einfach nur um auch den Sendemodus zu erweitern, aber hier bin ich zumindest vorerst auf Schwierigkeiten hinsichtlich der zeitlichen Abläufe gestossen. Somit werden Empfangs- und Sendebetrieb vorerst noch über zwei separate ARDUINO-Boards abgewickelt. Nachdem die von mir hierzu favorisierten "ProMini" zumindest in China für unter Euro 2 erhältlich sind, ist das zumindest kostenmäßig auch kaum von Nachteil.

* "defaultmäßig" = "dem Lieferzustand entsprechend"

Kombinierbarkeit der einzelnen Funktionseinheiten

Die Schaltbilder Abb.1 und Abb.4 zeigen die einzelnen Funktionseinheiten. Geht es nur um Morse-Empfangsbetrieb mit einer "LCD-Stand-Alone-Einheit", so wird dazu lediglich die Sektion Nr.1 in Abb.1 benötigt. Wie schon oben erwähnt, besteht der Vorteil dieser Variante in ihrer einfachen Realisierbarkeit, die lediglich das Zusammenstecken von einem Basisboard mit zwei Shields erfordert.
Sollen empfangene Morsedaten dagegen auch zu einem Smartphone/Tablet weitergeleitet werden, so ist die Bluetootheinheit gem. Sektion Nr.2 hinzuzufügen.
Wenn danach ausschliesslich Smartphone/Tablet-Auswertung gewünscht wird, so ist das auch ohne ein angestecktes LCD-Shield möglich.
Sektion Nr.3 ist eine Einheit zur Verarbeitung von ASCII-Zeichen, die via Bluetooth eintreffen werden. Nach entsprechender Wandlung erfolgt dabei eine Ausgabe als Morse-Tastsignale. Bei gewünschtem Nur-Sendebetrieb von Morsezeichen können die Einheiten gem. Nr.2 und 3 auch separat eingesetzt werden. Mit etwas abgewandelter Software ist eine Baugruppe gem. Sektion Nr.3 auch als eigenständige Sendebake mit fest im Programmcode abgelegten Zeichenfolgen, Geschwindigkeitswerten und Pausenzeiten realisierbar.

Hier auch noch ein kurzer Hinweis auf das Originalkonzept von WB7FHC: Budd verwendet vorzugsweise 20x4 Zeichen-LCD's, wobei dann auch das von ihm vorgesehene Zeilenscrolling Sinn macht. Für eine erweiterte Version mit dem Namen "Morseduino2" [5] sind aus den USA übrigens auch fertig geätzte und gebohrte Platinen erhältlich [4].



Abb.4  Universelle CODEC-Variante gem. Text

Die Variante gem. Abb.4 verwendet zwei ARDUINO-Prozessor-Boards des Typs "Pro-Mini". Dabei wurden die Sektionen Nr.1-3 auf einer gemeinsamen Platine gem. Abb.5 untergebracht. Zur direkten Anzeige von Empfangsdaten lässt sich bei Bedarf aber zusätzlich auch noch ein separates LCD-Display gem. Sektion Nr.4 anschliessen. Insgesamt sind dafür acht Querverbindungen erforderlich und grundsätzlich lassen sich sowohl 16x2-, als auch 20x4-Zeichen-Displays anschliessen. Nachdem der 5V-Ausgang der Pro-Mini-Boards nur sehr eingeschränkt belastbar ist, wurde hier zur Displayversorgung ein separater Spannungsregler des Typs 7805 vorgesehen. Ansonsten entsprechen die Funktionen der CODEC-Variante gem. Abb.4 aber auch derjenigen von Abb.1.
Abschliessend sei noch erwähnt, dass mit beschriebener Hardwareanordnung und passender Software zumindest empfangsmäßig auch eine RTTY-Version realisierbar sein würde.



Abb.5   Layout von CODEC gem. Abb.4 ( enthält nur Sektionen 1-3 )

Nachbau

Die von mir modifizierten bzw. erweiterten ARDUINO.INO-Sketches der DECODER- und ENCODER-VERSION lassen sich hier herunterladen. 
Die Einzige ggf. noch zusätzlich zu installierende Library ist die zur Steuerung der LCDisplays in die Decoderversion benötigte  <LiquidCrystal.h>.

....... und noch etwas:
Nach Bestellung von IC's des Typs "LM567" hatte ich von einem bedeutenden inländischen Lieferanten Exemplare erhalten, die mit der Bezeichung: "KA567L" gestempelt waren. Sie erlaubten generell auch irgendwelche Tondecodierungen ( die am Ausgangs beschaltete LED blinkte ), aber im Falle der oben vorgestellten Projekte wurde ihr Ausgangssignal von den nachgeschalteten Prozessoren nicht wunschgemäß verarbeitet ( was mich viele Stunden und einige graue Haare kostete ). Erst ein Ersatz durch "LM567CN" ( hier vom Hersteller NS = NATIONAL SEMICONDUCTORS ) brachte dann den Erfolg.

Linkliste

[1]  https://www.qrz.com/db/WB7FHC
[2]  http://gemander.org/2015/03/31/cw-decoder-nach-wb7fhc/
[3]  https://www.dfrobot.com/index.php?route=product/product&product_id=51 
( dieses Produkt gibt es auch von verschiedenen inländischen Lieferanten )
[4]  https://oshpark.com/shared h_projects/kKda72m3
[5]  https://www.youtube.com/watch?v=O9W-_yENSzQ
[6]  https://www.mhprofessional.com/9780071834056-usa-arduino-projects-for-amateur-radio-group
[7]  https://sites.google.com/site/radiohamtechnology/arduino-qrp-beacon

E-Mail contact via: