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.
Niektóre z głównych specyfikacji technicznej pinów USART są podkreślone poniżej wymienionych punktów:
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:
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
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.