USART w Arduino Uno

USART w Arduino Uno

Arduino ma elastyczny sposób przesyłania danych między urządzeniami i komputerami PC. Arduino używa protokołu szeregowego znanego jako USART do komunikacji między tymi urządzeniami. Korzystanie z USART Arduino może odbierać wejścia i wyjścia z czujników takich jak GPS, GSM, RFID i inne czujniki. Wszystkie urządzenia obsługujące komunikację szeregową można połączyć z Arduino, co poprawia ogólną kompatybilność Arduino i szerokie wykorzystanie w projektach elektronicznych.

USART w Arduino Uno

USART jest również znany jako uniwersalny synchroniczny/asynchroniczny transmitat odbiorczy; USART to szeregowy protokół komunikacji stosowany w mikrokontrolerach AVR ATMEGA. Arduino używa tego protokołu do transmisji i odbierania danych z urządzeń, czujników i komputerów PC. UART przesyła i odbiera dane w postaci bitów w odniesieniu do impulsu zegara. Może przenosić jeden bit na jednym przewodzie.

Arduino USART PINS

Większość płyt Arduino ma dwa piny TX i RX, które są używane do szeregowych urządzeń komunikacyjnych.

  • TX PIN do przesyłania danych
  • PIN RX do odbierania danych


Niektóre z głównych specyfikacji technicznej pinów USART są podkreślone poniżej wymienionych punktów:

  • Na powyższym obrazie dwie diody LED są oznaczone jako TX i RX. Te dwie diody LED zaczynają migać, gdy Arduino przesyła lub odbiera dane za pomocą komunikacji szeregowej USART.
  • Gdy Arduino odbiera dane z PC Rx LED Glow, który wskazuje, że dane są odbierane przez Arduino podobnie, gdy Arduino przesyła dane do PC TX, co wskazuje na transmisję danych do komputera za pomocą kabla USB.
  • Status LED TX i RX migra przeciwnie, gdy Arduino ustanawia szeregową komunikację z zewnętrznym sprzętem, urządzeniami lub modułami za pomocą TX w D1 i RX przy pinach D0.
  • Arduino nie obsługuje jednoczesnej komunikacji w przypadku pinów USB i TX i RX. Jeśli piny TX i RX używane przez jakiekolwiek inne urządzenie Arduino nie mogą komunikować się z komputerem przez USB.
  • Piny TX i RX używają logiki TTL. Komunikacja szeregowa między Arduino i innymi urządzeniami szeregowymi, takimi jak komputer.

USART Funkcje na Atmega328

Uniwersalny odbiornik synchroniczny i asynchroniczny i nadajnik jest wysoce kompatybilnym i elastycznym sposobem komunikacji szeregowej między różnymi urządzeniami. Główne cechy USART to:

  • USART to pełna operacja dupleksowa
  • Możliwe jest zarówno obsługa synchroniczna, jak i asynchroniczna
  • Synchroniczna operacja mistrza lub niewolnika
  • Może generować wysoką rozdzielczość wskaźnika transmisji
  • Komunikacja o dużej prędkości
  • Protokół komunikacji z wieloma procesorami
  • Tryb asynchroniczny podwójnej prędkości

ATMEGA328P Chip

Arduino Uno Nazwa pin

Opis Arduino

Funkcje

PD0 RX/D0 Cyfrowy pin IO 0 Serial Rx Pin
PD1 TX/D1 Cyfrowy pin IO 1 Szeregowy pin TX
PD4 D4 Cyfrowy pin IO 4 Timer (T0/XCK)

Tryby działania

Arduino AVR Microcontroller działa w trzech trybach:

  • Asynchroniczny tryb normalny
  • Asynchroniczny tryb podwójnej prędkości
  • Tryb synchroniczny

Asynchroniczny tryb normalny

W tym trybie Arduino używa predefiniowanej szybkości transmisji do odbierania i przesyłania danych bez impulsów zegara w postaci bitu po bicie.

Asynchroniczny tryb podwójnej prędkości

