UART (Universal Asynchronous Receiver-Transmitter)
UART to absolutny klasyk w świecie elektroniki i systemów wbudowanych. Nie jest to protokół komunikacyjny sensu stricto (jak I2C czy SPI), ale fizyczny układ sprzętowy (mikrokontroler lub osobny chip), który zamienia dane równoległe na szeregowe i odwrotnie.
Najważniejsze cechy w pigułce
- Asynchroniczny - brak linii zegarowej (CLK). Obie strony muszą z góry umówić się na tę samą prędkość transmisji.
- Szeregowy - dane lecą bit po bicie.
- Full-Duplex - można wysyłać i odbierać dane w tym samym czasie.
- Point-to-Point - łączy tylko DWA urządzenia (to nie jest magistrala dla wielu urządzeń).
🔌 Jak to podłączyć?
Podłączenie UART jest banalnie proste. Zazwyczaj używamy tylko trzech przewodów. Kluczowa zasada: nadajnik (TX) łączy się z odbiornikiem (RX) drugiej strony.
TX(Transmit) ➡️RX(Receive)RX(Receive) ⬅️TX(Transmit)GND(Masa) ↔️GND(Masa)
Uwaga na masy i napięcia!
Połączenie GND jest absolutnie wymagane, żeby zamknąć obwód i zapewnić punkt odniesienia dla napięć. Zwróć też uwagę na logikę napięciową – nie łącz bezpośrednio UART 3.3V (np. z Raspberry Pi) z UART 5V (np. ze starego Arduino Uno) bez konwertera poziomów logicznych (Level Shifter), bo spalisz piny!
📦 Jak wygląda ramka danych?
Ponieważ nie ma zegara, urządzenia muszą wiedzieć, kiedy zaczyna się znak, a kiedy kończy. W tym celu dane pakowane są w tzw. ramki (frames).
- Stan spoczynku (Idle): Linia jest utrzymywana w stanie wysokim (HIGH).
- Start Bit: Stan linii spada z HIGH na LOW. To sygnał dla odbiornika: "Hej, budzimy się, zaraz polecą dane!".
- Data Bits (Bity danych): Właściwy ładunek. Od 5 do 9 bitów, ale najczęściej 8 bitów (czyli 1 bajt). Zazwyczaj wysyłane są od najmniej znaczącego bitu (LSB first).
- Parity Bit (Bit parzystości): Opcjonalny. Służy do podstawowego wykrywania błędów. Może być "Even" (parzysty) lub "Odd" (nieparzysty). Dzisiaj rzadko używany.
- Stop Bit: Powrót linii do stanu HIGH. Oznacza koniec ramki. Zwykle trwa 1 lub 2 cykle.
⚙️ Parametry transmisji (Konfiguracja)
Aby dwa urządzenia mogły ze sobą "rozmawiać", muszą mieć ustawione identyczne parametry. Najważniejszy z nich to Baud Rate (szybkość transmisji), wyrażana w bitach na sekundę (bps).
Popularne prędkości:
* 9600 (bezpieczny standard, często w modułach GPS)
* 115200 (najpopularniejszy obecnie, używany m.in. w ESP32, Raspberry Pi)
Magiczne hasło: 115200 8N1
Większość terminali (np. PuTTY, minicom) domyślnie sugeruje ustawienie 8N1. Rozszyfrujmy to:
* 8 - 8 bitów danych.
* N - None (Brak bitu parzystości).
* 1 - 1 bit stopu.
Flow Control (Kontrola przepływu)
Czasami dane lecą za szybko i odbiornik nie nadąża ich przetwarzać. Używa się wtedy kontroli przepływu: * Hardware (RTS/CTS): Wymaga dodatkowych pinów (Ready To Send / Clear To Send). * Software (XON/XOFF): Wysyłanie specjalnych znaków w celu wstrzymania/wznowienia. * None: Najczęściej wybierana opcja w domowych i hobbystycznych projektach.
🛠️ Popularne przejściówki (USB-UART)
Większość współczesnych komputerów nie ma wbudowanego portu szeregowego (COM). Aby debugować mikrokontrolery z PC, używa się konwerterów USB na UART. Najbardziej znane układy to:
- CH340 / CH341: Tanie, niezawodne, często spotykane w klonach Arduino (Wymagają instalacji chińskich sterowników na Windows/Mac, na Linuxie działają out-of-the-box).
- CP2102 (Silicon Labs): Popularne w płytkach z ESP8266/ESP32 (np. NodeMCU). Bardzo stabilne.
- FTDI (FT232RL): Uznawane za standard "pro", bardzo niezawodne, ale na rynku jest mnóstwo podróbek (co doprowadziło kiedyś do słynnej "afery" ze sterownikami psującymi lewe układy).
- PL2303 (Prolific): Starszy układ, często w tanich kablach diagnostycznych.
🆚 UART a RS-232 i RS-485
Warto pamiętać, że UART określa tylko to, jak dane są pakowane cyfrowo wewnątrz układu (logika 0-3.3V lub 0-5V). Z czym to się je na zewnątrz?
| Standard | Poziomy Napięć | Zasięg | Zastosowanie |
|---|---|---|---|
| UART (TTL) | 3.3V / 5V | Bardzo krótki (na jednej płytce lub biurku) | Komunikacja mikrokontroler-mikrokontroler. |
| RS-232 | od -15V do +15V | Średni (do kilkunastu metrów) | Stare komputery (porty COM), sprzęt przemysłowy. Wysokie napięcie uodparnia na zakłócenia. (Układ MAX232 to klasyczny konwerter UART <-> RS232). |
| RS-485 | Różnicowe (sygnał A i B) | Bardzo duży (do 1200 metrów!) | Przemysł, automatyka. Odporny na szumy, pozwala na komunikację wielu urządzeń na jednej linii (tzw. bus). |
✅ Zalety i ❌ Wady
Zalety: * Prostota: wymagane tylko 2 przewody dla pełnej komunikacji. * Niskie obciążenie: nie wymaga sygnału zegarowego. * Szerokie wsparcie: ma go praktycznie każdy mikrokontroler na świecie.
Wady: * Tylko dwa urządzenia mogą się ze sobą komunikować. * Obie strony muszą mieć precyzyjnie ustawione parametry (inaczej dostaniemy "krzaczki" w terminalu). * Podatny na zakłócenia elektromagnetyczne przy większych odległościach (chyba że przekonwertowany na RS-485).