Remote prevádzka rádiostaníc je čoraz bežnejšia, no pre CW Die Betreiber hatten eine unangenehme Einschränkung: Die Netzwerkkodierung bedeutete im Allgemeinen entweder einen Softwareschlüssel auf dem Bildschirm oder einen Kompromiss mit der Latenz, der die Qualität der CW-Übertragung bei höheren Geschwindigkeiten verschlechterte. Dan Pech OK1HRA, český rádioamatér a vývojár v Prusa3D, tento problém riešil od základov – výsledkom je Paddle2IP, open-source hardvérové zariadenie, ktoré pripojí klassische jambische Falle an eine entfernte Station über ein IP-Netzwerk mit kontrollierter Latenz und Beibehaltung des genauen Timings der Markierungen.
Sie werden im Artikel lesen
Hardwarebasis: M5Stack M5Dial
Paddle2IP basiert auf dem M5Stack Dial v1.1-Modul mit ESP32-S3-Mikrocontroller. Das Modul in einem kompakten runden Gehäuse integriert WLAN, einen 1,28-Zoll-Touchscreen, einen Drehgeber mit Taste und zwei Grove-Anschlüsse. Port B (GPIO2/GPIO1) dient zum Anschluss eines Trap-, Dit- und Dah-Kontakts mit internen Pull-Up-Widerständen, 100 Ω Serienwiderstand und 10 NF Filterkondensator an jedem Eingang. Port A ist optional: GPIO13 für Flachtaste, GPIO15 für Kopfhörer-Mithörton über RC-Filter und DC-Koppelkondensator. Der interne Summer am GPIO3 erzeugt einen Rückhörton mit einer einstellbaren Lautstärke im Bereich von 0-100 (Stufe 5 entspricht 2 dB). Wichtiger Hinweis: Die rote 5-V-Leitung des Grove-Anschlusses darf nicht an die Falle angeschlossen werden.
Warum M5Dial?
Die Wahl von M5Dial ist kein Zufall. Der Drehgeber dient zur direkten Einstellung der Tastengeschwindigkeit, der Touchscreen zeigt den aktuellen Verbindungsstatus und Parameter an und die WLAN-Konnektivität ist ohne externe Module integriert. Das gesamte Gerät hat die Abmessungen einer Scheibe mit einem Durchmesser von weniger als 5 cm und ist damit eine der kompaktesten Plattformen für diesen Zweck. Der Kompromiss besteht in der begrenzten Akkulaufzeit und dem Fehlen eines Ethernet-Anschlusses – für den stationären Einsatz gibt es eine Alternative in Form des USB-Netzwerkmodus.
Eine Demo von Paddle2IP in Aktion
Netzwerkprotokoll und Latenz
Paddle2IP leitet keine rohen Kontaktpressen weiter. Iambischer Schlüssel (Hafen von K3NG, CMOS Super Keyer timing) beží lokálne na jadre 1 ESP32-S3 ako neblokujúci stavový automat s tikom 1 ms. Generuje ideálne časové značky hrán - den Anfang und das Ende jeder Markierung und jedes Leerzeichens - und sendet diese Markierungen mit einem Zeitstempel über UDP (Port 5690) an den Server beim Radiosender. Tón sa ozve lokálne do 1 ms od stlačenia kontaktu, takže operátor počuje sám seba bez oneskorenia, zatiaľ čo sieťový prenos prebieha na pozadí.
Der Server empfängt Pakete und spielt Edges nach einer festen Playout-Verzögerung D ab, um Netzwerk-Jitter auszugleichen. Die empfohlenen Werte von D hängen von der Art der Verbindung ab: im LAN etwa 30 ms, bei guter Internetverbindung oder VPN 80-150 ms, über LTE 200 ms und mehr. Auf dem Gerätedisplay wird RTT (Round-Trip-Time) angezeigt – sowohl der aktuelle Wert als auch das 5-Sekunden-Minimum. Jedes Paket wiederholt die Kanten der letzten 500 ms, was die Widerstandsfähigkeit gegen den Verlust einzelner Pakete gewährleistet. Die Authentifizierung verwendet SipHash-2-4 mit einem 128-Bit-gemeinsamen Schlüssel, Nonce rotiert alle 5 Sekunden und Sequenznummern verhindern Replay-Angriffe.
Warum ein lokaler Schlüsselhalter der Schlüssel ist
Viele Remote-Lösungen senden rohe Tastenanschläge an den Remote-Server, auf dem der Keyer ausgeführt wird. Da die Latenz schwankt, führt dies zu unregelmäßigen Markierungen und Lücken. Paddle2IP kehrt dieses Prinzip um: Der Keyer läuft lokal und der Server erhält fertige, zeitlich korrekte Kanten. Selbst wenn ein Paket verloren geht, bleibt das CW sauber, da das nächste Paket alle Kanten der letzten halben Sekunde enthält. Die Grenze tritt ein, wenn die Ausspielverzögerung 500 ms überschreitet – der Bediener hört sofort den lokalen Mithörton, die Steuerungsbestätigung vom Funk erfolgt jedoch verzögert, was eine Anpassung der Gewohnheiten im schnellen Betrieb erfordert.
Benutzeroberfläche und Einstellungen
Der Drehgeber M5Dial dient zur Parametereinstellung direkt am Gerät ohne Computer. Die Tastengeschwindigkeit (WPM) ist von 5 bis 60 einstellbar, die Tonhöhe von 300 bis 1200 Hz (10-Hz-Schritte). Zur Auswahl stehen der Jambic-Modus A oder B, das Umschalten von Dit/Dah-Kontakten, das Drehen des Displays um 180° und eine Testfunktion, die „TEST“ mit einer eingestellten Geschwindigkeit sendet. Die Playout-Verzögerung D ist von 10 bis 1000 ms (in 10-ms-Schritten) einstellbar oder kann auf der Server-Standardeinstellung belassen werden.
Die Webschnittstelle auf Port 80 (zugänglich über http://paddle2ip.local) ermöglicht die Konfiguration von Wi-Fi-Netzwerken (bis zu vier gespeichert), die Generierung von Authentifizierungsschlüsseln, die Statusprüfung und die Firmware-Aktualisierung. Eine serielle Konsole mit 115.200 Baud stellt Diagnose- und Verwaltungsbefehle bereit.
Verbindungs- und Netzwerkoptionen
Die primäre Verbindungsmethode ist WLAN. Beim Start führt das Gerät einen Kanalscan durch (ca. 1,5 s) und verbindet sich mit dem stärksten gespeicherten Netzwerk. Sollte innerhalb von 20 Sekunden kein gespeichertes Netzwerk verfügbar sein, wird der Backup Access Point „Paddle2IP-XXXX“ mit dem Konfigurationsportal aktiviert. Der Modem-Ruhezustand ist ausgeschaltet – Latenz hat Vorrang vor Energieeinsparung.
Eine Alternative ist der USB-Netzwerkmodus: Der M5Dial enumeriert sich über TinyUSB 0.15.0 als CDC-NCM-Ethernet-Gerät. Der Computer teilt seine Internetverbindung über DHCP mit NAT. Dieser Modus ist unter Linux (Debian 13, GNOME) verifiziert, unter Windows und macOS noch nicht getestet. Wenn das USB-Netzwerk nicht innerhalb von 20 Sekunden eine DHCP-Adresse erhält oder der Server nicht innerhalb von 10 Sekunden antwortet, schaltet das Gerät automatisch auf WLAN um.
Für den Internetzugang ist serverseitig eine UDP-Portweiterleitung erforderlich. Auf der Paddle2IP-Seite wird kein eingehender Port benötigt, da das Gerät die Kommunikation initiiert. Carrier-Grade-NAT wird nicht unterstützt – in diesem Fall ist ein VPN-Tunnel die Lösung. Die Kommunikation erfolgt ausschließlich über IPv4.
Unterstützte Server
Paddle2IP ist kein geschlossenes Ökosystem. Die Dokumentation definiert ein vollständiges Kommunikationsprotokoll, das die Implementierung eigener Server ermöglicht. Die Referenzimplementierung ist Open Interface III (OI3) mit ATmega2560 und W5500, die die CW-Leitung über einen PTT-Sequenzer kodiert. Die zweite Option ist WIFILT – eine Webschnittstelle für Icom-Transceiver mit LAN-Verbindung, die auf ESP32 oder als natives PC-Programm läuft und ohne zusätzliches Kabel über das CI-V-Protokoll des Radios kodieren kann. Die Wahl des Servers hängt vom Transceiver und der Verbindungsmethode ab – OI3 eignet sich für Yaesu, Kenwood oder Elecraft mit klassischem CW-Eingang, WIFILT für Icom mit LAN-Schnittstelle.
3D-gedruckte Box
Pre mechanické dokončenie zariadenia je na portáli Ausdrucke verfügbar, Modell mit Gewindegehäuse (Gewindegehäuse für M5Dial, Modell 1886030).). Krabička je navrhnutá priamo pre modul M5Dial a poskytuje ochranu displeja a konektorov pri portablovej prevádzke. Závitový uzáver umožňuje rýchly prístup k modulu bez náradia – praktické pri výmene batérie alebo pripojení USB kábla.
Build, Firmware und Weiterentwicklung
Die Firmware wird in Arduino IDE 2.x oder Arduino-Cli mit dem M5Stack-Paket (getestet mit Version 2.1.3) und den Bibliotheken M5Dial 1.0.2, M5Unified 0.2.2 und M5GFX 0.2.3 kompiliert. Eine Alternative zur benutzerdefinierten Kompilierung ist der Web-Flasher auf GitHub Pages, der in Chrome oder Edge funktioniert und keine Installation einer Entwicklungsumgebung erfordert. Zum Testen ohne Hardware wird das Python-Skript rkey_test.py (Fake-Server, Lasttests, SipHash-Selbsttest) und eine über g++ mit dem C++17-Standard kompilierbare Host-Simulation des Keyers verwendet.
Der Quellcode ist öffentlich verfügbar unter GitHub (github.com/ok1hra/paddle2ip). Verzie firmvéru používajú dátumovú schému YYYYMMDD, nastavenia sú uložené v NVS a zápis do Flash Der Speicher wird verzögert, bis der Keyer mindestens 2 Sekunden lang inaktiv ist, damit der Schreibvorgang das CW-Timing nicht stört. Das Projekt wird aktiv weiterentwickelt und die Dokumentation enthält eine vollständige Beschreibung des Wire-Protokolls, was den Weg für die Integration in bestehende Remote-Systeme auch außerhalb des OI3- und WIFILT-Ökosystems ebnet.
