To forum używa plików cookies
To forum wykorzystuje pliki cookies do przechowywania informacji o Twoim logowaniu, jeśli jesteś zarejestrowany, oraz informacji o Twojej ostatniej wizycie, jeśli nie jesteś zalogowany. Pliki cookies to niewielkie pliki tekstowe zapisywane na Twoim komputerze; cookies ustawiane przez to forum mogą być używane wyłącznie na tej stronie i nie stanowią zagrożenia dla bezpieczeństwa. Cookies na tym forum śledzą również, które tematy zostały przez Ciebie przeczytane oraz kiedy miało to miejsce. Prosimy o potwierdzenie, czy akceptujesz, czy odrzucasz zapisywanie tych plików cookies.

Niezależnie od wyboru w Twojej przeglądarce zostanie zapisany plik cookie, aby zapobiec ponownemu zadawaniu tego pytania. W każdej chwili będziesz mógł zmienić ustawienia cookies, korzystając z linku w stopce strony.

Ocena wątku:
  • 9 głosów - średnia: 3.44
  • 1
  • 2
  • 3
  • 4
  • 5
Joker SDR - Simple SDR HF transceiver project
#51
Program do sterowania Jokerem jest już w pełni dojrzały i gotowy do codziennego używania.
Dla osób, które nie chcą bawić się w programowanie, edycję plików, czarne okno konsoli,
przygotowany jest też samodzielny plik wykonywalny exe uruchamiany w systemie Windows.
Zapraszam do pobrania tych plików w katalogu Python z wszystkimi materiałami Jokera.
Program oprócz przycisków do wygodnego i szybkiego sterowania, posiada teraz pięć bloków,
które znacznie powiększają jego użyteczność. Mamy pięć niezależnych dzienników łączności,
mogą one być używane przy różnych testach, przy pracy wielu operatorów w jednym programie,
przy pracy w klubach krótkofalarskich itd. Blok zawodów także ma pięć niezależnych grup,
umożliwia to logowane w wielu zawodach jednocześnie albo kolejno bez konieczności usuwania
aktualnie zapełnionego logu z poprzednich zawodów. Dalej jest blok dla zbierania punktów
w popularnych na pasmach akcjach dyplomowych. Tutaj również mamy pięć niezależnych grup,
dzięki temu można logować kilka takich akcji, program zlicza przydzielone nam punkty.
Dostępny jest także blok klastra i blok o nazwie Toolbox, gdzie wykonywane są operacje
generowania plików ADI i Cabrillo. Przy Cabrillo mamy pola do wpisania potrzebnych danych.
Przy logowaniu łączności w trybie zawodów jest możliwość włączenia automatycznego licznika
dla naszej grupy kontrolnej, będą też pokazywane duplikaty podczas wpisywania znaku.
W trybie normalnego logowania program będzie pobierał imiona z QRZ. Pobieranie imienia
wykonywane jest przy wyjściu z pola wpisywania znaku za pomocą TAB, spacji lub myszki.
Wszystkich dostępnych funkcji jest znacznie więcej, ale nie będę teraz tego opisywał.
Osoby zainteresowane sprawdzeniem pracy tego programu mają przyjemność samodzielnego
odkrywania sposobu sterowania i zachowania. Dla osób, które są ciekawe jak to działa,
ale nie mają czasu na takie testy, Piotr przygotuje krótki film prezentacyjny.
Na koniec dodaję ładne zdjęcia ciekawych realizacji projektu Jokera jakie otrzymałem
od Tadeusza SP9TD, Zbyszka SP9JRL i Krzysztofa SP9OJX, wszystko wygląda super!.

               
                     
Cytuj
#52
   

Joker Configurator otrzymał możliwość wgrywania plików wsadowych programu do Jokera.
Posługiwanie się zewnętrznym narzędziem było trochę niewygodne. Teraz cały ten proces,
począwszy od zapamiętania wszystkich aktualnych ustawień, poprzez aktualizację programu,
kończąc na przywróceniu ustawień, sprowadza się do jednego dedykowanego dla Jokera okna.

   

To jest duże ułatwienie, nie trzeba przełączać się pomiędzy oknami, używać programów,
na których działania nie mamy wpływu. Wgrywanie aktualizacji do Jokera nie było jeszcze
tak proste i przyjemne. Joker Configurator 0.9 działa tak samo na Windows i Linux,
więc użytkownicy obu systemów mogą teraz w równie łatwy sposób aktualizować program.
Na jednym przycisku wskazujemy plik do wgrania, na drugim rozpoczynamy wgrywanie.
W polu statusu będą zmieniały się informacje o aktualnym stanie podczas wgrywania.

   

Kolejna informacja dotyczy programu Joker Control. Na podstawie dokumentacji producentów,
do programu dopisana jest obsługa CAT dla Icom, Yaesu z serii FT-xxxx oraz Kenwood.
Nie mam dostępu do tylu sprzętów i możliwości sprawdzenia każdego w rzeczywistości,
ale teoretycznie wszystkie te urządzenia powinny być tak samo obsługiwane przez CAT.
Dodany jest także przycisk zmieniający prędkość baudrate, więc nie trzeba przestawiać trx.
Wojtek EC4AGC sprawdził u siebie IC-7300, program nawiązał połączenie i działał poprawnie.
Tradycyjnie dla użytkowników Windows utworzony jest samodzielny plik wykonywalny exe.

   

Zapraszam zainteresowanych do pobrania i przetestowania opisanych wyżej programów.
Przy okazji napiszę jeszcze, że po zbudowaniu i uruchomieniu Jokera, mamy świetną bazę,
sprawdzoną i przetestowaną, gotową do rozpoczęcia próby stworzenia własnego programu
w środowisku Arduino i nie tylko. Osoby z zapałem do programowania mają fajną okazję
wykonać nowe oprogramowanie, ucząc się przy tym programowej obsługi świata SDR.
W dokumentach Jokera szczegółowo opisane są wszystkie sprzętowe rozwiązania,
teraz wystarczy tylko krok po kroku opisać to w logice programu zgodnie ze sprzętem.
To jest jedyna dobra droga na całkowite panowanie nad działaniem całości kodu i ułożeniu go
od samego początku według naszego pomysłu. Próba modyfikacji kodu, który napisany jest
w sposób jaki narzucił autor, nakłada na nas pewne ograniczenia, zawęża ciekawe możliwości,
utrudnia pełne zrozumienie kodu jako całości przykuwając uwagę do pojedynczych fragmentów.
Fajnie byłoby gdyby ktoś wykonał alternatywną wersję programu dla takiej bazy sprzętowej.
Poniżej seria zdjęć mojej wersji Jokera, wykonana telefonem Motorola Signature.

                     
                     
               


Załączone pliki
.zip   Icom_Yaesu_Kenwood_CAT.zip (Rozmiar: 6.17 MB / Pobrań: 23)
Cytuj
#53
Dziś opiszę zmiany programowe dla klucza telegraficznego zaproponowane przez Piotra.
Na początku przypomnę jakie funkcje posiadały wejścia na drabinkach Display Panel.

   

Klucza automatycznego nie trzeba tłumaczyć, ale klucz ręczny (sztorcowy) dzielił swoją funkcję
z wysyłaniem ustawionego na ekranie teksu telegraficznego. Było to niewygodne dla ludzi,
którzy używają tego rodzaju klucza, ponieważ nie mogli jednocześnie mieć przygotowanego
tekstu na ekranie do wysłania i nadawać przy tym znaki ręcznie. Tym bardziej w zawodach,
gdzie tekst z automatycznym licznikiem łączności nie mógł być ciągle wyświetlany.
Piotr zaproponował inny podział obowiązków dla istniejących wejść drabinki Display Panel.
Pomysł wydaje się rozwiązywać idealnie takie niedogodności, zachowując jednocześnie
ustaloną wcześniej zasadę przydziałów wejść i podłączenia kluczy oraz przycisków.
Poniżej znajduje się grafika przedstawiająca nową zasadę pracy kluczy i tekstów.

   

W submenu dla trybu CW istnieje teraz parametr CW Manipulator. Jeśli jest ustawiony na Auto,
wtedy działa klucz automatyczny, jeśli jest ustawiony na Hand, wtedy działa klucz ręczny.
Oba klucze podłączone są do tych samych wejść CW Dot i CW Dash, na jednym wspólnym
gniazdku obudowy. Klucz ręczny będzie działał tak samo na wejściu CW Dot i CW Dash.
Dzięki temu odizolowane wejście CW Key może niezależnie uruchamiać tekst z ekranu.

   

Dodatkowo do programu została dodana funkcja natychmiastowego zatrzymania procesu
wysyłania tekstów z ekranu. Zatrzymanie i wyjście z trybu nadawania umożliwia teraz
naciśnięcie klucza telegraficznego każdego rodzaju na każdym wejściu CW Dot i CW Dash.
Mamy więc przy okazji wykonany kolejny mały kroczek w kierunku przewidywalności,
swobody i pełnej kontroli nad urządzeniem.

   

Kod programu w obecnej formie zajmuje zaledwie 26% pamięci, mając już określone wszystkie
potrzebne bufory przetwarzania dla różnych operacji. Tutaj jednak nie przestrzeń określa granice
dostępnych możliwości, ale budżet czasowy na ich realizację. Póki co mieścimy się w przyjętym
rygorystycznie 21ms oknie czasowym.

   

Ze względu na nową zmienną CW Manipulator jaką możemy teraz ustawić w submenu,
zostało takie pole dodane do programu Joker Configurator. Aktualizacja będzie sprawdzianem
ostatnio dodanej funkcji wgrywania plików binarnych z poziomu dedykowanego konfiguratora.
Zapraszam zatem do testów, nowe wersje to Joker 2.6 i Joker Configurator 1.0.

   
Cytuj
#54
Otrzymałem wiadomość, że spośród osób budujących Jokera, nieliczna grupa natrafiła
na kłopot z uruchomieniem odbiornika w module RF. Sprawa jest bardzo interesująca,
pomimo takiego samego schematu, takich samych połączeń na takiej samej płytce PCB,
zdarzyły się odstępstwa w działaniu i współpracy kluczy CBT3253 z układami AD8421.
Popatrzmy najpierw na widok wnętrza AD8421 jakie zostało opisane w dokumentacji.

   

Na wejściach -IN oraz +IN znajdują się źródła prądowe dołączone do obu biegunów zasilania.
Według moich doświadczeń i pomiarów, przy zasilaniu niesymetrycznym wzmacniacza,
napięcie na tych wejściach jest bliskie połowie Vs (połowie napięcia zasilania).
Teraz popatrzmy na fragment schematu z kluczami CBT3253, interesuje nas lewa strona.
Klucze w tej konfiguracji nie są polaryzowane od strony transformatora, napięcie polaryzacyjne
podawane jest z drugiej strony, czyli od opisanych wyżej wejść układów AD8421.

   

Jest to korzystne, ponieważ kondensatory próbkujące nie mają dołączanego skokowo
napięcia polaryzacyjnego od strony transformatora przy cyklicznie zamykanych kluczach.
Na kondensatorach jest utrzymywane cały czas stałe napięcie, którego nie trzeba doładowywać.
Takie rozwiązanie działa u większości osób, ale niestety są również potwierdzone przypadki,
gdzie AD8421 nie wykazuje napięcia na wejściach lub jest one bardzo niskie, poniżej 0,5V.
W rezultacie klucze nie pracują i układ odbiornika nie działa. Trudno jest sensownie określić
dlaczego u niektórych osób, które wykonały płytkę RF, wejścia AD8421 nie wystawiają napięcia
potrzebnego do polaryzacji kluczy. Rozwiązaniem tego kłopotu jest po prostu dostarczenie
napięcia polaryzacyjnego na środkowym padzie transformatora jak na poniższym zdjęciu.

   

Niestety nie przewidziałem na płytce PCB montażu dodatkowego rezystora. Jedynym wyjściem
będzie lutowanie wersji przewlekanej od pola lutowniczego transformatora, do któregoś miejsca
z napięciem zasilania 5V. Poniżej zdjęcie z proponowanym ułożeniem takiego rezystora.

   

Tak zbudowany dzielnik z rezystorów nie musi być ustawiony na połowę napięcia zasilania 5V.
Sugerowany wybór wartości dla napięcia blisko 2V to rezystor przewlekany R po stronie zasilania
około 3k3, po stronie masy R43 około 2k2. Kondensator równolegle do rezystora najlepiej będzie
wymienić na znacznie większą pojemność dostępną dla montażu 0805. Jestem trochę rozczarowany
takimi różnicami w sposobie pracy dostępnych na rynku układów AD8421 u różnych dostawców.
Najważniejsze, że mamy teraz świadomość takich rzeczy i potrafimy sobie z tym poradzić.

   

Temat sprzętowy mamy omówiony, przejdźmy do ciekawych zmian programowych. Kod Jokera
napisany jest w sposób nieblokujący, żadna funkcja nie ma wyższego priorytetu od pozostałych.
W rozbudowanym i dobrze pracującym urządzeniu program od początku musi być zaplanowany
do działania asynchronicznego z architekturą sterowania zdarzeniami opartej na maszynie stanów.
Joker nie posiada w kodzie ani jednego zatrzymania delay() czy pętli while(), które marnowałyby
cenny czas procesora. Klasyczne podejście blokuje na chwilę program, na przykład czekając,
aż skończy się jakieś pojedyncze zadanie, Joker jest napisany tak, żeby na nic nie czekał.
W każdym obiegu głównej pętli program sprawdza aktualny status kolejnego bloku funkcyjnego,
wykonuje natychmiastową akcję jeśli jest potrzebna i od razu przechodzi do następnego kroku.
Konsekwencją takiego podejścia jest pełen determinizm czasowy, niezwykle ważny w systemach
gdzie zależy nam na maksymalnej płynności. Niezależnie od tego, czy obraca się enkoder,
rysuje wodospad, włączona jest redukcja szumu, komputer gęsto przesyła dane przez CAT,
czas przetwarzania głównej pętli pozostaje niezmienny, nie ma opóźnień w działaniu całości.
Oprócz przyjętego sposobu pisania kodu, ważną rolę odgrywa zastosowany tutaj ESP32-S3,
posiadający sprzętowe instrukcje wektorowe przyspieszające zaawansowaną matematykę.
W poprzedniej wiadomości napisałem, że modyfikacje kodu bez zrozumienia jego filozofii,
którą od początku założył autor, prawie zawsze będą kończyły się pogorszeniem działania.
Linie programu są jak trybiki w wielkiej maszynie, kiedy wszystko jest dobrze przemyślane,
otrzymujemy harmonijnie i spójnie pracujący system zarządzający pracującym urządzeniem.
Użyte narzędzie do programowania nie ma tutaj większego znaczenia. Łatwość rozpoczęcia nauki
w środowisku Arduino sprawia, że chętnie sięgają po nie początkujący. Jednak ponieważ ich wiedza
często kończy się na miganiu diodami LED, niesłusznie szufladkują tą platformę jako zabawkę.
Joker w całości napisany jest w Arduino i wcale nie narzeka na niemożność realizacji stawianych
przed nim zadań do wykonania. Przeciwnie, zachęca do tworzenia kolejnych możliwości.
Raz za razem przybliża nas to do własnoręcznie wykonanego urządzenia, którego właściwości
coraz bardziej starają się dorównać produktom z zupełnie innej, wyższej półki jakościowej.

   

Po tym przydługim wstępie o stosowanych w Jokerze praktykach w kodzie, opiszę teraz nową funkcję,
jaka została wprowadzona do programu. Każdy filtr dla modulacji SSB i CW można obecnie przesuwać.
W lewym menu podręcznym mamy pozycję z literą B jak Bandwidth, gdzie wybieramy 1 z 15 filtrów
za pomocą obrotu enkodera. Będąc przy tej pozycji, jeśli naciśniemy przycisk enkodera, wtedy litera B
zmieni się na S, co oznacza Shift. Obracając enkoder będziemy zmieniali przesunięcie danego filtru.
Podczas regulacji Shift, na wodospadzie wyróżniona kolorem strefa filtru będzie przemieszczała się
określając dokładnie nowe miejsce działania wybranego filtru. Wizualizacja podąża więc precyzyjnie
za tym co konkretnie słyszymy. Dla odsłuchu SSB może to być ucieczka przed zakłóceniem od strony
niskich częstotliwości lub odcięcie dudniących basów u korespondenta z tak akurat ustawionym audio.
Ciekawym efektem jest ustawienie węższego filtru 2k3 i przesunięcie go nieco wyżej niż jest domyślnie.

   

Dla CW działa to bardziej inteligentnie. Gdyby Shift skupiony był wyłącznie na przesuwaniu,
wtedy dość szybko utracilibyśmy stację telegraficzną z wąskiego filtru. Dlatego przy CW
razem z filtrem przesuwa się także całe widmo, utrzymując stację cały czas wewnątrz filtru.
W efekcie ton stacji zmienia się i można dopasować jego wysokość do własnych preferencji.
Shift jest niezależną funkcją od BIT, oznacza to, że bez względu na ustawione przesunięcie,
nadal mamy stały odstęp częstotliwości odsłuchu od częstotliwości nadawania, oczywiście możemy
regulować odstęp tak jak było do tej pory. Granice przesunięcia to 0 – 500Hz z krokiem 10Hz.
To jest wystarczający zakres, przy którym odsłuch ma realnie jakiś sens. Shift dla każdego filtru
jest niezależny i zapamiętywany, powstała więc nowa wyspa w programie Joker Configurator.
W tej chwili Joker Configurator jest zdolny odczytać i w przyszłości przywrócić ponad 190 ustawień.
To wydaje się być bardzo dużo, ale jeśli spojrzeć na grupy tych ustawień to widać, że taka liczba
bierze się głównie z zależności i przydzielania komórek pamięci na określone pasma, filtry, vfo itd.

   

Domyślam się, że tak skrótowy opis funkcji Shift może nie oddaje wyraźnie sposobu jego działania,
jednak Piotr na kolejnym filmie omówi wszystko dokładniej i pokaże jak to wygląda w rzeczywistości.
Zostanie również pokazana faktyczna skuteczność filtrów jakich używa Joker, szerokość ich zboczy,
zachowanie sygnału przechodzącego przez krawędzie filtrów oraz inne ciekawe i praktyczne testy.
Sposób w jaki teraz obsługiwane jest filtrowanie w programie otwiera niedostępne wcześniej drzwi
do zupełnie nowych i przydatnych funkcji, które na pewno zostaną wprowadzone w przyszłości.
Zapraszam do pobrania dostępnych teraz nowych wersji Joker 2.7 oraz Joker Configurator 1.1
Uzupełniona jest także tabelka z komendami CAT, a ten opis znajduje się w dokumentach pdf.
Na koniec kilka zdjęć opisanej na początku płytki RF ze zbliżeniem na tor odbiornika.

                     
Cytuj


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości