OpisNowy 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ępneWydajność 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 (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ętowaPł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, (https://image.lceda.cn/oshwhub/pullImage/c67651524c04445d9cc7854a2537ca03.png)
- 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ł, )(https://image.lceda.cn/oshwhub/pullImage/d1390c6b26844709a694d8d9f404bce0.png)
- 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, )(https://image.lceda.cn/oshwhub/pullImage/b9f956c795614837b5385f5639f6be5c.png)
(https://image.lceda.cn/oshwhub/pullImage/bbb5600b412349e598b4926ba41ecbfd.png)
- Wybierz antenę GNSS o wymiarach 8mm*8mm, to praktycznie najmniejsza dostępna ceramiczna antena GNSS.
(OBRAZ: Krok 4 - antena GNSS, )(https://image.lceda.cn/oshwhub/pullImage/7ddb2a91d78c450491b24ae47d60a002.png)
- 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)(https://image.lceda.cn/oshwhub/pullImage/f85ad787734a4087a87c3a8b0ac10385.png)
(https://image.lceda.cn/oshwhub/pullImage/7cc368a1f9884f0fb9296ad81f1abd1c.png)
(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" )(https://image.lceda.cn/oshwhub/pullImage/0cddc9d4d75442d5b94742c9e0c34dc3.png)
- 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)(https://image.lceda.cn/oshwhub/pullImage/8d8a4c05e636469bab9dc3c1291331c6.png)
(https://image.lceda.cn/oshwhub/pullImage/9d5c010364f64b48acb525dcc94f33e8.png)
(https://image.lceda.cn/oshwhub/pullImage/389ce5ef66c54054851bcdca68a0b6f1.png)
- 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" - )(https://image.lceda.cn/oshwhub/pullImage/6db460701a1f480fba0b3cde05545cb1.png)
(https://image.lceda.cn/oshwhub/pullImage/322fdc157be7499abe9fc5d7c1442937.png)
[/list]
OprogramowanieOprogramowanie dla K5WprowadzenieKod ź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 (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 STM32WprowadzenieKod ź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.
Sposób użyciaPrzełączanie aplikacjiPo 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ługaGłówny interfejs(OBRAZ: Główny interfejs aplikacji koprocesora)(https://image.lceda.cn/oshwhub/pullImage/a4993eceafde4067900fff121dcc8d8b.png)
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)(https://image.lceda.cn/oshwhub/pullImage/803072193e5b4ad5bf49ec4c32d90c1f.png)
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)(https://image.lceda.cn/oshwhub/pullImage/112f831d9c1a4390a42d6c00dd6465f0.png)
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)(https://image.lceda.cn/oshwhub/pullImage/3d3e02ff21b34c3aba1df07b101e2f54.png)
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)(https://image.lceda.cn/oshwhub/pullImage/ef36c702ae644d3fb88c9533e673b238.png)
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 projektoweBoard2(OBRAZ: Główny obraz płytki "Board2" - (https://image.lceda.cn/oshwhub/pullImage/9952b5fa2c474f6b8008e25a2700a395.png)
Schemat ideowy(https://image-pro.lceda.cn/pullimages/24abbcd35f9d482498d0089cb3be9edf.webp)
PCB(https://image-pro.lceda.cn/pullimages/143a9c2ac8a946939a9a857819d087d6.webp)
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