Czym jest UART, jak przesyłane są dane i jak go konfigurować?

Czym jest UART, jak przesyłane są dane i jak go konfigurować?

Jeśli zabraliście się za samodzielne składanie koptera na pewno słyszeliście skrót UART przy okazji podłączania odbiornika, SmartPortu, SmartAudio, czy jakiegoś dodatkowego urządzenia, a może po prostu widzieliście konfigurację w Betaflight i zastanawialiście się, czym właściwie jest. Z uwagi na to, że jest to pewien standard w komunikacji pomiędzy urządzeniami - np. GPS, SmartAudio, OSD, używają właśnie tego sposobu przesyłania informacji. Dodatkowo warto dowiedzieć się, jak podłączać i ustawiać urządzenia, aby komunikacja przebiegała poprawnie, czym jest baud rate albo dlaczego należy krzyżować piny TX i RX. Zapraszam!



UART - czym jest?

To skrót od Universal Asynchronous Receiver / Transmitter, czyli po polsku uniwersalny, asynchroniczny nadajnik i odbiornik. No tak, to też nie musi nam wiele mówić. Uniwersalność polega na tym, że wiele urządzeń wspiera ten standard. Nie jest to może kopterowe USB, ale samo rozwiązanie jest szeroko rozpowszechnione w elektronice w zakresie wymiany niewielkich ilości informacji. Asynchroniczność z kolei oznacza, że urządzenie może wysyłać dane kiedy tego potrzebuje. Musi tylko dać drugiej stronie znać, że rozpoczyna się transmisja, a po drugiej stronie przewodu rozpocznie się odbieranie danych. Dochodzimy więc do ostatniej części, czyli nadajnika i odbiornika. Chodzi o to, że komunikacja jest dwustronna, czyli urządzenie wspierające UART może zarówno odbierać dane, jak i je wysyłać. Potrzebuje do tego dwóch przewodów - po jednym na każdą stronę komunikacji. Jeśli jednak nie potrzebuje dwustronnej wymiany danych, a tylko odbierać, bądź nadawać - może się ograniczyć do jednego przewodu. Zobaczmy więc, jak je podłączać.

Piny TX oraz RX

Urządzenia wspierające UART wykorzystują 2 piny - TX oraz RX. Skrótowce te są powszechnie znane i oznaczają strony komunikacji: TX - Transmit - nadawanie oraz RX - Receive - odbiór. Takie piny występują po obu stronach urządzeń, które możemy poprzez UART podłączyć i na "chłopski rozum" wydawałoby się, że TX łączymy z TX, a RX z RX - prawda? Otóż tak właśnie się NIE robi! :) W momencie, gdy zastanowimy się, jak to właściwie działa - sytuacja staje się dość prosta.

Poprzez pin TX urządzenie wysyła dane. Druga strona musi je odebrać. Będzie na nie oczekiwała na swoim pinie RX, ponieważ tamtędy właśnie odbiera dane. Oznacza to, że obie strony łączymy na krzyż. Jeśli chcemy ze sobą połączyć na przykład kontroler lotu (FC) i GPS, to przewody poprowadzimy (przylutujemy) w taki sposób, aby GPS.TX łączył się z FC.RX (tędy GPS wysyła dane do kontrolera lotu) oraz w drugą stronę: FC.TX --> GPS.RX (tutaj to kontroler lotu dostarcza danych do GPSu).

Jeśli połączymy ze sobą piny TX i TX, oraz RX i RX nic się złego nie stanie, ale jednocześnie urządzenia na pewno się ze sobą nie skomunikują. Pamiętajmy więc o tym, aby zawsze łączyć przewody "na krzyż".

Przykładowe ustawienia

Akurat mam w domu kopter, który ostatnio konfigurowałem przez BetaFlight. Podłączyłem do niego GPS (BN-220), VTX od Furious FPV oraz odbiornik FrSky przesyłający dane po protokole SBUS. Mamy więc komplet - w sumie 3 UARTy zajęte urządzeniami peryferyjnymi. Dla przypomnienia - w tym artykule: https://4smigla.pl/diy-skladamy-kopter-do-freestyle-edycja-2019-5/ omawiałem m.in. podłączenie elektroniki do kontrolera lotu. Otóż odbiornik jest na UART3, GPS jest na UART4 (pad T4 i R4), zaś nadajnik na UART6 (pad T6). To ważne, bo w BetaFlight łatwiej będzie wszystko poustawiać.

Podłączmy więc teraz kopter po USB do komputera i spójrzmy, w jaki sposób skonfigurować te elementy.

Konfigurujemy odbiornik FrSky XSR

Jak już wspomniałem, odbiornik komunikujący się poprzez SBUS z kontrolerem lotu, jest podłączony do UART3. Zanim jednak wejdziemy w zakładkę "Ports", musimy najpierw zmienić typ protokołu odbiornika. Jeśli tego nie zrobimy, to zmiana tej opcji wymaże nam ustawienie z "Ports". To częsty błąd. Zacznijmy więc od "Configuration" i ustawmy tam "Serial Based Receiver" oraz "SBUS".

Jak będziemy mieli już tą opcję, nie zapomnijmy wybrać opcji "Save", aby zapisać to ustawienie. Przechodzimy teraz do "Ports", a więc zakładkę wyżej. Dla UART3 zaznaczamy jedynie opcję "Serial RX". Zauważmy, że nie włączam "MSP/Configuration", ponieważ taka kombinacja opcji też się nie zapisze. Wszystko ma być wyłączone, a jedynie "Serial RX" powinno być zaznaczone.

Jeśli nie pomyliliśmy UARTów, mamy wszystko dobrze polutowane i podłączone, to odbiornik będzie teraz działał.

Ustawiamy GPS BN-220

GPS wykorzystuje komunikację dwukierunkową, a więc zarówno "TX", jak i "RX". Po podłączeniu mu zasilania, oraz skrzyżowaniu połączeń sygnałowych z UART6 w kontrolerze lotu (TX z GPS do R6 oraz RX z GPS do T6) można zacząć konfigurację. Sam GPS nie ma diody, która pokazywałaby, że działa, więc jeśli macie wątpliwości - sprawdźcie też, czy na pewno podłączyliście właściwe zasilanie (5V albo 3.3V). Sama konfiguracja nie jest skomplikowana. Najpierw wchodzimy w zakładkę "Ports" i w UART4, w kolumnie Sensor Input znajdujemy GPS oraz wybieramy prędkość transmisji. Dla BN-220 można ustawić na sztywno 57600 (bitów na sekundę), ale jeśli mamy wątpliwości, można też wybrać AUTO. Jeśli nie zadziała, możemy popróbować z różnymi prędkościami przesyłu danych.

Nie zapomnijmy kliknąć "Save", jak w każdej zakładce! To jeszcze nie koniec. W "Configuration" musimy jeszcze znaleźć przełącznik GPS i go włączyć. W menu, które się rozwinie najważniejszy jest protokół. Niektóre z GPS działają w oparciu o UBLOX, inne NMEA. Mój BN-220 wstał po wybraniu UBLOX.

Skąd wiadomo, że GPS działa? Aby to sprawdzić, musimy po pierwsze wpiąć pakiet Li-Po. Mało który kontroler lotu byłby w stanie zasilić z samego tylko USB urządzenia peryferyjne - niektóre nie dostarczają napięcia nawet odbiornikom. Pamiętajmy o zdjęciu śmigieł nim wepniemy pakiet - lepiej dmuchać na zimne! Kiedy kopter się włączy, a GPS dostanie zasilanie, poczekajmy chwilę. Jeśli kontroler lotu "dogaduje się" z modułem lokalizacyjnym to w górnym menu BetaFlight ikona GPS zapali się na żółto. To oznacza, że komunikacja przebiega poprawnie. Jeśli tak się nie stanie, w pierwszej kolejności zmieńcie protokoł i sprawdźcie, czy to pomogło. Potem można testować różne prędkości komunikacji schodząc z wyższych w dół. Warto też poczytać instrukcję, jeśli takową dostaliśmy - zarówno tą od GPS, jak i kontrolera lotu. Często producenci tych ostatnich sugerują do którego UART da się co podłączyć, więc upewnijmy się, że dany UART nie jest już zajęty np. przez wbudowany odbiornik, albo inny komponent.

Podpinamy i konfigurujemy SmartAudio?

SmartAudio jest mechanizmem pozwalającym sterować nadajnikiem FPV, poprzez kontroler lotu. Z uwagi na złożoność jego konfiguracji w najnowszych wersjach BetaFlight poświęcam mu osobny artykuł, który znajdziecie tutaj: https://4smigla.pl/smartaudio-co-to-jest-i-do-czego-sluzy/

Podsumowanie

Mam nadzieję, że przybliżyłem Wam, co oznacza ów termin - UART, oraz jak wyzbyć się wątpliwości odnośnie podłączania poszczególnych peryferiów w kopterze. Powodzenia w składaniu własnych konstrukcji!