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.
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.