Remote prevádzka rádiostaníc je čoraz bežnejšia, no pre CW operátorov prinášala jedno nepohodlné obmedzenie: kľúčovanie cez sieť spravidla znamenalo buď softwarový kľúč na obrazovke, alebo kompromis s latenciou, ktorý pri vyšších rýchlostiach degradoval kvalitu vysielanej CW. 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í klasickú iambickú pastičku k remote station cez IP sieť s kontrolovanou latenciou a zachovaním presného časovania značiek.
V článku sa dočítate
Hardvérový základ: M5Stack M5Dial
Paddle2IP stojí na module M5Stack Dial v1.1 s mikrokontrolérom ESP32-S3. Modul v kompaktnom kruhovom tele integruje Wi-Fi, 1,28″ dotykový displej, otočný enkodér s tlačidlom a dva Grove konektory. Port B (GPIO2/GPIO1) slúži na pripojenie pastičky – dit a dah kontakty s internými pull-up rezistormi, 100 Ω sériovým odporom a 10 NF filtračným kondenzátorom na každom vstupe. Port A je voliteľný: GPIO13 pre rovný kľúč, GPIO15 pre slúchadlový bočný tón cez RC filter a DC-oddeľovací kondenzátor. Interný bzučiak na GPIO3 generuje bočný tón priamo v zariadení, s hlasitosťou nastaviteľnou v rozsahu 0 – 100 (krok 5 zodpovedá 2 dB). Zariadenie je napájané z batérie, firmvér udržuje napájanie cez GPIO46. Dôležité upozornenie: červený 5 V vodič Grove konektora sa nesmie pripojiť k pastičke.
Prečo práve M5Dial
Voľba M5Dial nie je náhodná. Otočný enkodér slúži na priame nastavovanie rýchlosti kľúčovania, dotykový displej zobrazuje aktuálny stav spojenia a parametre, a Wi-Fi konektivita je integrovaná bez externých modulov. Celé zariadenie má rozmery disku s priemerom necelých 5 cm – ide o jednu z najkompaktnejších platforiem pre tento účel. Kompromis je v obmedzenej výdrži batérie a absencii Ethernet portu – pre stacionárne použitie existuje alternatíva v podobe USB sieťového režimu.
Ukážka fungovania Paddle2IP
Sieťový protokol a latencia
Paddle2IP nepreposiela surové stlačenia kontaktov. Iambický kľúčovač (portu z 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 – začiatok a koniec každej značky a medzery – a tieto značky s časovou pečiatkou odosiela cez UDP (port 5690) na server pri rádiostanici. 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í.
Server prijme pakety a prehráva hrany po pevnom playout oneskorení D, čím kompenzuje sieťový jitter. Odporúčané hodnoty D závisia od typu pripojenia: v LAN okolo 30 ms, pri dobrom internetovom spojení alebo VPN 80 – 150 ms, cez LTE 200 ms a viac. RTT (round-trip time) sa zobrazuje na displeji zariadenia – aktuálna hodnota aj 5-sekundové minimum. Každý paket opakuje hrany z posledných 500 ms, čo zabezpečuje odolnosť voči strate jednotlivých paketov. Autentifikácia používa SipHash-2-4 so 128-bitovým zdieľaným kľúčom, nonce sa rotuje každých 5 sekúnd a sekvenčné čísla zabraňujú replay útokom.
Prečo je lokálny kľúčovač kľúčový
Mnohé remote riešenia posielajú surové stlačenia pastičky na vzdialený server, kde kľúčovač beží. Pri kolísaní latencie to vedie k nepravidelným značkám a medzerám. Paddle2IP obracia tento princíp: kľúčovač beží lokálne a server dostáva hotové, správne načasované hrany. Aj pri výpadku jedného paketu zostáva CW čistá, pretože nasledujúci paket obsahuje všetky hrany z poslednej pol sekundy. Limit nastáva pri playout oneskorení nad 500 ms – operátor síce počuje lokálny bočný tón okamžite, ale kontrolné potvrdenie od rádia je oneskorené, čo pri rýchlej prevádzke vyžaduje prispôsobenie návykov.
Užívateľské rozhranie a nastavenia
Otočný enkodér M5Dial slúži na nastavovanie parametrov priamo na zariadení bez počítača. Rýchlosť kľúčovania (WPM) je nastaviteľná od 5 do 60, výška zázneja od 300 do 1 200 Hz (krok 10 Hz). K dispozícii je voľba iambického režimu A alebo B, prehodenie dit/dah kontaktov, otočenie displeja o 180° a testovacia funkcia, ktorá odvysiela „TEST“ nastavenou rýchlosťou. Playout oneskorenie D je nastaviteľné od 10 do 1 000 ms (krok 10 ms), alebo sa ponechá na predvolenej hodnote servera.
Webové rozhranie na porte 80 (prístupné cez http://paddle2ip.local) umožňuje konfiguráciu Wi-Fi sietí (až štyri uložené), generovanie autentifikačného kľúča, kontrolu stavu a aktualizáciu firmvéru. Sériová konzola na 115 200 baud poskytuje príkazy na diagnostiku a správu.
Pripojenie a sieťové možnosti
Primárny spôsob pripojenia je Wi-Fi. Zariadenie pri štarte vykoná jeden sken kanálov (približne 1,5 s) a pripojí sa k najsilnejšej uloženej sieti. Ak žiadna uložená sieť nie je dostupná do 20 sekúnd, aktivuje sa záložný prístupový bod „Paddle2IP-XXXX“ s konfiguračným portálom. Modem sleep je vypnutý – latencia má prednosť pred úsporou energie.
Alternatívou je USB sieťový režim: M5Dial sa enumeruje ako CDC-NCM Ethernet zariadenie cez TinyUSB 0.15.0. Počítač mu zdieľa internetové pripojenie cez DHCP s NAT. Tento režim je overený na Linuxe (Debian 13, GNOME), na Windows a macOS zatiaľ nie je testovaný. Ak USB sieť nezíska DHCP adresu do 20 sekúnd alebo server neodpovie do 10 sekúnd, zariadenie automaticky prejde na Wi-Fi.
Pre prístup cez internet je potrebný UDP port forward na strane servera. Na strane Paddle2IP žiadny inbound port nie je potrebný, pretože zariadenie iniciuje komunikáciu. Carrier-grade NAT nie je podporovaný – v takom prípade je riešením VPN tunel. Komunikácia prebieha výhradne cez IPv4.
Podporované servery
Paddle2IP nie je uzavretý ekosystém. Dokumentácia definuje kompletný komunikačný protokol, čo umožňuje implementáciu vlastných serverov. Referenčnou implementáciou je Open Interface III (OI3) s ATmega2560 a W5500, ktorý kľúčuje CW linku cez PTT sekvencer. Druhou možnosťou je WIFILT – webové rozhranie pre Icom transceivery s LAN pripojením, bežiace na ESP32 alebo ako natívny PC program, schopné kľúčovať cez CI-V protokol rádia bez dodatočného kábla. Voľba servera závisí od transceivera a spôsobu pripojenia – pre Yaesu, Kenwood alebo Elecraft s klasickým CW vstupom je vhodný OI3, pre Icom s LAN rozhraním WIFILT.
3D tlačená krabička
Pre mechanické dokončenie zariadenia je na portáli Printables dostupný model závitovej krabičky (Threaded housing for M5Dial, model 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.
Stavba, firmvér a ďalší vývoj
Firmvér sa kompiluje v Arduino IDE 2.x alebo arduino-cli s balíkom M5Stack (testovaný s verziou 2.1.3) a knižnicami M5Dial 1.0.2, M5Unified 0.2.2 a M5GFX 0.2.3. Alternatívou k vlastnej kompilácii je webový flasher na GitHub Pages, ktorý funguje v Chrome alebo Edge a nevyžaduje inštaláciu vývojového prostredia. Na testovanie bez hardvéru slúži Python skript rkey_test.py (falošný server, záťažové testy, SipHash self-test) a hostiteľská simulácia kľúčovača kompilovateľná cez g++ so štandardom C++17.
Zdrojový kód je verejne dostupný na GitHube (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 pamäte sa odkladá, kým je kľúčovač nečinný aspoň 2 sekundy – aby zápis nenarušil časovanie CW. Projekt je aktívne vyvíjaný a dokumentácia zahŕňa kompletný popis drôtového protokolu, čo otvára cestu pre integráciu do existujúcich remote systémov aj mimo ekosystému OI3 a WIFILT.
