(Nie)standardowe interfejsy szeregowe (1). 1-Wire, UART, USART, RS-232, RS-422, RS-485

(Nie)standardowe interfejsy szeregowe (1). 1-Wire, UART, USART, RS-232, RS-422, RS-485

Głównym zadaniem interfejsów komunikacyjnych jest przekazywanie danych pomiędzy elementami systemu lub systemów elektronicznych. Dane można przesyłać w sposób równoległy, czyli jako kombinację stanów logicznych odpowiadających wartościom 8-, 16-, czy 32-bitowym, lub w sposób szeregowy, jako ciąg bitów, który może być przekształcony na takie same dane. Główną zaletą interfejsów szeregowych jest to, że mogą być zrealizowane z użyciem zaledwie kilku portów I/O, kilku przewodów i niewielkich złączy, a szybkością transmisji sięgają Gbps. W artykule opisaliśmy najczęściej stosowane w elektronice, klasyczne interfejsy szeregowe – podstawy ich funkcjonowania, najważniejsze zalety, wady i ograniczenia, ich praktyczne implementacje oraz niektóre niestandardowe zastosowania.

1-Wire

Interfejs 1-Wire to prosty system komunikacji umożliwiający dwukierunkową, asynchroniczną komunikację typu half duplex (nadawanie i odczyt danych nie mogą odbywać się jednocześnie), między sterownikiem głównym (master) i jednym lub wieloma układami podrzędnymi (slave). Jak sama nazwa wskazuje, transmisja danych odbywa się za pośrednictwem pojedynczej linii, która jednocześnie może służyć do zasilania układów podrzędnych (rysunek 1). Wszystkie układy w magistrali muszą być podłączone do wspólnej masy.

