Czat

2024-01-26, 14:09:11
admin: forum pod tym linkiem: https://k5.2je.eu/index.php?action=forum

2024-01-26, 13:55:37
admin: Witam


Welcome to Quansheng UV-K5 Modding Fan Forum. Please login or sign up.

Maj 09, 2025, 17:45

Login with username, password and session length

Recent

UVK5-STM32 (zintegrowany koprocesor z modułem GPS dla łączności satelitarnej)

Zaczęty przez admin, Maj 08, 2025, 19:50

Poprzedni wątek - Następny wątek

admin

Opis
Nowy mod hardware dla miłośników komunikacji satelitarnej, z dodatkowym procesorem i wbudowanym odpowiednikiem GPS.

źródło: https://oshwhub.com/455360a/uvk5-cp?fbclid=IwY2xjawKJsypleHRuA2FlbQIxMQABHonnL9pTJUuDWOh3aLgmrliujwovHl8-Uc0lcwQqJCjxd8I6iWpMTHXk9Fq8_aem_KvsH8XLYAgOXZvyNsrQqPA

Słowo wstępne

Wydajność układu DP32G030 wbudowanego w UVK5 jest, można powiedzieć, "w sam raz". Zarówno częstotliwość taktowania, jak i przestrzeń pamięci programu są wystarczające jedynie do realizacji podstawowych funkcji urządzenia, co ogranicza możliwości rozbudowy i modyfikacji. Chociaż istnieją już techniki wykorzystujące zewnętrzną pamięć ROM jako rozszerzenie przestrzeni programu, umożliwiające realizację różnych funkcji, niektóre zaawansowane funkcje wciąż są ograniczone przez wydajność samego MCU.

W kręgach modyfikujących UVK5 pojawił się już moduł rozszerzeń krótkofalowych oparty na SI4732, który zastępuje oryginalny układ odbiornika radiowego BK1080 i komunikuje się za pomocą magistrali I2C.

Hmm, I2C, tak? Magistrala, tak? W oryginalnym MCU K5 do magistrali I2C podłączony jest ekran, BK1080 i EEPROM. Więc dodanie czegoś mocniejszego nie wydaje się niemożliwe. Pomyślałem, że STM32 jako I2C Slave też da radę.

Skoro już dodaję, a miejsce tam wygląda na całkiem spore, to czemu by nie dodać modułu GNSS? W ten sposób urządzenie zamieni się w maszynkę do radosnego "łapania gwiazd" (pracy satelitarnej).

Film demonstracyjny: https://www.bilibili.com/video/BV1zvRNYdEdj

Zrealizowane funkcje
  • Pozycjonowanie GNSS
  • Obliczanie pozycji satelitów w czasie rzeczywistym
  • Obliczanie przesunięcia dopplerowskiego w czasie rzeczywistym
  • Prognoza trajektorii satelitów na najbliższe 2 godziny

Modyfikacja sprzętowa

Płytka z projektu poniżej jest gotowa do użycia od razu po wykonaniu. Moduł GNSS na niej można zastąpić innym modelem ATGM336.

Kroki instalacji
  • Wylutuj wbudowany BK1080.
(OBRAZ: Krok 1 - demontaż BK1080,

  • Przylutuj BK1080 na pady SOT-8 modułu. Uwaga: pady na module są dość wąskie, może być konieczne lekkie dogięcie nóżek układu do środka.
(OBRAZ: Krok 2 - lutowanie BK1080 na moduł, )

  • Przylutuj moduł z powrotem w miejsce BK1080. Tutaj potrzeba trochę umiejętności lutowniczych, trzeba będzie przeciągnąć mostki cynowe z padów płyty głównej K5 na przednią stronę PCB. Oczywiście można też dopłacić za cieńszą płytkę, ja wybrałem 0.8mm, bo ta grubość nie wymaga dopłaty.
(OBRAZ: Krok 3 - montaż modułu na płycie K5, )


  • Wybierz antenę GNSS o wymiarach 8mm*8mm, to praktycznie najmniejsza dostępna ceramiczna antena GNSS.
(OBRAZ: Krok 4 - antena GNSS, )

  • Przyklej ją gorącym klejem do tylnej części diody LED, zwracając uwagę na odpowiednie ustawienie, aby kabel antenowy wychodził z boku, a następnie przechodził nad górną krawędzią PCB (jak pokazano strzałką).
(OBRAZ: Krok 5 - montaż anteny GNSS za pomocą kleju na gorąco, ze strzałką wskazującą prowadzenie kabla)


(OBRAZ: Górna krawędź anteny wyrównana z przednią krawędzią taśmy ekranu)
  • W aluminiowej obudowie wykonaj wycięcie, jak pokazano na rysunku. Bazując na istniejącym płytkim wgłębieniu, zeszlifuj 2mm po bokach, a dno zeszlifuj do poziomu wewnętrznej powierzchni dolnej. Lewą górną krawędź przytnij o 3mm, a następnie dodaj fazkę do poprowadzenia kabla antenowego.
(OBRAZ: Krok 6 - modyfikacja obudowy, "jak pokazano na rysunku" )

  • Wokół anteny koniecznie zostaw co najmniej 1mm szczeliny, inaczej antena nie będzie odbierać sygnału.

  • Przylutuj kabel antenowy do pinów anteny i GND modułu GNSS.
(OBRAZ: Krok 7 - lutowanie kabla antenowego)



  • Przylutuj superkondensator. Uwaga: kondensator należy zamontować odwrotnie (patrz rysunek, biegun ujemny na górze, dodatni na dole), więc nie zlecaj montażu SMT, kup element osobno i przylutuj go samodzielnie!
(OBRAZ: Krok 8 - montaż superkondensatora, "patrz rysunek" - )


[/list]

Oprogramowanie

Oprogramowanie dla K5

Wprowadzenie
Kod źródłowy projektu znajduje się w pliku
uvk5-firmware-cpeval-main.zip.
Adres projektu na GitHub: https://github.com/wabulutian/uv-k5-firmware-cpeval

Oparty na firmware z analizatorem widma od Fagci. Po wycięciu całego kodu związanego z funkcjami biznesowymi, poza podstawowymi funkcjami, udało się zwolnić około 20kB przestrzeni pamięci programu, w której zaimplementowano funkcje związane z koprocesorem (dalej nazywane "aplikacją koprocesora").

Ani odczyt i dekodowanie wiadomości GNSS, ani obliczanie statusu satelitów za pomocą biblioteki SGP nie mogą być wykonane w procesorze K5. Dlatego aplikacja koprocesora zapewnia jedynie podstawowe funkcje wyświetlania, sterowania oraz kontroli części radiowej, okresowo komunikując się przez magistralę I2C z STM32 w celu uzyskania końcowych wyników złożonych funkcji.

Aby jeszcze bardziej zmniejszyć rozmiar aplikacji koprocesora, jak najwięcej obliczeń przeniesiono na stronę STM32. Na przykład operacje mnożenia, dzielenia, reszty z dzielenia są wykonywane na STM32, a aplikacja koprocesora odbiera tylko dane do wyświetlenia (np. STM32 dzieli liczbę zmiennoprzecinkową 123.456 na dwie liczby całkowite 123 i 456 (gdyby zamienić na 123456, końcowe wyświetlenie nadal wymagałoby dzielenia i reszty z dzielenia) i wysyła je przez I2C).

Trochę przeprojektowałem interfejs użytkownika.

Biorąc pod uwagę, że głównym zastosowaniem jest praca satelitarna, gdzie głównie dostosowuje się częstotliwości nadawania i odbioru, oryginalny tryb wyświetlania VFOA+VFOB został zmieniony na format TX+RX. Dodatkowo zrezygnowano z blokady szumów (kto przy pracy satelitarnej używa blokady szumów?).

Dodano funkcję obliczania przesunięcia częstotliwości dla transponderów liniowych. Zgodnie z powszechnymi praktykami łączności przez satelity liniowe, dostępne są dwa tryby Dopplera: "stałe TX, RX się zmienia" oraz "stałe RX, TX się zmienia", a także dwa tryby powiązania częstotliwości: "normalny transponder" i "odwrócony transponder". Pierwotnie miało to służyć do łączności CW przez satelity liniowe w połączeniu z funkcją A1A CW, ale zabrakło miejsca w pamięci na kod A1A CW, więc teraz służy tylko do nasłuchu.

Nadal z powodu braku miejsca w pamięci, aplikacja koprocesora może jednocześnie wyświetlać informacje w czasie rzeczywistym tylko dla 10 satelitów lub prognozę na najbliższe 2 godziny dla 1 satelity.

Poza aplikacją koprocesora mamy czysty system podstawowy. Ponieważ zachowano BK1080 i nie dokonano żadnych modyfikacji w EEPROM, jest to bardzo bezpieczne – nie ma obaw o utratę kanałów, kalibracji czy niemożność korzystania z radia.

Istniejące problemy
  • Nie mam pojęcia o definicjach rejestrów i sposobie obsługi BK4819. Parametry takie jak AGC, redukcja szumów są ustawione chaotycznie, więc jakość odbioru może być gorsza niż w innych firmware'ach.
  • Tor odbiorczy RF czasami szwankuje, prawdopodobnie gdzieś wyciekła pamięć do kodu sterującego rejestrami układu BK4819.
  • Ustawienia blokady szumów CTCSS aplikacji koprocesora i systemu podstawowego będą ze sobą kolidować. Jednak ja używam tego głównie uruchamiając od razu aplikację koprocesora, więc dla mnie to nie problem.
  • Podczas zmiany częstotliwości słychać trzaski, prawdopodobnie jest to szum powstały po demodulacji zakłóceń chwilowych przy zmianie parametrów mieszacza, szczególnie widoczne w trybie DSB. Zauważyłem jednak, że niektóre firmware'y potrafią wyeliminować ten szum, nie wiem jak to zrobić, więc tego nie robiłem.
  • Niektóre błędy z oryginalnego firmware'u z analizatorem widma od Fagci.

Oprogramowanie dla STM32

Wprowadzenie
Kod źródłowy projektu znajduje się w pliku
UVK5-CP-PLUS-GNSS.zip, jest to aplikacja typu "bare-metal" (bez systemu operacyjnego) dla STM32CubeMX + MDKARM.

Główne dwie funkcje to: pozycjonowanie i synchronizacja czasu oraz obliczanie efektu Dopplera.

Pozycjonowanie i synchronizacja czasu polega na odczytywaniu komunikatów z portu szeregowego modułu GNSS, co bezpośrednio dostarcza czas UTC oraz długość i szerokość geograficzną. Do obliczania stanu satelitów używana jest otwarta biblioteka SGP/SDP, która posiada funkcję odczytu parametrów z TLE.

Dane TLE są wysyłane do K5 przez port szeregowy za pomocą kabla do programowania, a następnie przesyłane bez zmian przez I2C do STM32. Aplikacja koprocesora pełni tu głównie rolę przezroczystego przekaźnika.

Istniejące dane (parametry satelitów, lokalizacja stacji, strefa czasowa itp.) są przechowywane w wewnętrznej pamięci flash, co zapewnia ich zachowanie po wyłączeniu zasilania. Przy każdym uruchomieniu wykorzystywane są zapisane dane.

Strefa czasowa służy tylko do wygody wyświetlania, w całym programie używany jest czas UTC lub sekundy UNIX.

Przy każdym uruchomieniu, po pierwszym udanym pozycjonowaniu GNSS, najnowsze informacje o lokalizacji są zapisywane w pamięci flash. Później już się tym nie przejmuje, ponieważ praca satelitarna nie wymaga wysokiej dokładności pozycjonowania.

Program ma dwa tryby: tryb normalny i tryb prognozy.

W trybie normalnym, z cyklem 2-sekundowym, przeglądane są informacje o 10 satelitach, a ich parametry w czasie rzeczywistym są obliczane (planowane przez przerwanie timera co 200ms). Parametry te obejmują kąt elewacji w czasie rzeczywistym, azymut, prędkość, częstotliwości nadawania i odbioru itp.

W trybie prognozy, główna częstotliwość taktowania procesora pozwala na aktualizację parametrów w czasie rzeczywistym tylko dla jednego satelity z częstotliwością odświeżania 1Hz, prognozowanie orbity na najbliższe 2 godziny oraz podawanie odliczania do następnego wschodu/zachodu satelity.

Teoretycznie, pisanie tej aplikacji w oparciu o system operacyjny typu FreeRTOS lub RTT byłoby bardziej efektywne, ale byłem leniwy.

Istniejące problemy
  • Po włączeniu trybu prognozy nie można wejść w przerwanie portu szeregowego, co uniemożliwia aktualizację danych GNSS. Chociaż obecnie port szeregowy jest po prostu wyłączany w trybie prognozy i nie ma to większego wpływu, jest to jednak usterka.

admin

Sposób użycia

Przełączanie aplikacji
Po uruchomieniu naciśnij klawisze F+5, aby wejść do aplikacji koprocesora. W głównym interfejsie aplikacji naciśnij klawisz EXIT, aby wrócić do systemu podstawowego.

Interfejs i obsługa
Główny interfejs
(OBRAZ: Główny interfejs aplikacji koprocesora)

Funkcje klawiszy:
  • M: Wejście do menu głównego; (gdy aktywne jest menu podręczne) wyjście z menu podręcznego
  • ↑: Zwiększenie głównej częstotliwości; (gdy aktywne jest menu podręczne) modyfikacja bieżącego elementu menu podręcznego
  • ↓: Zmniejszenie głównej częstotliwości; (gdy aktywne jest menu podręczne) modyfikacja bieżącego elementu menu podręcznego
  • EXIT: Wyjście; (gdy aktywne jest menu podręczne) wyjście z menu podręcznego
  • PTT: Nadawanie w trybie FM
  • Klawisz boczny 1: Włączenie menu podręcznego
  • Klawisz boczny 2: Brak funkcji
  • 1: Zwiększenie częstotliwości pomocniczej
  • 2: Przełączenie trybu sterowania częstotliwością: Tx → Rx → Tx ręczne, Rx podąża → Rx ręczne, Tx podąża
  • 3: Brak funkcji
  • 4: Przełączenie kroku strojenia częstotliwości: 100k → 10k → 1k → 100Hz
  • 5: Wejście w tryb wprowadzania częstotliwości
  • 6: Przełączenie szerokości pasma AF: 25k → 12.5k → 6.25k
  • 7: Zmniejszenie częstotliwości pomocniczej
  • 8: Brak funkcji
  • 9: Brak funkcji
  • 0: Przełączenie trybu demodulacji: FM → AM → DSB
  • *: Brak funkcji
  • F: Brak funkcji
Menu główne
(OBRAZ: Menu główne aplikacji koprocesora)

Funkcje klawiszy:
  • M: Wejście do wybranego podmenu
  • ↑: Przesunięcie kursora w górę
  • ↓: Przesunięcie kursora w dół
  • EXIT: Powrót do głównego interfejsu
Podmenu informacji GNSS
(OBRAZ: Podmenu informacji GNSS)

Funkcje klawiszy:
  • M: Zapisanie bieżącej strefy czasowej
  • ↑: Strefa czasowa +1
  • ↓: Strefa czasowa -1
  • EXIT: Powrót do menu głównego
Podmenu informacji o satelitach
(OBRAZ: Podmenu informacji o satelitach)

Funkcje klawiszy:
  • M: Włączenie trybu prognozy/Dopplera dla bieżącego satelity → wyjście z trybu prognozy/Dopplera
  • ↑: Przesunięcie kursora w górę
  • ↓: Przesunięcie kursora w dół
  • EXIT: Powrót do menu głównego
  • *: Przejście do podmenu TLE dla satelity o numerze odpowiadającym bieżącej pozycji
Podmenu importu TLE
(OBRAZ: Podmenu importu TLE)

Funkcje klawiszy:
  • M: (Gdy dane są prawidłowe) Import bieżącego TLE; (w trybie usuwania) Usunięcie danych satelity z tej pozycji
  • ↑: Zwiększenie numeru pozycji
  • ↓: Zmniejszenie numeru pozycji
  • EXIT: Powrót do menu głównego
  • *: Przejście do podmenu informacji o satelicie dla bieżącego numeru pozycji
  • F: Przełączenie trybu importu/usuwania TLE
Chcę tylko popracować przez satelitę
  • Włącz urządzenie.
  • Naciśnij F+5, aby wejść do aplikacji koprocesora.
  • Naciśnij MENU, aby wejść do menu głównego.
  • Jeśli nie ma jeszcze pozycjonowania i synchronizacji czasu, lub poprzednie dane są już nieaktualne:
    • Wyjdź na otwartą przestrzeń i poczekaj na pozycjonowanie GNSS i synchronizację czasu (zimny start trwa około 3 minut).
    • Upewnij się, że tryb prognozy/Dopplera nie jest włączony, w przeciwnym razie nie będzie można odbierać wiadomości z modułu GNSS.
    • Po udanym pozycjonowaniu i synchronizacji czasu, podmenu informacji GNSS wyświetli odpowiednie dane, a na górnym pasku stanu pojawi się znacznik "G".

  • Jeśli nie zaimportowano jeszcze informacji o satelitach:
    • Wybierz TLE, wejdź do podmenu importu TLE.
    • Podłącz kabel do programowania, otwórz na komputerze asystenta portu szeregowego, ustaw prędkość transmisji na 600000, a następnie wyślij parametry satelity w następującym formacie:
TLE+
Nazwa satelity
Pierwsza linia TLE
Druga linia TLE
Częstotliwość uplink transpondera (w Hz)
Częstotliwość downlink transpondera (w Hz)
$
Na przykład:
TLE+
ASRTU-1
1 61781U 24199AY  24350.96869213  .00004303  00000-0  17741-3 0 00002
2 61781 097.3789 215.1172 0019342 097.4012 322.3356 15.23939602000014
145850000
436210000
$

  • Użyj klawiszy góra/dół, aby wybrać numer pozycji do zapisu, naciśnij klawisze 1-5, aby sprawdzić, czy informacje wyświetlane na ekranie są zgodne z przesłanymi przez port szeregowy.
  • Jeśli na ekranie wyświetla się "VALID", naciśnij klawisz MENU, aby zapisać dane tego satelity.

  • Jeśli informacje o satelitach zostały już zaimportowane:
  • Wejdź do podmenu informacji o satelitach, wybierz satelitę, z którym chcesz pracować, naciśnij klawisz MENU, aby włączyć tryb prognozy/Dopplera. Po lewej stronie nazwy satelity pojawi się symbol ">".
  • Wróć do głównego interfejsu aplikacji koprocesora, naciśnij klawisz boczny 1, aby wejść do menu podręcznego. Wielokrotnie naciskaj klawisz boczny 1, aby wybrać pozycję menu, użyj klawiszy góra/dół, aby zmodyfikować wartość.
  • Ustaw pierwszą pozycję menu podręcznego (tryb śledzenia) na FM, trzecią pozycję ustaw zgodnie z tonem CTCSS transpondera. Po zakończeniu ustawień naciśnij MENU lub EXIT, aby wyjść z menu podręcznego.
  • Gdy tryb śledzenia jest ustawiony na FM, częstotliwości RX i TX zmienią się na częstotliwości tego satelity w czasie rzeczywistym.
  • W dolnej środkowej części interfejsu można sprawdzić nazwę satelity, azymut, odliczanie do następnego wschodu/zachodu. W prawym dolnym rogu interfejsu można zobaczyć obraz radarowy i prognozę trajektorii.

[/list]

Schematy projektowe

Board2
(OBRAZ: Główny obraz płytki "Board2" -


Schemat ideowy



PCB


BOM (Lista materiałów)
  • Pobierz BOM (link na oryginalnej stronie)
  • Zamów w 立创商城 (LCSC) (link na oryginalnej stronie)
(Poniżej uproszczona tabela BOM. Pełna tabela dostępna na oryginalnej stronie.)
  • ID: 1
    Nazwa: SOP-8_Replace_Stamp
    Oznaczenie: P1
    Footprint: SOP-8_Replace_SMD
    Ilość: 1

  • ID: 2
    Nazwa: 10kΩ
    Oznaczenie: R1,R2
    Footprint: R0402
    Ilość: 2
    Numer części producenta: RC0402FR-0710KL
    Producent: YAGEO(国巨)
    Dostawca: LCSC
    Numer części dostawcy: C60490

  • ID: 3
    Nazwa: 1.27MM*4P排针 (Złącze pinowe 1.27mm*4P)
    Oznaczenie: P2
    Footprint: HDR-TH_4P-P1.27_1.27MM-4P
    Ilość: 1
    Producent: 1.27MM*4P排针
    Dostawca: LCSC
    Numer części dostawcy: C99000248344

  • ID: 4
    Nazwa: 100pF
    Oznaczenie: C1
    Footprint: C0402
    Ilość: 1
    Numer części producenta: 0402CG101J500NTF
    Producent: FH(风华)
    Dostawca: LCSC
    Numer części dostawcy: C15465

  • ID: 5
    Nazwa: STM32L431CCU6
    Oznaczenie: U1
    Footprint: VQFN-48_L7.0-W7.0-P0.50-BL-EP5.5
    Ilość: 1
    Numer części producenta: STM32L431CCU6
    Producent: ST(意法半导体)
    Dostawca: LCSC
    Numer części dostawcy: C1337258