Popis ovládacího programu ver.1.3.3
Důležité upozornění: Ovládací program verze 1.3.3 je určený pro HW1.0. Nelze jej použít pro novou verzi HW2.x ani žádnou novější. Důvodem je rozdílné použití pinů GPIO u první konstrukce!
Program si můžete stáhnout tady. Soubor rozbalte. Pomocí ftp klienta obsah nakopírujte na Raspberry Pi do adresáře /home/pi/ . Tím se vytvoří adresář satprowler s potřebnou strukturou podadresářů a souborů, jak je popsáno v článku Obecné zásady práce s Pythonem. Podle tohoto článku byste měli být schopni program na Raspberry Pi spustit. Doporučuji nejprve použít terminálový režim. Až si ověříte, že program funguje správně, můžete přejít na trvalý provoz. V obou případech se aktivuje webový server, se kterým lze komunikovat libovolným webovým prohlížečem.
1) Používání programu
Program se používá tak, že se k jeho webovému serveru na Raspberry Pi připojíme libovolným prohlížečem z PC. Já používám Google Chrome, ve kterém se mi všechny ovládací prvky zobrazují korektně. Do adresního řádku zadáme
http://192.168.xxx.xxx:8080
Čisla 192.168 znamenají přístup do vaší lokální (domácí) sítě, kde webové prohlížeče nebudou vyžadovat šifrovanou komunikaci https. xxx.xxx je adresa vašeho Raspberry Pi. Číslo 8080 je defaultní port, na kterém server poslouchá. Po připojení se v prohlížeči zobrazí následující stránka.
Obr. 1 - Uživatelské rozhraní programu
Ovládání pozicionéru je rozděleno na dva žluté panely. Horní slouží k přímému ručnímu ovládání motorů, spodní obsahuje předvolby a jejich správu. Ruční ovládání má pro každý motor samostatnou zelenou sekci.
Sekce Azimuth má dvě tlačítka a okno s aktuální pozicí. Motor AZ se otáčí, dokud je tlačítko stisknuté. Pozice by se měla pohybovat v rozsahu 0 ÷ 36 000. Nastavení elevace je identické. Nastavení Skew je poněkud komplikovanější. Především musíte mít HW1.0 rozšířený o modul servomotorů. Základní funkcí je otáčení jednopolaritním LNB o 90°. To představuje přepínání polarity Horizontální / Vertikální, respektive Levotočivá / Pravotočivá. To zajišťují tlačítka H/L a V/R. Pro různé azimuty je ale potřeba k těmto dvěma základním polohám přidat hodnotu Skew. A ta se nastavuje tlačítky se šipkou vlevo nebo vpravo. Jako servomotor jsem vyzkoušel Corotor Chaparral pro C-pásmo a polarizér CSP 1210 C.
Předvolby se používají snadno. Pokud jsou naprogramovány, mají zelenou barvu a v popisku údaj z okna Position. Stačí na tlačítko kliknout. Motory se začnou samy otáčet na určenou pozici. Zatím postupně, nejprve se nastaví azimut, pak elevace a nakonec Skew. Současné otáčení všech motorů budu teprve řešit.
Pokud potřebujeme naprogramovat novou předvolbu, nejprve nastavíme správnou pozici ručně. Do horních oken Position a Satellite name napíšeme požadované údaje. Pak klikneme na tlačítko „Store mem“. Tím se aktivuje režim zápisu do předvolby - toto tlačítko změní barvu na červenou. Pak klikneme na tlačítko předvolby, do které chceme aktuální stav uložit. Tím se všechny údaje z ručního panelu nakopírují do zvolené předvolby. Zároveň se změní popis tlačítka předvolby a jeho barva na zelenou. To znamená, že předvolba je použitá. Naprogramování předvolby nezkoumá, jestli byla tato předvolba prázdná, nebo už naprogramovaná. Tím se dají staré údaje předvolby přímo nahradit novými. Ale pozor na neúmyslné přepsání jiné předvolby.
Pokud chceme předvolbu jen vymazat, klikneme na tlačítko „Clear mem“. Tím se aktivuje režim mazání - toto tlačítko změní barvu na červenou. Pak klikneme na tlačítko předvolby a všechny uložené údaje se vymažou. Zároveň se barva tlačítka předvolby změní ze zelené na šedou. To znamená, že předvolba je volná.
Pokud jsme na tlačítka „Store mem" nebo „Clear mem" klikli omylem, klikněte na něj ještě jednou. Tím se aktivovaný režim zruší.
Program má nachystanou ještě jednu část, která zatím není dokončená. Pokud kliknete myší na libovolný šroubek, otevře se servisní stránka. Zde bude možné nastavit nulové polohy azimutu a elevace.
Pokud budete chtít nastavit nulové pozice azimutu a elevace už nyní, musíte zatím použít terminálový režim programu. V terminálu se při ručním ovládání motorů vypisují i hodnoty spínačů AZOrigin a ELOrigin. Nejprve ručně otáčejte motorem na východ, až se hodnota AZOrigin změní 1 -> 0. V tomto okamžiku motor co nejrychleji zastavte. Pak ručně otáčejte motorem na západ. Ve chvíli, kdy se změní hodnota AZOrigin 0 -> 1 se automaticky vynuluje počítadlo azimutu. Stejným způsobem se nastavuje nulový bod elevace. Nejprve ručně otáčejte motorem směrem dolů, až se hodnota ELOrigin změní 1 -> 0. V tomto okamžiku motor co nejrychleji zastavte. Pak ručně otáčejte motorem směrem nahoru. Ve chvíli, kdy se změní hodnota ELOrigin 0 -> 1 se automaticky vynuluje počítadlo elevace.
Najetí na nulovou polohu není pro provoz pozicionéru nezbytně nutné. Pokud se rozhodnete nastavit nulové body, sledujte stav spínačů Origin v terminálu velice pozorně. Motory se otáčí příliš rychle. Nastavení obou nulových bodů je nutné provést ve chvíli, kdy jsou všechny předvolby prázdné. Změnou hodnoty počítadel by se ztratila synchronizace předvoleb s požadovanou polohou.
2) Uživatelské úpravy programu
Spuštění programu na Raspberry Pi znamená jen spuštění webového serveru. Server sám o sobě nic nedělá, jen čeká na příkazy uživatele. Ty standardně očekává na portu 8080. Pokud tento port chcete změnit, otevřete soubor satprowler.py v textovém editoru a přejděte na jeho konec. Tam najděte řádek
app.run(host='0.0.0.0', port=8080, debug=True)
Zde můžete změnit číslo portu. Nezapomínejte, že některé porty už mají obecně stanovené využití a není dobré je používat na cokoliv jiného. Po zásahu do souboru je potřeba program restartovat.
Pro ty, kdo nemají zkušenosti s jazykem Python, je potřeba zdůraznit jednu jeho zvláštnost. Mezery na začátcích řádků mají funkci rozdělení kódu do samostatných bloků. Pokud změníte počet těchto úvodních mezer, aniž byste věděli, co děláte, program se vám zhroutí a nepůjde spustit. I proto musíte použít textový editor, který do souboru sám bez vašeho vědomí nic dalšího nepřidává. Word z balíku Office opravdu nelze použít. Já používám program PSPad, který umí podle koncovky souboru text barevně rozlišit a tím zpřehlednit. Program PSPad si můžete stáhnout tady.
Další soubor, který možná budete upravovat v textovém editoru, je config.ini. V tomto souboru jsou uložená data jednotlivých předvoleb. Předvolby jsou označeny [mem01] až [mem80]. Počet předvoleb nelze jednoduše rozšířit dopsáním dalších položek do tohoto souboru. Je potřeba i jejich podpora úpravou programu. Každá předvolba obsahuje údaje podle následující tabulky.
Položka | Význam | Rozsah hodnot |
[mem01] | Označení předvolby, neměnit | mem01 ÷ mem80 |
posaz | poloha motoru AZ | 0 ÷ 36 000 |
posel | poloha motoru EL | 0 ÷ 32 000 |
skew | poloha serva1 | 500 ÷ 2500 |
satpos | označení pozice (předvolby) | text UTF8, 7 znaků |
satname | označení satelitu | text UTF8, 43 znaků |
Po ruční změně obsahu souboru config.ini je potřeba restartovat program satprowler.py, Pokud je hodnota posaz a posel nulová, program označí takovou předvolbu jako prázdnou (tlačítko předvolby je šedé). První záznam [Default] obsahuje aktuální stav pozicionéru. Program si jej přepisuje v okamžiku zastavení každého motoru. Pokud jej změníte ručně, ztratí se synchronizace mezi daty předvoleb a požadovaným nasměrováním pozicionéru. Na rozdíl od předvoleb má záznam [Default] navíc položku polar, kde se ukládá údaj o aktuálně nastavené polarizaci.
Do dalších souborů nebudete mít důvod uživatelsky zasahovat. Všechny textové soubory programu jsou v režimu kódování textu UTF-8.
Důležité upozornění: Python je scriptovací jazyk. Spuštění programu není zárukou, že všechny jeho části fungují správně. Při jakýchkoliv experimentech je třeba si uvědomit, že motory EPS-203 nemají koncové spínače. Pokud program zhavaruje ve chvíli, kdy je některý motor v chodu, je NUTNÉ co nejrychleji vypnout zdroj 24V. Proto provádějte všechny své úpravy s rozvahou a neustále kontrolujte správnost stavu motorů EPS-203.
3) Známé chyby programu
- Zde musím upozornit na jednu důležitou chybu programu, kterou jsem zatím nevyřešil. Týká se ručního ovládání motorů Azimut a Elevace. Motory se ovládají dvěma samostatnými příkazy. Zapnutí motoru představuje stisknutí ovládacího tlačítka pomocí stisknutí levého tlačítka myši. Vypnutí motoru představuje uvolnění stejného ovládacího tlačítka, tedy uvolnění levého tlačítka myši nad tímto ovládacím tlačítkem. Když stisknete ovládací tlačítko, motor se rozběhne, pak posunete myš mimo tlačítko a pustíte levé tlačítko myši, tak se motor nezastaví. Stisknutí i uvolnění levého tlačítka myši musí být provedeno nad stejným ovládacím tlačítkem, aby motor dostal po příkazu k zapnutí následně i příkaz k vypnutí. Pokud se vám stane, že při stisknutém tlačítku „ujedete“ myší jinam, musíte znovu na použité tlačítko kliknout. Tím ovládací tlačítko odešle i druhý příkaz a motor se zastaví.
- Motory se zatím neovládají současně, ale postupně. To znamená, že kliknutím na předvolbu se nejprve nastaví azimut a teprve potom elevace. Paralelní programování vláken, tedy současné ovládání obou motorů, teprve studuji.
- Servisní stránka je zatím jen symbolická. Její funkčnost bude vytvořena později.