Podczas tego trybu prędkość przesyłania danych staje się podwójna szybkość transmisji. Ta szybkość transmisji jest ustawiona w rejestrze UBBR. Jest to szybka komunikacja, w której wymagane jest dokładne i szybkie przesyłanie danych i odbieranie.

Tryb synchroniczny

Jak pokazuje nazwa synchroniczna, co oznacza, że ​​dane są synchronizowane z impulsami zegara. Podczas tego trybu dane są przesyłane lub odbierane z impulsami zegara zdefiniowanymi w rejestrze UCSRC.

Przekazywanie danych za pomocą USART

Nazwa ciągu;
void setup ()
Seryjny.rozpocząć (9600);
opóźnienie (1000);
Seryjny.println („Jakie masz na imię?");

void Loop ()
if (serial.dostępny())
Nazwa = serial.readStringUntil („\ n”);
Seryjny.println („Miło cię poznać”, + nazwa + ”!");


W powyższym kodzie zainicjowaliśmy ciąg "nazwa" które będą przechowywać dane wejściowe użytkownika i pokaże go na monitorze szeregowym.

Seryjny.początek (9600) zainicjuje komunikację USART z zdefiniowanym wskaźnikiem transmisji. Dwie ważne funkcje Seryjny.dostępny() I Seryjny.readStringuntil () są używane w powyższym programie.

Seryjny.dostępne zwróci kilka znaków w postaci bajtów, które zostały odczytane. Seryjny.ReadStringuntil Funkcja umożliwi połączenie wszystkich znaków wejściowych od użytkownika i wyjścia zostanie wyświetlona w bardziej widoczny sposób.


Wyjście monitora szeregowego

Kontrolowanie diody LED za pomocą USART

Teraz korzystając z komunikacji szeregowej, będziemy kontrolować LED przez monitor szeregowy. Podłącz płytę Arduino z komputerem za pomocą kabla USB B i prześlij poniższy kod na płytę Arduino.

Char InputState;
void setup ()
Seryjny.rozpocząć (9600);
pinmode (13, wyjście);

void Loop ()
if (serial.Dostępne ()> 0)
InputState = (char) szeregowy.Czytać(); // Odczytaj dane szeregowe
if (inputState == '1') // sprawdź otrzymane wejście
DigitalWrite (13, High); // Jeśli wejście jest 1 diody LED będzie włączone
Seryjny.print („Otrzymane dane wejściowe to:”);
Seryjny.println (InputState);

else if (inputState == '0')
DigitalWrite (13, niski); // Jeśli wejście to 0 diody LED wyłącznie
Seryjny.print („Otrzymane dane wejściowe to:”);
Seryjny.println (InputState);



Na początku kodu zainicjowaliśmy zwęglać zmienny Stan wejściowy które będą przechowywać dane wejściowe z monitora szeregowego.

Seryjny.rozpocząć (9600);


Ta funkcja zainicjuje komunikację szeregową między Arduino Board a PC.

Seryjny.dostępny()


Seryjny.dostępny() Funkcja będzie szukać liczby bajtów dostępnych do odczytania. Użyliśmy if-kwarci tutaj, które sprawdzą wejście danych szeregowych, jeśli wejściowe dane szeregowe są 1 Arduino, ustawie LED na styku 13, a LED włączy się. Jeśli wejście jest 0 Arduino ustawić diodę LED na styku 13 jako niski i dioda LED wyłączy się.


Wyjście monitora szeregowego


Wyjście LED

LED włączy się na wejściu 1 i wyłączy się na wejściu 0.


Dlatego kontrolowaliśmy LED przy użyciu komunikacji USART między Arduino i PC.

Wniosek

USART może być bardzo przydatny w projektach Arduino. Umożliwia Arduino interfejs wielu urządzeń. Wiedza o USART pomoże w komunikacji między Arduino i wieloma urządzeniami. W tym artykule ukończyliśmy dwa kody Arduino. Najpierw wysłaliśmy ciąg do Arduino i wyświetliśmy go przez monitor szeregowy, aw drugim kodzie prowadziliśmy kontrolę za pomocą USART Serial Communication.