Moje GoTo – zamiast cz. 2…

Minęło około 2,5 miesiąca od mojego poprzedniego wpisu, a w tym czasie nastąpiła niemała rewolucja w moim systemie, na tyle duża, że oprogramowanie doczekało się wersji nr 2.

Zacznijmy od kontrolera. Już kilka miesięcy wcześniej kupiłem klon kontrolera Nintendo pracującego w oparciu o Bluetooth i wiązałem z nim duże nadzieje, bo był znacznie większy, niż moje dotychczasowe maleństwo i miał dużo więcej przycisków dających nowe możliwości.

GamepadBT

Nie było jednak czasu na przerabianie istniejącego softu, dlatego ruszyłem temat kontrolera wraz pracami nad poprawioną wersją programu. Niestety, odniosłem porażkę, ponieważ nie udało mi się obsłużyć krzyżyka z przyciskami kierunków, podczas gdy analogowe manetki działały bez zarzutu. Było to co najmniej dziwne.

W międzyczasie kupiłem dzieciom konsolę Nintendo Wii i jakoś tak naszło mnie, żeby spróbować kontroler konsoli z Maliną, wszak łączy się on również po BT. No i omal nie krzyknąłem z zachwytu: bo okazało się to strzałem w 10-kę! Kontroler Wii obsługuje się jedną ręką, wszystkie przyciski pracują poprawnie, a ich oznaczenie i ułożenie wprost idealnie pasują do nowej roli. Ale żeby nie było, kupiłem sobie nowy kontroler (oczywiście w kolorze czarnym), żeby dzieciom nie zabierać.

WiiController1WiiController2

Przyciski kierunku są oczywiste, przycisk „A” posłużył do zatwierdzania wyboru i przechodzenia do następnych kroków, przycisk „B” (z tyłu) – do cofania się o jeden etap, przyciski „-” i „+” – do zmiany „kroku” (opiszę to później), przycisk „home” (niebieski symbol domku) – do resetu oprogramowania, no i w końcu przyciski „1” i „2” – do operowania silnikiem focusera. Genialne!

Po ukończeniu prac nad oprogramowaniem postanowiłem zrobić szereg zdjęć ekranu LCD i z ich wsparciem opisywać kolejne funkcje/etapy programu. Ale żeby zdjęcia ekranu zachowały rozmiar, kształt (perspektywa) i proporcje, musiałem unieruchomić telefon na montażu Dobsona:

00_TheSet

Założyłem, że oprogramowanie będzie dwujęzyczne, dlatego też prawie wszystkie ekrany pokazane będą w języku polskim i angielskim. No to zaczynamy…

Żeby cokolwiek wybrać z menu, kontroler musi być połączony z Maliną, więc program to sprawdza, a jak nie widzi kontrolera, to o niego grzecznie prosi. Czeka 3 sekundy i sprawdza…

01_TurnOnController
02_TurnOnControllerChecking

A kiedy już kontroler się połączy z systemem, można wybrać język:

04_SelectLanguagePL03_SelectLanguageEN

Dla przyzwoitości wprowadziłem dwa ekrany instrukcji obsługi:

05_Instruction1
05_Instruction2

Kolejny etap to bezobsługowa próba wykrycia odbiornika GPS na USB i pobrania długości i szerokości geograficznej, wysokości nad poziomem morza oraz czasu GPS dla wskazanych współrzędnych. Każdorazowo data i czas systemowy są aktualizowane tym czasem z GPS i nie muszę łączyć się z żadnym serwerem NTP. Czas letni i zimowy są uwzględnione.

06_GPSFix
07_GPSData

Ekrany PL i EN powinny pokazać takie same liczby, ale niestety, GPS nie jest taki dokładny, a ja również nie traktuję go fair, bo odbieram sygnał w domu, około metr od okna. W razie czego mogę położyć odbiornik na parapecie, bo kabel ma chyba 1,8m długości. Najgorzej jest z wysokością n.p.m., która waha się znacznie, a już przeszła samą siebie w dniu, w którym to piszę. W czasie deszczu sygnał nie dawał się odebrać, ale zaraz po deszczu dowiedziałem się,  ze mieszkam 160m n.p.m…

Rzadko zdarza się, że teleskop stoi na szczycie „łysego” wzniesienia i mamy widok od horyzontu po Zenit w 360° w poziomie. Z tego też powodu wprowadziłem pojęcie minimalnego kąta, poniżej którego system filtruje obiekty z bazy danych (czyli z rozbudowanej „Tabeli Wimmera”). Kąt ten można ustawić w zakresie od 0 do 85° ze skokiem 5°. Postaram się rozważyć obiekty znajdujące się pod tym poziomem, ale wznoszące się i zbliżające się do niego.

08_AngleOverHorizon

Poprzednio wspomniałem o tym, że system pamięta pozycję, w której się zatrzymał.  Zapis pozycji do pliku następuje przy wyjściu z funkcji śledzenia obiektu, przy zakończeniu przejazdu (GoTo) i przy resecie oprogramowania (home). Można zatem kontynuować od tego miejsca, bo sam teleskop nie może już zmienić położenia. Można też zacząć od ustawienia teleskopu na Gwiazdę Polarną, albo też od razu przejść do śledzenia – ma to znaczenie w dzień, przy obserwacji Słońca, Księżyca i planet. Kiedy jednak pozycja teleskopu w pliku nie jest zachowana, dostępne są tylko dwie ostatnie funkcje (nie ma czego kontynuować).

09_PositionInFileContinuation
09_PositionInFilePolaris
09_PositionInFileManual

Załóżmy, że zaczynamy od kalibracji systemu na Gwieździe Polarnej. Można – jak pisałem poprzednio – ustawić wstępnie teleskop „na oko”, zazębić wałki przekładni ślimakowych na ślimacznicach, ale można też całkowicie „bezkontaktowo” wycelować teleskop wymuszając ruch w obu osiach. Aby nie zasnąć przy tej czynności, wprowadziłem pojęcie „kroku” 1-4, który reprezentuje kolejno 10, 50, 250 i 1250 mikrokrókow silnika w trybie 2 mikrokroków. Można w ten sposób elegancko „dotknąć” laserem Polaris. Na tym etapie można także obsługiwać motofocuser.

10_PolarisAiming1
10_PolarisAiming2
10_PolarisAiming3
10_PolarisAiming4

Naciśnięcie przycisku „A” powoduje uruchomienie wyodrębnionej funkcji sprawdzającej aktualne położenie wybranego obiektu na niebie w układzie Az/Alt – w tym przypadku Gwiazdy Polarnej – i te aktualne wartości Az i Alt przypisane zostają do ustawienia nieruchomego teleskopu dokładnie w tym momencie. Oczywiście Gwiazda Polarna „leci” sobie dalej. Wyświetlenie tych wartości nie jest niezbędne, zostają one natomiast zapamiętane i zapisane do pliku.

W zależności od wyboru trybu pracy, wcześniej czy później trafiamy na ekrany wyboru obiektu do obserwacji. Przyjąłem, że dość oczywistym jest wybór w oparciu o typ obiektu, poziom trudności obserwacji obiektów danego typu oraz konkretny obiekt.

11_SelectType
12_SelectDifficulty
13_SelectObject1(wiem, że „Latawiec Kemble’a” to nie „Odwrócona 5ka”…)

Oprócz nazwy obiektu wyświetlam także jego numer z katalogu NGC oraz z katalogu Messiera. Warto zauważyć, że w prawym górnym roku tego ekranu widnieje strzałka skierowana w górę lub w dół. Oznacza to, że obiekt aktualnie wznosi się lub opada.

13_SelectObject2

Kolega Wimmer wykonał kawał dobrej roboty opracowując swą Tabelę, a można tam znaleźć także informacje, w jakich miesiącach obiekt jest w ogóle widoczny na niebie. Oprogramowanie, a dokładnie stosowna kwerenda SQL, bierze to pod uwagę i pozwala wybrać tylko te obiekty, które są w danym momencie widoczne. Listę dostępnych obiektów dodatkowo ogranicza filtr na wysokość ponad zdefiniowany wcześniej poziom nad horyzontem.

I znów, w zależności od wybranego wcześniej trybu możemy od razu uruchomić śledzenie obiektu lub pozwolić teleskopowi zwrócić się w jego kierunku samodzielnie:

15_GoToSlewData

Ten ekran, oprócz nazwy obiektu i numerów z katalogów, pokazuje bieżące wskazanie teleskopu (po lewej) i aktualną pozycję obiektu (po prawej). Różnica tych wartości obrazuje odcinki łuku w osiach Az i Alt, jakie teleskop musi przemierzyć, a strzałki pokazują kierunek zmiany.

Zatwierdzenie powyższego powoduje równoległe uruchomienie silników w obu osiach. Jak wspomniałem poprzednio, zawsze jedna oś ma więcej roboty w przejeździe od drugiej. Pierwszy przejazd odbywa się w trybie 2 mikrokroków. Kiedy dłuższy przejazd się skończy, następuje ponowne obliczenie aktualnej pozycji obiektu i „dociągnięcie” w trybie 8 mikrokroków, a dalej natychmiastowe przejście do funkcji śledzenia. Od tej pory można ponownie operować motofocuserem zmieniając „krok” jego napędu przyciskami „1” i „2”. Długość „kroku” nr 4 stanowi 1/10 wysokości maksymalnego wysunięcia wyciągu, a „kroki” 3, 2 i 1 są podwielokrotnościami kroku nr 4. „Krok” nr 1 odpowiadający 10 mikrokrokom w trybie pracy silnika 4 mikrokroków na pełny krok, w układzie z przekładnią planetarną 5:1, powoduje ledwie dostrzealny, ale wyczuwalny ręką ruch gałki, co przekłada się na bardzo precyzyjne operowanie focuserem. 

16_Tracking1
16_Tracking2
16_Tracking3
16_Tracking4

Teleskop wyposażony jest w wyłączniki krańcowe w osi Alt i w motofocuserze. Uruchomienie „krańcówek” w osi Alt może nastąpić w czasie przejazdu (GoTo) i w czasie śledzenia, a towarzyszy temu ekran informacyjny przedstawiony poniżej. System natychmiast zatrzymuje silniki w osi Az i Alt, całkowicie zatrzymując przejazd lub śledzenie, ponieważ jakikolwiek dalszy automatyczny ruch nie ma w tym momencie sensu.

17_EndStop

W przypadku focuser’a wyłączniki krańcowe mają wpływ na pracę silnika przesuwającego tuleję wyciągu jedynie w kierunku związanym z daną „krańcówką”. Podczas, gdy jeden kierunek jest zblokowany, zawsze można operować w kierunku przeciwnym i wycofać się z położenia krańcowego.

Ostatni ekran związany jest z restartem oprogramowania. Program kończy swą pracę wraz z naciśnięciem przycisku „home”, ale że inny skrypt czuwa nad stanem skryptu głównego i następuje jego ponowne uruchomienie w ciągu 5 sekund.

18_Restart

Ale ekran to nie jedyna droga komunikacji systemu z użytkownikiem. Zadbałem o to wcześniej, umieszczając na płycie prototypowej buzzer, który swym dźwiękiem informuje o różnych stanach systemu, np. kiedy użytkownik skupiony jest na obserwacji nieba w okularze, a nie wyświetlacza. Operuję tu ilością „piknięć” (1-4) oraz czasem trwania dźwięków i przerw między nimi (0.1-1s).

Pewne drobiazgi w programie, problemy, jakie napotkałem po drodze i przemyślenia zostaną opisane nieco później, w kolejnym wpisie. Opiszę też pewne zmiany kosmetyczne, które chciałbym dodatkowo  wprowadzić.

Reklamy