Rysunek 1. Struktura magistrali 1-Wire (https://t.ly/koUbu)

Magistrala 1-Wire jest obwodem z tzw. otwartym drenem (rysunek 2), w którym napięcie bliskie 0 V (logiczne 0) jest stanem aktywnym. W stanie bezczynności magistrala jest podciągana do napięcia zasilającego, zwykle 3…5 V, za pomocą rezystora (pull-up). Układy podrzędne są wyposażone w kondensatory o pojemności ok. 800 pF, ładowane napięciem z linii danych – zgromadzona energia jest następnie używana do zasilania tych układów. Opadające zbocza impulsów są strome i wyraźne, zaś narastające – ze względu na znaczne wartości rezystorów pull-up i pojemności – mogą być dość powolne.

Rysunek 2. Uproszczony schemat obwodów wewnętrznych układów 1-Wire (https://t.ly/et13L)

Według specyfikacji, do linii danych najlepiej przyłączyć rezystor podciągający o rezystancji rzędu 5 kΩ (4,7 kΩ). Jeśli wartość rezystancji będzie zbyt mała, podrzędne urządzenia nie będą w stanie obniżyć napięcia do 0 V, zaś jeżeli zbyt duża – do układów nie zostanie doprowadzony wymagany prąd. W praktyce bardzo często, zwłaszcza w przypadku długich połączeń, stosuje się mniejsze wartości rezystancji pull-up (nawet rzędu 1 kΩ) oraz układy aktywnego podciągania.

Aktywne podciąganie

Urządzenia podłączane do magistrali 1-Wire, które zasilane są poprzez linię danych, korzystają z tzw. trybu zasilania pasożytniczego (parasite power). Jednak niektóre układy mogą wymagać więcej energii – np. czujnik temperatury w trakcie procesu konwersji czy też pamięć EEPROM, w trakcie operacji kasowania lub realizacji zadań kryptograficznych. Należy wtedy stosować aktywne podciąganie linii danych, czyli metodę, która w odpowiednich momentach omija rezystor podciągający obwodem o niskiej impedancji. Może to być port mikrokontrolera skonfigurowany jako wyjście typu push-pull lub dodatkowy obwód, taki jak na rysunku 3.

Rysunek 3. Aktywne podciąganie interfejsu 1-Wire zrealizowane jako dodatkowy obwód z dyskretnym tranzystorem MOSFET (https://t.ly/dMckR)

Komunikacja po 1-Wire

Dwukierunkowa wymiana danych poprzez interfejs 1-Wire jest realizowana za pomocą czterech prostych sekwencji, opierających się na mechanizmie slotów czasowych:

  • inicjalizacja magistrali,
  • nadanie logicznej jedynki,
  • nadanie logicznego zera,
  • odczyt bitu danych.

Bazując na powyższych czterech operacjach, możemy zrealizować kompletne funkcje adresowania urządzeń, przesyłania i odczytu pojedynczych bitów oraz całych bajtów danych. Dokładny opis sposobu komunikacji można znaleźć na stronie [1].

1-Wire
Zalety
• Działa z użyciem jednej linii komunikacyjnej (oraz linii masy zasilania).
• Linia komunikacyjna może jednocześnie służyć do zasilania układów podrzędnych (zasilanie pasożytnicze).
• Do jednej linii interfejsu 1-Wire może być dołączonych wiele układów.
• Każdy układ 1-Wire ma unikalny, 64-bitowy numer identyfikacyjny (ROM ID), co umożliwia precyzyjną kontrolę działania.
• Długość magistrali teoretycznie może przekraczać 100 m, ale w praktyce stabilna komunikacja działa przy długości do ok. 30 m.

Wady

• Niewielka przepustowość transmisji danych – standardowo 16 kbps, maksymalnie do ok. 110…140 kbps w trybie przyspieszonym (overdrive).
• Wymaga układu nadrzędnego, który jest w stanie wykonywać zadania i precyzyjnie odmierzać czas w zakresie pojedynczych μs.
• Podatność na zakłócenia, zwłaszcza przy długich i rozgałęzionych magistralach.

1-Wire Overdrive

Overdrive to specjalny tryb działania interfejsu 1-Wire, w którym wszystkie czasy trwania impulsów są skracane, co zwiększa prędkość transmisji z ok. 16 kbps do około 140 kbps. Działa tylko wtedy, gdy zarówno układ master, jak i slave obsługują ten tryb – urządzenia komunikują się szybciej, ale wymagają szybkiej reakcji i precyzyjniejszego odmierzania czasu.

Zastosowania 1-Wire

Układy 1-Wire to przede wszystkim czujniki temperatury (DS18B20 – fotografia 1), pamięci EEPROM (DS2430, DS2431), układy bezpiecznego uwierzytelniania, tzw. iButton (DS1990 – fotografia 1, DS1963S), układy z unikalnym numerem identyfikacyjnym (DS2401). Typowe zastosowania tych układów obejmują identyfikację i uwierzytelnianie komponentów do drukarek, materiałów medycznych, akcesoriów i urządzeń peryferyjnych, ochronę własności intelektualnej, zapobieganie klonowaniu i bezpieczne sterowanie funkcjami urządzenia.

Fotografia 1. Układy z interfejsem 1-Wire: czujnik temperatury DS18B20 (w obudowie TO-92) i układy „pastylkowe” do bezpiecznego uwierzytelniania typu DS1990, tzw. iButton (https://t.ly/Ggkq8)

Mostki 1-Wire

Układy z interfejsem 1-Wire to nie tylko urządzenia typu slave. Firma Analog Devices (która przejęła markę Maxim) produkuje szeroką gamę urządzeń 1-Wire typu master, które mogą być stosowane do niezawodnego kontrolowania sieci z urządzeniami 1-Wire slave. Są to tzw. mostki 1-Wire, ponieważ pośredniczą pomiędzy hostem – mikrokontrolerem, układem FPGA, czy komputerem PC – a urządzeniem podrzędnym 1-Wire. Dzięki takiemu rozwiązaniu procesor hosta nie komunikuje się bezpośrednio z urządzeniem podrzędnym 1-Wire, a więc nie musi generować krytycznych czasowo sekwencji tego protokołu. Procesor hosta komunikuje się z urządzeniem mostkującym za pomocą interfejsu, który jest mniej wymagający pod względem zasobów lub został już fabrycznie zaimplementowany jako gotowy blok sprzętowy – zwykle jest to interfejs UART lub I²C. W efekcie całą aplikację można tworzyć w języku wysokiego poziomu i niekiedy działa ona nawet bardziej stabilnie.

Przykładowy układ tego typu – DS2480B – pełni funkcję mostka UART-1-Wire. Wśród jego zadań warto wymienić:

  • aktywny obwód podciągania (APU), który jest uruchamiany automatycznie po przekroczeniu określonych napięć na zboczach narastających sekwencji 1-Wire i umożliwia bezproblemowe sterowanie wieloma urządzeniami znajdującymi się na magistrali,
  • zintegrowany akcelerator wyszukiwania, dzięki któremu sekwencja wyszukiwania urządzeń jest łatwiejsza do zaimplementowania w oprogramowaniu,
  • możliwość programowania urządzeń 1-Wire EPROM (Erasable Programmable Read Only Memory), jeśli będzie dostępne napięcie 12 V,
  • komunikacja poprzez interfejs UART lub RS232 w standardzie 5 V,
  • prędkość komunikacji do 115,2 kbps.

Na rysunku 4 został pokazany uproszczony schemat systemu z układem DS2480B.


Rysunek 4. Uproszczony schemat aplikacyjny układu DS2480B (https://t.ly/IVzk7)

Interesującym układem jest także DS2465, który pełni funkcję mastera 1-Wire oraz zawiera koprocesor SHA-256. Układ oferuje:

  • zintegrowany moduł SHA-256 do kryptograficznego uwierzytelniania bezpiecznych urządzeń podrzędnych 1-Wire SHA-256,
  • dwie 32-bajtowe strony pamięci EEPROM do przechowywania danych użytkownika,
  • aktywny (APU) lub pasywny (RPUP) obwód podciągania – obydwa zapewniają efektywną pracę urządzeń 1-Wire na dużych odległościach,
  • wejście aktywujące tryb niskiego poboru mocy (SLPZ), pozwalający oszczędzać energię, gdy DS2465 nie jest używany;
  • rozwiązania ułatwiające implementację sekwencji wyszukiwania ROM 1-Wire w oprogramowaniu,
  • sterowanie sterujące zasilaniem portu 1-Wire, pozwalające na wyłączanie urządzeń na magistrali,
  • ustawienia synchronizacji 1-Wire dla standardowych i przyspieszonych prędkości w celu obsługi szerokiej gamy urządzeń podrzędnych 1-Wire.

Układ DS2465 łączy się z modułem nadrzędnym poprzez interfejs I²C i może komunikować się z taktowaniem do 400 kHz. Uproszczony schemat systemu z układem DS2465 został pokazany na rysunku 5.

Rysunek 5. Uproszczony schemat systemu z układem DS2465 (https://t.ly/DSFLK)

UART

Określenie UART oznacza Universal Asynchronous Receiver and Transmitter. Zatem magistrala UART zawiera dwie linie komunikacyjne – TxD (Tx), czyli wyjście nadajnika (transmitter) wysyłające strumień bitów oraz RxD (Rx), czyli wejście odbiornika (receiver). Sygnał TxD w układzie nadającym dane jest podłączony do wejścia RxD w układzie odbiorczym i odwrotnie – dodatkowa linia musi łączyć masy zasilania obu układów (rysunek 6). Asynchroniczny interfejs UART może działać w trybie half duplex lub full duplex (nadawanie i odbieranie może odbywać się w tej samej chwili) i jest używany do komunikacji na niewielkie odległości, głównie w systemach wbudowanych.

Rysunek 6. Podstawowa struktura łącza UART (https://t.ly/XPHmJ)

Każda linia komunikacyjna (TxD, RxD) składa się z bufora zapisu/odczytu (który jest w istocie szeregowym rejestrem przesuwnym) oraz generatora sygnału taktowania, odpowiadającego za ustalenie szybkości transmisji urządzenia. Ustawienia prędkości komunikacji obydwu urządzeń powinny być takie same, aby komunikacja była bezbłędna.

Ramka danych UART

Podstawowa ramka danych UART jest zdefiniowana jako jedno słowo danych z bitami synchronizacji, czyli bitami startu i stopu, a także opcjonalnym bitem parzystości do sprawdzania błędów. Ramka zaczyna się od bitu startowego (St), który oznacza, że linia danych opuszcza stan bezczynności (IDLE). Ten ostatni jest zazwyczaj równoznaczny z logicznym stanem wysokim, więc bit startowy to logiczne 0. Następne bity to właściwe słowo danych, zaczynające się od najmniej znaczącego bitu (LSB). Słowo może zawierać od 5 do maksymalnie 9 bitów. Jeśli jest włączona funkcja sprawdzania parzystości, to bit parzystości (P) jest wstawiany po najstarszym bicie danych (MSB), przed bitem/bitami stopu (Sp1, Sp2). Podstawowa ramka danych UART została pokazana na rysunku 7.

Rysunek 7. Podstawowa ramka danych UART (https://t.ly/6x3zk)

Podsumowując: interfejs UART ma wiele kombinacji prawidłowych formatów ramek, a zatem konfiguracja obejmuje:

  • 1 bit startowy (start bit),
  • 5, 6, 7, 8 lub 9 bitów danych (data bits),
  • brak bitu parzystości (none), bit parzysty (even) lub nieparzysty (odd),
  • 1 lub 2 bity stopu (stop bits), w niektórych systemach dostępna jest także opcja 1,5 bitu.

Najbardziej znaczący bit „wnętrza” ramki może pełnić funkcję bitu parzystości – podstawowego mechanizmu sprawdzania błędów. Bit parzystości określa, czy całkowita liczba bitów w stanie wysokim („jedynek”) jest nieparzysta czy parzysta – w zależności od konfiguracji. Bit parzystości oblicza się, wykonując operację exclusive-OR wszystkich bitów danych. Jeśli konfiguracja ustawiona jest na tryb nieparzysty (odd), wynik operacji exclusive-OR jest odwracany. Relacja między bitem parzystości a bitami danych została pokazana na rysunku 8.

Rysunek 8. Relacja między bitem parzystości a bitami danych interfejsu UART (https://t.ly/6eQdF)

Szybkość transmisji UART

Szybkość transmisji interfejsu UART jest wyrażana jako liczba bitów przesłanych w ciągu sekundy (bps). Inne często stosowane określenia tego parametru to tzw. body (bauds), baud rate, bit rate. Prędkość transmisji nie dotyczy tylko użytecznych danych, obejmuje również bity narzutu – bity startu, stopu i parzystości, które są niezbędne do prawidłowej transmisji i odbioru danych. Zatem efektywna szybkość transmisji użytecznych informacji wysyłanych z nadajnika do odbiornika będzie nieco mniejsza. Najczęściej stosowane szybkości transmisji, wyrażone w bps, to: 2400, 4800, 9600, 14,4 k, 19,2 k, 28,8 k, 38,4 k, 57,6 k, 76,8 k, 115,2 k, 230,4 k, 250 k, 0,5 M, 1 M. Szybkości 9600 bps oraz 115200 bps są szczególnie popularne w automatyce przemysłowej czy też systemach wbudowanych.

Synchronizacja i próbkowanie

Strumień danych UART to ciąg bitów, który przechodzi między stanami logicznymi niskim i wysokim. Odbiornik może poprawnie konwertować te stany logiczne na dane cyfrowe tylko wtedy, gdy potrafi precyzyjnie próbkować taki sygnał. Nadajnik generuje strumień bitów na podstawie swojego niezależnego sygnału zegarowego, natomiast zadaniem odbiornika jest próbkowanie przychodzących danych w środku każdego okresu bitowego przy użyciu własnego wewnętrznego sygnału zegarowego. Każda ramka danych zaczyna się od opadającego zbocza bitu startowego – to wtedy następuje krytyczny proces synchronizacji (rysunek 9).

Rysunek 9. Synchronizacja i próbkowanie ciągu bitów w odbiorniku UART (https://t.ly/8kOYP)

Próbkowanie w środku okresu sygnału nie jest niezbędne, ale stanowi rozwiązanie optymalne, ponieważ jeśli punkt próbkowania stopniowo odbiega od środka tego okresu, to będzie zbliżał się do przejścia bitowego i w końcu wystąpi błąd transmisji.

Sygnały taktujące układów połączonych interfejsem UART mogą mieć inne częstotliwości, a mimo to komunikacja może wciąż przebiegać prawidłowo, przy odpowiednim ustawieniu prędkości komunikacji (rysunek 10). O ile wartości częstotliwości nie są krytyczne, o tyle częstotliwość zegara układu odbierającego dane powinna być znacznie wyższa (×8, ×16 lub nawet ×32) od rzeczywistej szybkości transmisji. Ponadto sygnały taktujące obu układów powinny być bardzo stabilne. Oscylatory wbudowane w mikrokontrolery mogą nie być wystarczająco stabilne i dokładne.

Rysunek 10. Fragment dokumentacji mikrokontrolera ATmega328, pokazujący wpływ częstotliwości taktowania na błąd komunikacji przy różnych prędkościach transmisji (https://t.ly/CFMaS)

Synchroniczny UART, czyli USART

Synchroniczny interfejs USART (Universal Synchronous Asynchronous Receiver and Transmitter) może działać w trybie asynchronicznym, jak UART lub w trybie synchronicznym, w którym do komunikacji wymagane są trzy przewody/piny: TxD, RxD i XCK (rysunek 11). Linie Tx oraz Rx działają tak jak w UART, a dodatkowy sygnał XCX służy do synchronizacji transferu danych. Urządzenie nadrzędne (master) używa pinu XCK do wyprowadzania sygnału zegarowego z generatora szybkości transmisji. Urządzenie slave odbiera sygnał zegarowy poprzez pin XCK.

Rysunek 11. Synchroniczny interfejs USART (https://t.ly/TCWNH)

Zależność między zboczami sygnału zegarowego a próbkowaniem danych i ich zmianą zawsze spełnia następujący warunek: dane wejściowe (na RxD) są próbkowane na przeciwległym zboczu sygnału zegarowego XCK względem zbocza, na którym zmianie ulegają dane wyjściowe (TxD). Zwykle można skonfigurować bloki sprzętowe USART i określić, która krawędź zegara XCK jest używana do próbkowania danych, a która do zmiany stanu bitów. Najczęściej ustawieniu temu odpowiada stan bitu UCPOL w rejestrach konfiguracyjnych (rysunek 12).

Rysunek 12. Zależność między sygnałem zegarowym a próbkowaniem/zmianą danych (https://t.ly/mPb7T)
USART
Zalety
• Powszechnie stosowany, zarówno w prostych mikrokontrolerach, jak i minikomputerach.
• Większość mikrokontrolerów ma wbudowany sprzętowy moduł USART/UART, ale można go łatwo zaimplementować w programie.
• Małe wymagania sprzętowe – w najprostszym wykonaniu wymaga tylko dwóch linii TX i RX.
• Może służyć jako prosty kanał debugowania.

Wady
• Tworzy połączenie punkt-punkt – w podstawowej wersji nie nadaje się do budowy magistrali z wieloma urządzeniami.
• W trybie asynchronicznym wymaga precyzyjnego sygnału taktującego.
• Ograniczona odległość transmisji, zaledwie kilka…kilkadziesiąt centymetrów.
• Brak zaawansowanej kontroli błędów transmisji (tylko sprawdzenie parzystości).

Sterowanie przepływem danych – Flow Control

Dane odbierane przez interfejs USART – zanim zostaną przetworzone – niemal zawsze trafiają do bufora utworzonego w określonym obszarze pamięci kontrolera. Bufor ma skończoną pojemność i jeśli dane będą przesyłane szybko i w dużych pakietach, to może dojść do przepełnienia bufora i utraty danych. USART Hardware Flow Control to mechanizm sprzętowego sterowania przepływem ramek w interfejsie USART, który zapobiega utracie danych podczas transmisji między dwoma urządzeniami. Oprócz standardowych linii nadawczych i odbiorczych (TX, RX) wymaga dwóch dodatkowych sygnałów:

  • RTS (Request to Send),
  • CTS (Clear to Send).

W celu sterowania przepływem danych moduł USART korzysta ze schematu stosowanego w interfejsach RS-232. Standard ten definiuje dwa rodzaje urządzeń, określane jako DTE (Data Terminal Equipment), który można traktować jako urządzenie nadrzędne (master) oraz DCE (Data Communication Equipment), który jest odpowiednikiem urządzenia slave. Sygnały RTS i CTS są aktywne w stanie niskim. Jeśli moduł USART jest skonfigurowany jako urządzenie DTE, to sygnał RTS działa jako wyjście, a sygnał CTS jest wejściem. W urządzeniu DCE jest odwrotnie; sygnał RTS jest wejściem, podczas gdy sygnał CTS jest wyjściem. Zatem połączenia między dwoma urządzeniami DTE (rysunek 13) różnią się od połączeń między urządzeniami DTE i DCE (rysunek 14).

Rysunek 13. Połączenie interfejsu UART ze sprzętową kontrolą przepływu pomiędzy dwoma urządzeniami DTE (https://t.ly/Cu3BO)

W przypadku połączenia DTE-DTE, każde z urządzeń może działać jako master. Gdy jedno urządzenie DTE próbuje przesłać dane, ustawia stan niski na linii RTS, który trafia do wejścia CTS drugiego urządzenia, sygnalizując potrzebę rozpoczęcia monitorowania przez nie swojego wejścia RX. Gdy drugie urządzenie jest gotowe do przyjęcia danych, ustawia ono stan niski na linii RTS, informując urządzenie nadrzędne (poprzez jego wejście CTS), aby rozpoczęło wysyłanie danych. Po zakończeniu transakcji urządzenie nadrzędne podnosi stan na linii RTS.

W konfiguracji DTE-DCE urządzenie DTE jest uważane za urządzenie master, a DCE za slave. Gdy DTE próbuje przesłać dane, ustawia stan niski na linii RTS, co sygnalizuje urządzeniu DCE poprzez jego linię RTS, aby rozpoczęło monitorowanie linii RX. Gdy urządzenie DCE jest gotowe do przyjęcia danych, ustawia stan niski na linii CTS, informując urządzenie DTE poprzez jego wejście CTS, aby rozpoczęło wysyłanie danych.

Rysunek 14. Połączenie interfejsu UART ze sprzętową kontrolą przepływu pomiędzy urządzeniem DTE i urządzeniem DCE (https://t.ly/ObCpV)

Istnieje jeszcze programowa metoda sterowania przepływem danych, określana najczęściej mianem software flow control. W takim trybie sterowania używa specjalnych znaków sterujących XON (ASCII = DC1; HEX = 11), XOFF (ASCI = DC3; HEX = 13) przesyłanych w ramach danych. Schemat działania nie jest skomplikowany – gdy jedno urządzenie łącza danych nie jest w stanie przyjąć więcej ramek lub zbliża się do przepełnienia bufora, wysyła znak XOFF do drugiego urządzenia. Drugie urządzenie odbiera kod XOFF i zawiesza transmisję. Gdy pierwsze urządzenie jest gotowe do ponownego przyjęcia danych, wysyła XON, a wtedy drugie wznawia transmisję.

Zewnętrzny UART sprzętowy

Interfejs UART/USART zwykle jest integralną częścią mikrokontrolera, ale dostępne są również układy, które realizują funkcję dodatkowego, zewnętrznego interfejsu, np. SC16IS740/750/760. Jest to jednokanałowy interfejs UART oferujący prędkość transmisji danych do 5 Mbit/s, sterowany poprzez magistralę I²C lub SPI. SC16IS740 jest wyposażony w 4 podstawowe sygnały TX, RX, RTS, CTS, natomiast SC16IS750 i SC16IS760 mają również wszystkie pozostałe linie stosowane w interfejsie UART a dodatkowo – 4 linie GPIO (rysunek 15). Wersja 760 obsługuje prędkości zegara SPI do 15 Mbit/s, a SC16IS750 – tylko 4 Mbit/s. Wewnętrzny zestaw rejestrów SC16IS740/750/760 jest wstecznie kompatybilny z popularnym kontrolerem 16C450, co pozwala na łatwe pisanie oprogramowania lub przenoszenie go z innej platformy. SC16IS740/750/760 oferuje również dodatkowe zaawansowane funkcje, takie jak automatyczna sprzętowa i programowa kontrola przepływu danych oraz automatyczna obsługa transceiverów RS-485.

Rysunek 15. Uproszczony schemat blokowy układu SC16IS750/760 (https://t.ly/Z36I5)

Niezwykle popularnymi układami oferującymi funkcjonalność interfejsu UART są produkty z serii FT232. Ich producent – firma FTDI – specjalizuje się w tworzeniu kontrolerów USB pełniących różne funkcje, a jedną z kluczowych konfiguracji jest kontroler USB Device z interfejsem/interfejsami UART. Jako przedstawiciela tej grupy układów omówimy model FT232R. Jego najważniejsze cechy to:

  • kompletny kontroler USB Device zintegrowany w jednym układzie,
  • asynchroniczny interfejs UART pracujący z szybkością przesyłania danych od 300 bps do 3 Mbps,
  • wyprowadzone wszystkie sygnały interfejsu UART oraz konfigurowalne linie CBUS I/O,
  • brak konieczności programowania (choć układ pozwala na prostą konfigurację),
  • zintegrowana pamięć EEPROM przechowująca deskryptory urządzeń i konfigurację CBUS I/O,
  • zintegrowane rezystory wymagane na liniach interfejsu USB,
  • wbudowane precyzyjne źródło sygnału zegarowego, które nie wymaga zewnętrznego rezonatora kwarcowego,
  • 128-bajtowy bufor odbiorczy i 256-bajtowy bufor nadawczy,
  • zintegrowany konwerter poziomów napięcia na liniach UART i CBUS kompatybilny z napięciem o wartości 1,8 V…5 V.

Warto także dodać, że układy dostarczane są ze wstępnie zaprogramowanym, unikalnym numerem seryjnym USB, a na stronie internetowej producenta można pobrać sterowniki Virtual Com Port (VCP) i Direct (D2XX) firmy FTDI (wolne od opłat licencyjnych).

Uproszczona aplikacja układu FT232R została pokazana na rysunku 16 – jak widać, wymaga ona zaledwie kilku dyskretnych elementów biernych.

Rysunek 16. Uproszczony schemat aplikacyjny konwertera USB-UART typu FT232R (https://t.ly/UHJQU)

Układy konwerterów USB-UART znalazły wiele zastosowań i stały się niemal obowiązkowym elementem płytek uruchomieniowych, np. z serii Arduino. Na wielu z nich stosowane są układy FT232, ale można spotkać także inne, np. CP2102, MCP2221 czy CH340 – rysunek 17.

Rysunek 17. Konwerter UART-USB zbudowany na bazie układu CH340G, zastosowany w niektórych płytkach kompatybilnych z Arduino (https://t.ly/56Yer)

Zastosowania UART/USART

Obecnie najbardziej powszechnym zastosowaniem interfejsu U(S)ART jest komunikacja mikrokontrolerów i mikrokomputerów z komputerem PC, dzięki której można realizować takie funkcje, jak:

  • debugowanie kodu,
  • wysyłanie logów,
  • ładowanie firmware,
  • dostęp do konsoli urządzenia np. routera, Raspberry Pi, systemów embedded na bazie systemu Linux,
  • konfiguracja sprzętu bez użycia interfejsu graficznego,
  • przesyłanie danych przez bootloadery.

Na fotografii 2 została pokazana płytka nowoczesnego minikomputera jednopłytkowego Odroid XU4 z zaznaczonymi najważniejszymi komponentami. W górnej części płytki, obok interfejsów USB 3.0, umieszczono klasyczny interfejs UART, oznaczony jako Serial Console Port.

Fotografia 2. Płytka nowoczesnego minikomputera Odroid XU4 z zaznaczonymi najważniejszymi komponentami. W górnej części płytki, obok interfejsów USB 3.0, umieszczono klasyczny interfejs UART oznaczony jako Serial Console Port (https://t.ly/zDjSb)

W wielu rozwiązaniach interfejs USART służy do komunikacji pomiędzy mikrokontrolerami oraz niektórymi modułami peryferyjnymi, takimi jak:

  • moduły Bluetooth (np. HC-05, HC-06) i Wi-Fi,
  • moduły GNSS (w tym GPS),
  • moduły komunikacji radiowej specyficzne dla IoT/M2M, np. ZigBee, LoRa, GSM itp.

Na fotografii 3 został pokazany moduł GNSS, który komunikuje się z układem nadrzędnym poprzez interfejs USART.

Fotografia 3. Moduł GNSS, który komunikuje się z układem nadrzędnym poprzez interfejs USART (https://t.ly/Bvy2r)

Wreszcie USART jest interfejsem bazowym dla innych interfejsów i standardów komunikacyjnych, takich, jak:

  • RS-232,
  • RS-485,
  • DMX512,
  • Modbus RTU.

RS-232

Interfejs RS-232 (lub EIA-232) został opracowany w latach 60. XX wieku i był powszechnie stosowany w dawnym sprzęcie komputerowym. W komputerach nowej generacji już nie znajdziemy RS-232, natomiast wciąż jest on używany m.in. w urządzeniach z branży automatyki przemysłowej czy w aparaturze pomiarowej. Norma EIA/TIA-232-E była aktualizowana cztery razy, aby sprostać zmieniającym się potrzebom aplikacji komunikacji szeregowej. Oficjalna nazwa normy EIA/TIA-232-E to: Interface Between Data Terminal Equipment (DTE) and Data Circuit-Termination Equipment (CTE) Employing Serial Binary Data Interchange.

RS-232 jest szeregowym interfejsem komunikacyjnym, w którym transmisja danych przebiega tak, jak w interfejsie UART, ale poziomy napięć dla wartości cyfrowych 0 i 1 zostały określone zupełnie inaczej. Stan nieaktywny, odpowiadający jedynce logicznej, ma ujemny poziom względem masy i wartość w zakresie –3…–15 V, natomiast stan aktywny, zero logiczne, ma dodatni poziom względem masy i wartość napięcia w zakresie do 3…15 V (rysunek 18). Ponadto napięcie na dowolnym styku nie może być większe niż +25 V i mniejsze niż –25 V, a zwarcie dwóch styków interfejsu RS-232 nie powinno powodować jego uszkodzenia. Sygnał o tak wysokiej amplitudzie może być przesyłany połączeniami/przewodami o długości do 15 m i to w środowisku narażonym na niewielkie zakłócenia elektromagnetyczne.

Rysunek 18. Poziomy napięć dla bitów 0 i 1 w standardzie RS-232 (https://t.ly/3XmC4)
RS-232
Zalety
• Łatwy do zaimplementowania zarówno sprzętowo (z użyciem UART), jak i programowo.
• Umożliwia prostą komunikację między dwoma urządzeniami, bez skomplikowanego protokołu sieciowego.
• Dobrze udokumentowany i dostępny w wielu systemach przemysłowych.
• Stabilny w środowiskach o niewielkich zakłóceniach elektromagnetycznych.
• Często obsługiwany natywnie, bez konieczności instalowania dodatkowego oprogramowania.

Wady
• Niewielki zasięg transmisji – maksymalna długość kabla to ok. 15 metrów.
• Mała prędkość transmisji, typowo 9600…115200 bps.
• Nie umożliwia komunikacji wielopunktowej.
• Brak galwanicznej izolacji (chyba że stosuje się dodatkowe izolatory).
• Złącza typu DB9 są stosunkowo duże i nieergonomiczne w porównaniu do nowoczesnych standardów (jak USB).
• Nie dostarcza zasilania do urządzeń peryferyjnych.

RS-232 Flow Control

Standard RS-232 opisuje sposób połączenia urządzeń, korzystając z określeń DTE i DCE – tak jak przypadku w USART. Tak samo działa system sterowania przepływem danych – z użyciem linii RTS/CTS. Natomiast RS-232 zawiera jeszcze dodatkowe sygnały: DCD, DTR i RI, które pierwotnie były wymagane do komunikacji szeregowej pomiędzy komputerem a modemem. Pełnią one funkcje sygnalizacyjne i kontrolne:

  • DCD (Data Carrier Detect) – przesyłany z modemu do komputera, informuje o tym, że modem wykrył nośną (Carrier), czyli aktywne połączenie z drugą stroną (np. modemem zdalnym).
  • DTR (Data Terminal Ready) – sygnał przesyłany z komputera do modemu, często używany do jego wybudzenia, np. po włączeniu komputera lub otwarciu portu szeregowego. Bez sygnału DTR modem może nie działać.
  • RI (Ring Indicator) – sygnał przesyłany z modemu do komputera, sygnalizuje przychodzące połączenie na linii telefonicznej modemu.

Chociaż te sygnały są rzadziej używane, to nadal bywają istotne w rozwiązaniach z zakresu automatyki czy przy komunikacji radiowej lub w modemach GSM. Schemat połączeń DTE-DCE z uwzględnieniem wszystkich linii RS-232 został pokazany na rysunku 19.

Rysunek 19. Schemat połączeń interfejsu UART z użyciem wszystkich sygnałów kontroli przepływu danych (https://t.ly/zUAFM)

Złącza i przewody RS-232

Połączenia interfejsów RS-232 wykonywane są zwykłymi przewodami wielożyłowymi. Z powodu małych prędkości transmisji i niewielkich długości okablowania nie jest wymagane dopasowanie impedancyjne pomiędzy nadajnikiem, linią i odbiornikiem. Jedynym warunkiem jest pojemność elektryczna przewodów – nie powinna przekraczać 2500 pF, ponieważ wtedy możliwa jest transmisja z prędkością do zaledwie 20 kbit/s. Klasycznym złączem stosowanym do interfejsu RS-232 jest DB-9 (rysunek 20). Wersja z 25-pinowym złączem DB-25, choć zapisana w specyfikacji, od dawna nie jest już stosowana.

Rysunek 20. Złącza DB-9 stosowane z interfejsami RS-232 (https://t.ly/OckIg)

Typ męski złącza zwykle jest stosowany w urządzeniu DTE, typ żeński w DCE. Z tego względu dostępne są różne rodzaje kabli połączeniowych. Wariant najbardziej podstawowy i najczęściej stosowany to taki, w którym połączone są tylko linie TX, RX i GND, przy czym TX i RX są skrzyżowane (rysunek 21). Służy do połączenia dwóch urządzeń DTE i najczęściej ma oba złącza żeńskie. Dodatkowe linie nie są potrzebne, ponieważ urządzenia przetwarzają dane na tyle szybko, że kontrola wymiany danych nie jest konieczna.

Rysunek 21. Podstawowy wariant kabla RS-232 do połączenia dwóch urządzeń DTE (https://t.ly/IgJWe)

Kable zawierające wszystkie linie sterujące mogą występować w wielu wariantach, ale najpopularniejsze konfiguracje to:

  • kabel prosty, gdzie wszystkie linie są połączone w układzie „1:1” – odpowiedni do połączenia urządzeń DTE i DCE,
  • kabel ze skrzyżowanymi sygnałami, tzw. handshaking null modem, którego schemat połączeń został pokazany na rysunku 22. Będzie odpowiedni do połączenia dwóch urządzeń DTE, umożliwia realizację funkcji sprzętowej kontroli przepływu danych.
Rysunek 22. Kabel ze skrzyżowanymi sygnałami, tzw. handshaking null modem (https://t.ly/ksQia)

Transceivery RS-232

Przez ostatnie lata transceivery RS-232 były modyfikowane, aby sprostać zmieniającym się trendom w projektach korzystających z omawianego interfejsu. Modyfikacje obejmowały zintegrowanie pompy ładunkowej, zaawansowaną ochronę przed ESD, automatyczny tryb shutdown, możliwość pracy z pojedynczym zasilaniem 3,3 V, większą przepustowość, translację poziomów napięć i coraz mniejsze obudowy. Te liczne ulepszenia zwiększyły funkcjonalność, uprościły stosowanie interfejsu RS-232 w docelowych aplikacjach, zredukowały liczbę komponentów i zaoszczędziły miejsce na PCB. W efekcie oferty niektórych producentów układów półprzewodnikowych zawierają ponad 100 układów scalonych transceiverów RS-232. Na rysunku 23 pokazano portfolio najnowszych rozwiązań firmy Texas Instruments.

Rysunek 23. Portfolio najnowszych układów transceiverów RS-232 firmy Texas Instruments (https://t.ly/HNlr5)

Popularny układ MAX232 jest wypierany przez takie układy, jak TRSF3232, który również składa się z dwóch nadajników i dwóch odbiorników linii RS-232 oraz obwodu pompy ładunkowej, dzięki której nie jest wymagane zewnętrzne napięcie ±15 V. Jednak TRSF3232 działa przy pojedynczym napięciu już od 3 V (do 5,5 V) i zapewnia szybkość transmisji danych do 1 Mbit/s. Ponadto akceptuje logikę o poziomie 5 V, gdy jest zasilany z 3,3 V. Do działania wymaga jedynie pięciu kondensatorów 100 nF, pobiera niewielki prąd ok. 0,3 mA i zawiera zaawansowane zabezpieczenia ESD. Typowa aplikacja układu została pokazana na rysunku 24 – jest ona identyczna jak w przypadku MAX232.


Rysunek 24. Typowa aplikacja układu TRSF3232 (https://t.ly/DGD2F)

Duża grupa układów została zaprojektowana do obsługi wszystkich ośmiu linii standardu RS-232. Jednak w zależności od tego, które urządzenie będzie reprezentowała aplikacja (DTE, DCE), należy dobrać układ o odpowiednich kierunkach transmisji linii, co pokazano wcześniej na rysunku 19. Do takich aplikacji firma Maxim (Analog Devices) wprowadziła m.in. układy MAX3243 oraz MAX3238, a gotowe moduły z odpowiednimi złączami w konfiguracji DTE i DCE na bazie tych układów pokazano na fotografii 4.

Fotografia 4. Gotowe moduły z odpowiednimi złączami w konfiguracji DTE i DCE, zbudowane na bazie układów Maxim (Analog Devices) MAX3243 oraz MAX3238 (https://t.ly/yGelx)

W niektórych aplikacjach przemysłowych czy medycznych wymagane są dodatkowe właściwości, np. izolacja galwaniczna interfejsu RS-232. Do takich zastosowań opracowano układ ADM3251E – szybki, całkowicie izolowany transceiver RS-232 o napięciu izolacji 2,5 kV, który działa z pojedynczego źródła zasilania 5 V. Dzięki wysokiemu poziomowi ochrony ESD na pinach R IN i T OUT, idealnie nadaje się do pracy w trudnych warunkach przemysłowych lub w urządzeniach, w których przewody RS-232 są często podłączane i odłączane.

Układ ADM3251E zawiera dwukanałowy izolator cyfrowy z wbudowanym, izolowanym zasilaniem ISO Power, dlatego nie wymaga stosowania oddzielnej, izolowanej przetwornicy DC/DC. Rezultatem jest całkowicie zintegrowany układ, dostępny w 20-wyprowadzeniowej obudowie SOIC i przeznaczony do pracy w zakresie temperatur od −40 do +85°C (rysunek 25).

Rysunek 25. Schemat budowy izolowanego transceivera RS-232 typu ADM3251E (https://t.ly/rJ3gC)

RS-485 i RS-422

Opisane wcześniej interfejsy szeregowe są przeznaczone do komunikacji w obrębie jednego modułu lub urządzenia (UART) lub pomiędzy dwoma komponentami jednego, zwartego systemu (RS232). Standardy RS-485/RS-422 zostały opracowane dla kolejnej grupy aplikacji, które wymagają przesyłania danych między wieloma urządzeniami i zwykle na duże, a nawet bardzo duże odległości. Dotyczy to zwłaszcza zastosowań z zakresu automatyki budynkowej i przemysłowej. Kluczowe cechy magistrali RS-485, które czynią ją idealną do zastosowań w takich aplikacjach, to:

  • transmisja różnicowa odporna na zakłócenia,
  • dwukierunkowa komunikacja przy użyciu jednej pary skręconych przewodów,
  • zasięg nawet do 1200 m,
  • możliwość podłączenia wielu nadajników i odbiorników,
  • prędkości transmisji danych nawet do 10 Mb/s (parametr ten jednak silnie zależy od wielu czynników).

Transmisja danych z użyciem sygnałów różnicowych

Głównym powodem, dla którego RS-485 może przesyłać dane na duże odległości, jest zastosowanie sygnału różnicowego, transmitowanego dwoma liniami sygnałowymi – parą skręconych przewodów. Standard EIA-485-A oznacza dwie linie w tej parze różnicowej jako A i B. Linia A jest na wyższym potencjale względem linii B na wyjściu transceivera, jeśli na wejściu nadajnika zostanie odebrany stan logiczny wysoki „1”. Jeśli na wejściu nadajnika zostanie odebrany stan logiczny niski „0”, układ wymusza na linii A potencjał ujemny względem linii B (rysunek 26). Typowe napięcia różnicowe w czasie pracy wynoszą od ±1,5 V do ±5 V, maksymalne dopuszczalne napięcie różnicowe (niepowodujące uszkodzeń) to zwykle ±12 V.

Rysunek 26. Przebiegi napięć na liniach interfejsu RS-485 (https://t.ly/6vEU0)

Napięcia na liniach A i B względem masy mogą się mieścić w zakresie od –7 V do +12 V.

Sterowniki zgodne ze standardem RS-485 generują wyjściowy sygnał różnicowy o napięciu min. 1,5 V przy obciążeniu 54 Ω, natomiast odbiorniki zgodne ze standardem wykrywają wejściowy sygnał różnicowy o amplitudzie nawet 200 mV. Ponadto wszelkie zakłócenia zewnętrzne oddziałują jednakowo na obie linie magistrali (jeśli zastosowano skrętkę), co w przypadku sygnału różnicowego nie wpływa na przesyłane informacje. Te cechy powodują, że nawet przy dużym pogorszeniu jakości sygnału i znacznych długościach kabli przesyłanie danych pozostaje niezawodne. Ponadto magistrala RS-485 nie generuje wyraźnych zakłóceń elektromagnetycznych, ponieważ pola obu linii znoszą się wzajemnie.

Urządzenia dołączone do magistrali

Impedancja wejściowa odbiornika RS-485 powinna być większa lub równa 12 kΩ. Wartość ta jest zdefiniowana jako obciążenie jednego urządzenia – UL (Unit Load). Specyfikacja RS-485 określa zdolność do sterowania nawet 32 takimi urządzeniami. Niektóre odbiorniki RS-485 są określane jako 1/4 UL lub 1/8 UL, co pozwala na podłączenie do magistrali większej liczby odbiorników, np. 4×32=128 węzłów lub 8×32=256 węzłów.

Z uwagi na efekty falowe zachodzące w magistralach takich, jak RS-485, każdy koniec linii danych powinien być zakończony rezystorami dopasowującymi, tzw. terminatorami (rysunek 27). Rezystor terminujący powinien być tak dobrany, aby dopasować się do impedancji charakterystycznej przewodu. Standard RS-485 zaleca korzystanie z przewodów o impedancji charakterystycznej równej 120 Ω. Z tego powodu często stosuje się rezystory dopasowujące takiej właśnie wartości. Ponadto doprowadzenia sygnałów od magistrali do urządzeń powinny być możliwie krótkie. Wymagane jest również połączenie masy zasilania wszystkich urządzeń.

Rysunek 27. W magistrali RS-485 każdy koniec linii transmisyjnej powinien być zakończony rezystorami dopasowującymi, tzw. terminatorami (https://t.ly/RyAnq)

Typowe transceivery RS-485 w stanie bezczynności są niewielkim obciążeniem na magistrali, co może powodować generowanie fałszywych bitów startowych itp. Dlatego często umieszcza się kombinację rezystorów pull-up i pull-down na magistrali. Ich wartości powinny mieścić się w przedziale od 500 Ω do kilku kΩ. Taki obwód jest nazywany Fail-Safe (rysunek 28).

Rysunek 28. Obwód Fail-Safe na liniach magistrali RS-485 (https://t.ly/nQKnw)

Half-duplex oraz full-duplex

Sieci RS-485 typu half-duplex mają wiele urządzeń dołączonych do tej samej, 2-przewodowej magistrali sygnałowej (rysunek 29). Każde urządzenie zawiera transceiver z odbiornikiem i nadajnikiem sygnału, ale w danej chwili tylko jeden nadajnik może wysyłać dane. Dlatego transceivery RS-485 muszą mieć piny włączające nadajnik, a zwykle mają także niezależne wejście wyłączające odbiornik, co widać na rysunku 29. Transmisja między urządzeniami musi być kontrolowana przez określony protokół i może realizować schemat master-slave lub multi-master. W zastosowaniach przemysłowych najpopularniejszymi protokołami są m.in. Modbus czy Profinet.

Rysunek 29. Przykład sieci RS-485 typu half-duplex (https://t.ly/nEDap)

Magistrala RS-485 połączona w konfiguracji full-duplex wymaga instalacji 5-przewodowej (4 sygnały i połączenie masy). W takiej sieci tylko jedno z urządzeń jest masterem, a transceivery mają oddzielne bloki nadajnika i odbiornika (rysunek 30). Nadajnik urządzenia master jest połączony z odbiornikami wszystkich urządzeń slave i analogicznie, odbiornik jest połączony z nadajnikami wszystkich urządzeń slave. Magistrala full-duplex RS-485 umożliwia jednoczesną komunikację w obu kierunkach między węzłami master i slave.

Rysunek 30. Przykład sieci RS-485 typu full-duplex (https://t.ly/mZ4PC)

RS-422

Interfejs RS-422 jest podobny do RS-232, ponieważ umożliwia jednoczesne wysyłanie i odbieranie wiadomości na osobnych liniach (full-duplex) i używa do tego sygnału różnicowego, podobnie jak w RS-485. Całość jest zatem podobna do RS-485 typu full-duplex i składa się z 4 przewodów: 2 skręcone przewody do transmisji i 2 skręcone przewody do odbioru, wymagany jest ponadto dodatkowy przewód wspólnej masy (rysunek 31).

Rysunek 31. Połączenia magistrali RS-422 (https://t.ly/9JXRs)

Sieć RS-422 może składać się tylko z jednego urządzenia nadawczego i maksymalnie 10 urządzeń odbiorczych. Maksymalna długość magistrali to 1200 m, a prędkość transferu danych może wynosić do 10 Mbit/s (w przypadku magistrali o długości do 10 metrów). Parametry napięciowe są podobne do RS-485, a końce każdej skrętki (przy ostatnim urządzeniu odbiorczym) powinny mieć podłączone rezystory terminujące 120 Ω (rysunek 32).

Rysunek 32. Przykładowa topologia magistrali RS-422 (https://t.ly/nEhut)

Transceivery RS-485

Popularne transceivery RS-485 produkcji ST charakteryzują się małym poborem mocy i dużymi prędkościami transmisji. Zapewniają również wysoką wytrzymałość i ulepszone parametry ESD. Dostępne są wersje na różne zakresy napięcia zasilania i różne napięcia linii I/O w celu optymalnego dopasowania do konkretnych zastosowań. Na rysunku 33 zestawiono wybrane układy.

Rysunek 33. Portfolio układów transceiverów RS-485 firmy ST (https://t.ly/MO06A)

Jeszcze większa jest w tym segmencie rynku oferta TI, w której można znaleźć układy o dodatkowych właściwościach, takich jak: automatyczna kontrola kierunku transmisji, odporność na uszkodzenia magistrali czy przystosowanie do magistrali typu Power Line Communication. Portfolio układów zostało pokazane na rysunku 34.

Rysunek 34. Portfolio układów transceiverów RS-485 firmy TI (https://t.ly/_9a9y)
RS-485
Zalety
• Wysoka odporność na zakłócenia elektromagnetyczne dzięki transmisji różnicowej.
• Do transmisji wystarczą dwie linie sygnałowe A i B oraz masa GND.
• Idealny do pracy w trudnych warunkach (np. hale produkcyjne).
• Duży zasięg – maksymalna długość linii to 1200 metrów (przy małych prędkościach transmisji, np. 100 kbps).
• Wysokie prędkości, nawet do 10 Mbps (przy krótkich magistralach, do ok. 10 m).
• Możliwość budowy sieci typu multi-master.

Wady
• Brak standardowego protokołu komunikacji.
• Wymóg kontroli kierunku transmisji.
• Konieczność dobrego zaplanowania transmisji lub stosowania mechanizmów antykolizyjnych (np. struktura master-slave).
• Ograniczona liczba urządzeń – standardowo można podłączyć do 32 urządzeń na jednej magistrali, tylko niektóre transceivery są przystosowane do pracy z 128 czy 256 urządzeniami.
• Rozległe sieci RS-485 są podatne na zakłócenia i błędy wynikające z parametrów okablowania czy niewłaściwego połączenia masy.

Podsumowanie

W pierwszej części artykułu zostały opisane interfejsy szeregowe, które zaliczamy do grupy asynchronicznych. Oczywiście wyjątkiem jest synchroniczny interfejs USART, ale jego implementacje są dziś rzadko stosowane w praktyce. Natomiast interfejs UART można znaleźć w niemal każdym urządzeniu z mikrokontrolerem. Ponadto stanowi on bazę do realizacji interfejsów RS-232, RS-422, RS485 oraz wielu niestandardowych rozwiązań. Należy jednak pamiętać, że interfejsy typu UART czy RS-485 realizują tylko warstwę fizyczną łącza, a jego właściwa funkcjonalność zależy przede wszystkim od zaimplementowanego protokołu transmisji.

Damian Sosnowski, EP

 

Odnośniki:

[1] https://t.ly/eCqDR

 

Bibliografia:

Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2025
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2025

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2025

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje czerwiec 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich lipiec 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów