Zmierzch Arduino…

Nie przypuszczałem, że będę musiał się rozstawać z tym miłym mikrokontrolerem. Niestety, okazał się on zbyt wolny / zbyt słaby. Ale po kolei.

Kiedy wszystkie mechaniczno-elektryczne modyfikacje oryginalnej konstrukcji były już wykonane, mniej więcej w listopadzie 2017 zabrałem się za transformację współrzędnych. Cóż to takiego jest? Bardzo krótko mówiąc, jest to takie przetworzenie ogólnodostępnych informacji o położeniu stałych obiektów astronomicznych (gwiazdy, galaktyki, mgławice, gromady otwarte itp., ale nie Księżyc, planety, komety itp.), aby można było na podstawie tych informacji odnieść się do ziemskiego układu współrzędnych: azymutu i wysokości nad horyzontem. Odniesienie takie może być wykorzystane do automatycznego ustawienia teleskopu „na obiekt”, a nawet do podążania za obiektem w celu utrzymania go w polu widzenia okularu/kamery. Oczywiście, w moim przypadku dążę do uzyskania wszystkich trzech funkcjonalności.

Zacząłem więc od szukania algorytmów, wzorów, jakichkolwiek punktów zaczepienia. Wiele uliczek było ślepych i musiałem szukać od nowa. Przeszukiwałem fora internetowe w nadziei, że trafię na podobne do mnie osoby, które szukają tego samego.

W międzyczasie, mając już pewne podstawowe wytyczne, zacząłem pisać osobny program na mikrokontroler Arduino. Posiłkując się wyświetlaczem LCD 4×20 próbowałem wyświetlać pierwsze wyniki, ale Arduino okazało się niewystarczającą jednostką obliczeniową dla wielu operacji na liczbach zmiennoprzecinkowych o precyzji sięgającej np. 11-go miejsca po przecinku wykonywanych w ciągu każdej sekundy, a nawet częściej. Wyliczenia fiksowały, a liczby odświeżały się co kilkadziesiąt sekund.  Okazało się, że ten mikrokontroler (jak i inne jemu podobne) nie posiada tzw. precyzji „double”, czyli nie operuje na liczbach 4-bajtowych, tylko zaledwie na 2-bajtowych i mogę zapomnieć o precyzji… Zarzuciłem wtedy pomysł, by Arduino zajmował się tymi obliczeniami i skoncentrowałem się na pisaniu oprogramowania na PC z zamiarem przeniesienia tego później na mikrokomputer Raspberry Pi. Arduino nadal miał swoje miejsce w moim teleskopie: miał zajmować się sterowaniem silnikami.

Tymczasem na swej krętej drodze spotkałem kolegę nkmarek z forum astromaniak.pl, który miał taki sam problem: transformacja współrzędnych. Po nawiązaniu kontaktu uświadomiłem sobie, że dużo wcześniej pewna kluczowa postać z tego forum (kolega Janusz P.) zasugerował mi genialną książkę belgijskiego astronoma Jeana Meeusa pod tytułem „Astronomical Algorithms” jako źródło wszystkich informacji i wzorów niezbędnych do zrozumienia i przeprowadzenia transformacji współrzędnych. Wtedy też zaczęła się prawdziwa jazda. Wspólnie z Markiem – ale niezależnie – pracowaliśmy nad swoimi programami. Mniej więcej po miesiącu mieliśmy już powody do dumy, a jakieś dwa tygodnie później, gdzieś w połowie stycznia 2018, nasze oprogramowanie uzyskało znakomitą dokładność i wyniki raptem o kilka sekund kątowych odbiegającą od programu Stellarium, oczywiście przy takich samych zadanych parametrach. Ale spójrzmy prawdzie w oczy: Arduino nie jest w stanie pociągnąć nawet 10% tego oprogramowania.

Marek podsunął mi pomysł z użyciem tzw. „Tabeli Wimmera”, opracowania ogólnodostępnych danych o obiektach astronomicznych zebranych przez astronoma i forumowicza w jedną tabelę. Zestawienie to jest niezwykle pomocne dla początkujących astronomów: zawiera współrzędne równikowe równonocne Ra i Dec i podstawowe dane na temat obiektów astronomicznych. Ja wziąłem sobie za cel uzupełnić ta tabelę o jeszcze kilka innych danych i utworzyć z niej bazę danych w MySQL. A więc – Arduino w roli mikroprocesora obliczeniowego został pogrzebany na amen!

Bardzo możliwe jest, że Arduino w ogóle zniknie z mojej „czarnej skrzynki”. Jeśli miałby on zajmować się sterowaniem silnikami krokowymi, to musiałby otrzymywać informację o tym, kiedy wystawić impuls na silnik i w jakim kierunku. A więc dwa silniki w osiach Az i Alt oznaczają raptem cztery informacje (trzeciego silnika mikrofocuser’a nie zaliczam do tej automatyki, bo ostrzenie odbywa się „ręcznie”, kontrolerem Nintendo). Po pierwsze, Raspbery Pi dysponuje ponad 20-ma wejściami/wyjściami GPIO, więc z pewnością da on radę obsłużyć dwa (a nawet trzy) kontrolery silników. Po drugie, transmisja szeregowa między Arduino, a Raspberry Pi może (ale nie musi) wprowadzać niepożądane opóźnienia do prowadzenia teleskopu. Możliwe, że i tak będzie trzeba zastosować enkodery o rozdzielczości co najmniej 1024 impulsów na paskach zębatych GT2, bo zawsze teleskop może „przeskoczyć” na montażu o jeden ząbek, ale po co prosić się o kłopoty, angażując dodatkową transmisję szeregową?

Tak, czy siak, zakup Raspberry Pi w wersji 3 jest nieunikniony. A tymczasem zakładam kolejną sekcję o nazwie „HARDWARE & SOFTWARE”, żeby uniknąć dalszych niespodzianek. Spodziewam się, że wszelkie kolejne modyfikacje i ich opisy dadzą się ująć w tej sekcji.

Reklamy