Cíle projektu
1. Místo tahání kabelů použít počítačové
komunikace po LAN, s využitím WiFi.
2. Spínat relé v tuneru pomocí
pinů
sériového expandéru, který jsme vymysleli zde.
3. Napsat si jednoduchou aplikaci pro Windows nebo Linux, která bude (bez
drátů, jak jinak, že?) posílat povely pro řízení tuneru.
Princip dálkově řízeného tuneru
Provedení tuneru lze vyjádřit tímto
jednoduchým schémátkem. U antény máme hned na svorkách (nebo za balunem)
tuner. Tuner je napájený adaptérem (SELV). Tuner přijímá povely po WiFi
síti z našeho notebooku, na kterém nám běží komunikační program. Lze
nastavovat způsob přizpůsobení (tlačítky LC nebo CL a myší hodnoty L a
hodnoty C pomocí posuvníčků):
Princip přizpůsobení antény
Pro tuto úlohu jsem vybral přizpůsobení pomocí
nesymetrického L článku. Abychom mohli přizpůsobit impedance ve velikém
rozsahu, volíme možnost nastavit konfiguraci CL nebo LC (vlevo pod
textem). Konfiguraci nastavujeme pomocí relé, jejichž kontakty jsou
nakresleny vpravo pod textem. Sepnutím kontaktu By Pass a současným
rozepnutím obou kontaktů CL a LC lze tuner vyřadit z provozu.
|
|
Hodnoty L a C
potřebujeme pro slušné přizpůsobení nastavovat s dostatečně jemným
krokem. V tomto příkladě je pro každou veličinu (L a C) použito
reléové spínání (celkem 16 switchů) a každou hodnotu lze nastavit v
256 krocích. Celé schéma VF části tuneru a s označením kontaktů
switchů je níže: |
|
Kontakty relé
(SW1 až SW16, SW17, SW18 a SW19) řídíme pomocí povelů. Povely jsou
přenášeny třemi bajty po počítačové síti z notebooku. Bajt B0 až B7 na
adrese čipu expandéru 118 nastavuje hodnotu indukčnosti L (SW1 až
SW7). Bajt B0 až B7 na adrese 119 nastavuje hodnotu kapacity C (SW9 až
SW16). Bajt C0 až C2 (na adrese čipu 118) nastavuje konfiguraci tuneru
podle Tabulky 1 níže. V tuneru jsou tedy
|
|
Protože v
našem programu na PC obdržíme hodnoty posuvníků v rozsahu 0 až 255,
budeme odesílat povely pro nastavení L a C jako trojmístnou sadu znaků
000 až 255 (což odpovídá hodnotě jednoho bajtu). Nastavení režimů
vyžaduje tři funkční kombinace, které odešleme jako sadu znaků 004,
001 a 002 a opět na to použijeme v sériové komunikaci expandéru jen
jeden bajt. Zkušenější si umí tři logické hodnoty switchů SW17, SW18 a
SW19 přepočítat na dekadickou (příp. hexadekadickou) hodnotu z hlavy.
Kdo s tím nedělá denně, může hodnoty přepočítat v prográmku HEX to
DEC, který jsme si napsali jako jednu z prvních úloh, když jsme se
učili psát aplikace pro desktop. Při počítání těch tří čísel to vypadá
nějak takto:
|
Aplikace na
notebooku
Asi tušíte, že aplikace na notebooku bude velice jednoduchá. Pro
nastavování L a C použijeme posuvníky (sliders). Pro nastavování
konfigurace CL, LC a By Pass (vypnutí ladění) použijeme tlačítka.
Ještě si do programu dáme pár "pamětí", jako máme na kalkulačce. Do
pamětí budeme ukládat naladěné hodnoty, které pak budeme z pamětí číst
kliknutím na jediné tlačítko. Tato filosofie dálkového řízení má jednu
obrovskou výhodu - prvně si ladíme nejlepší přizpůsobení sami a s
maximální pečlivostí (tj. přesností). Opakovaně volíme přizpůsobení
jedník kliknutím na "paměť ". Automatický tuner má výhodu, že sice
nemusíme nastavovat L, C a ani konfiguraci, najde si ji sám. Ale občas
zjistíme, že bychom chtěli doladit přesněji. Občas to zjistí algoritmy
použité v tuneru a začnou nám trtkat s relátky v průběhu vysílání.
Samozřejmě, že si sníží výkon TRXu, ale dopálí vás to. V manuálně
řízeném dálkově ovládaném tuneru vám nic během spojení netrtká a při
přechodu na jiný kmitočet kliknete myší na jedno z tlačítek pamětí.
Pro inspiraci, v roce 2012 jsem používal tento design woken tuneru
ve Windows, tenkrát to komunikovalo po sériovém portu:
V roce 2019 jsem aplikaci jsem upravil z původní
z roku 2012
Aplikace Vypadá takto. V okně ladění jsou tlačítka pro nastavení
konfigurace tuneru (LC nebo CL). Progress bary nejsou programované pro
nastavování hodnot. Jsou vedle nich Numeric Up Down komponenty. Ty
zobrazují číselně hodnoty ( 0 až 255) C a L. Byla upravena pozice
tlačítek ukládání do pamětí. Možná ještě změním rozmístění komponentů
v hlavním wokně. Druhá varianta designu je ještě níže. U třetí
varianty jsem použil komponenty TrackBar (Slider), které jsem našel v
toolboxu.
U třetí varianty jsem použil komponenty TrackBar (Slider) z toolboxu
Visual Studia:
Testovací verze tuneru s TCP/IP přenosem dat
1. Jak jsem už napsal, aplikaci, kterou používám k
testům, mám v následujícím vzhledu a verzi.
Současná (moje finální verze) exe souboru (spíš
portable aplikace) je ke stažení zde. Jde o archiv zip,
velikost asi 22 kB, archiv rozbalíme do pracovního adresáře. Program
vyžaduje, abyste již měli nainstalovaný odpovídající MS Framwork.
2. Vzhled aplikace, uvádím se všemi okny a s
komentářem:
3. Výše popsaná aplikace (Windows) komunikuje s
popisovanými moduly Elfin EW10, který je součástí tuneru.
4. Jako alternativní řešení byla komunikace zkoušena též s aplikací (Linux) běžící na jednodeskovém SBC počítači velikosti
kreditky. SBC pracoval ve funkci tzv. naslouchacího serveru, který vykonával
současně roli směrovače povelů. Alternativní řešení je zde pro úplnost
zmíněno, není však předmětem této publikace. Uvedené řešení nadále
nepoužívám a ani nerozvíjím.
|
|
Související články a starší řešení ok1ufc
Problematiku
popsaného tuneru jsem popsal dříve na této původní
stránce. Úvod do
problematiky jednoduchého (ale vidláckého) způsobu
programování, jsem popsal na těchto stránkách. Je určeno začátečníkům a
neprofesionálům. Nicméně, uvedu zde několik důležitých
skutečností, které jsou právě u mne aktuální:
1. Programování v prostředcích Visual Studio nebo Gambas není předmětem
stránek o dálkovém řízení a telemetrii. Pro efektivní práci v této oblasti
preferuji jiné prostředky, které budou popsány.
2. Popsaný anténní tuner byl mnoho let používanou aplikací v mé hamovně,
verze se sériovou komuniací byla použitelná i s virtuálními sériovými
porty a WiFi komunikací. Program byl
modifikován z verze se sériovou komunikací na verzi s komunikací TCP/IP, ale v roce
2020 byl nahrazen jinými aplikacemi. Nadále však program nepoužívám a ani
nerozvíjím. Byl nahrazen novějším egronomičtějším řešením (bude
popsáno). Původní HW tuneru je stále ve službě.
3. V souvisejících článcích, které jsem napsal, se setkáte s různými
aplikacemi, které jsem zkoušel na jednodeskovém SBC Asus (Obdoba Rarpberry
Pi3). Zejména vyvinuté řešení s tzv. směrovačem povelů z TCP serveru do
USB sériových rozhraní počínaje rokem 2020 nadále nepoužívám. Měl jsem
sice v úmyslu realizovat směrovač povelů na Raspberry Zero W (s WiFi).
Toto zařízení je však bez pouzdra dražší, než profesionálně vyrobené směrovače Elfin EW10, které mi
Rasbpberry Zero W nahradily. Funkcionality, které byly do
modulů Elfin EW 10 naprogramovány, bych buď vyvíjel dlouhé večery
nebo nakonec stejně použil řešení někoho jiného.
Od roku 2019 používám pro směrování povelů z TCP na UART jen moduly
elfin EW10.
|
Perspektivní řešení
Pro psaní aplikací v oboru dálkového řízení a telemetrie používám od roku
2019 výhradně vývojové prostředky Profilab Expert.
1. Jedná se o promyšlené, vysoce objektově orientované navrhování aplikací
pro desktopy, které umožňuje celou řadu komunikačních protokolů a metod.
2. Prostředky obsahují jednoduchý a rychlý kompilátor, který vytvoří
během několika sekund spustitelnou aplikaci pro Windows.
3. Prostředí je připraveno na spolupráci s velkým množstvím průmyslově
vyráběných zařízení z oblasti měření a regulace.
4. I složitější aplikace v Profilab Expert lze vytvořit v krátkém čase
(za večer, za směnu).
5. Aplikace popsané v této minipublikaci komunikují:
- s moduly Elfin EW10; nejjednodušší řešení je použití virtuálních
sériových portů
- s různým zařízením a s různými aplikacemi v síti pomocí protokolů TCP/IP
- lze je obsluhovat po síti LAN (nebo Internet) přes webový prohlížeč
(např. z mobilu, tabletu).
6. Vytváření aplikací pomocí ProfiLab Expert bude předmětem
samostatných článků, stejně, jako použití ProfiLab webového serveru, který
opravdu velmi jednoduše, elegantně a graficky ve velmi hezkém designu
umožňuje provádět dálková měření a dálková ovládání z jakéhokoliv mobilu
nebo tabletu s moderním webovým prohlížečem. |
|