Serialna komunikacja UART między dwoma planszami Arduino

Serialna komunikacja UART między dwoma planszami Arduino

UART jest akronimem uniwersalnego asynchronicznego transmitru odbiornika. UART to najczęściej używany protokół komunikacji szeregowej, w którym format danych i prędkość komunikacji są konfigurowalne. Arduino ma trzy protokoły komunikacji o nazwie SPI, I2C i UART. Protokół UART pozwala Arduino komunikować się między różnymi urządzeniami i czujnikami. Teraz omówimy, jak korzystać z komunikacji UART między dwoma tablicami Arduino.

Komunikacja seryjna UART

Serial UART to szeregowy protokół komunikacji używany przez Arduino do komunikacji z mikrokontrolerami i komputerami PC. Arduino ma jeden port UART w D0 i D1. W komunikacji UART używany jest szeregowy autobus z dwoma terminalami, jeden do wysyłania danych wymienionych TX przy pin D1 i inny do odbierania danych, które są oznaczone jako Rx przy pin d0. Tak więc wszystkie urządzenia, które działają przez protokół UART, muszą mieć dwa szpilki szeregowe:

  • Rx do otrzymywania danych
  • TX do przesyłania danych

Podczas korzystania z tych dwóch pinów dla UART należy zauważyć, że piny UART są specyficzne dla samego urządzenia, oznacza to, że chcesz ustalić komunikację szeregową za pomocą UART między dwoma płytami Arduino, pin RX pierwszej płyty zostanie podłączony do pinu TX drugiego Podobnie pin tx pierwszego z pinem rx drugiego.

Komunikacja seryjna UART między dwoma tablicami Arduino

Teraz połączymy dwie tablice Arduino za pomocą pinów TX i RX, aby ustalić szeregową komunikację między nimi jedną płytę Arduino, która będzie transmitować dane, będzie działać jako Gospodarz a druga tablica Arduino, która otrzyma instrukcje, będzie działać jako Niewolnik. Skonfigurujemy nasze tablice Arduino w konfiguracji głównej i niewolników. Zanim przejdziemy dalej, potrzebujemy następnego sprzętu, aby rozpocząć naszą komunikację seryjną UART.

Wymagany sprzęt

  • 2x tablice Arduino
  • Kabel 2X USB B
  • 6x przewody zwarcia
  • Tablica chleba
  • Rezystor 220 Ohm
  • PROWADZONY

Aby rozpocząć komunikację między dwoma płytkami Arduino, jeden zostanie skonfigurowany jako nadawca i inna płyta Arduino jako odbiornik. Musimy więc napisać dwa programy, jeden dla nadawcy i drugi dla odbiornika. Postępuj zgodnie z poniższymi krokami w celu ustalenia komunikacji szeregowej.

Przykład 1: Przekazywanie sznurka z jednego Arduino do drugiego poprzez komunikację UART

Zdefiniujemy sznur w naszym mistrzu Arduino i spróbujemy go przekazać do Slave Arduino za pomocą komunikacji szeregowej UART. Postępuj poniżej podane kroki, aby przekazać dane między dwoma Arduinos.

Krok 1: Połącz Master Arduino

Korzystanie z kabla USB B łączy płytę Arduino, która działa jako master z komputerem. Pamiętaj, aby najpierw wybrać port COM przed przesłaniem szkicu. Tutaj w naszym przypadku Arduino jest podłączone do portu COM6.


Teraz prześlij poniżej kod na tablicę Arduino nadawcy.

// kod komisji nadawcy Arduino (Master)
Char MyString [15] = "Linuxhint.com "; // String Data, które mają zostać wysłane
void setup ()
Seryjny.rozpocząć (9600); // Rozpocznij serial o tempie 9600 BAUD

void Loop ()
Seryjny.Write (MyString, 15); // Napisz dane szeregowe
opóźnienie (1000);



Powyższy kod wyśle ​​prostą wiadomość Linuxhint.com do drugiego Arduino. Najpierw zdefiniowaliśmy tablicę „Linuxhint.com ”. Numer 15 wewnętrznych nawiasów pokazuje, że ta tablica może pomieścić 15 znaków. 13 to alfabety, a 2 są ustawione dla miejsca, abyśmy mogli zobaczyć wyraźne wyjście w monitorze szeregowym. Wewnątrz organizować coś() Komunikacja szeregowa jest ustalana przy użyciu szeregów.początek () i 9600 jest wybierany jako wskaźnik transmisji.

pętla() Część szkicu zawiera Seryjny.pisać() funkcjonować. Funkcje te napiszą wiadomość na płycie Arduino niewolnika odbiornika z 1000 milisekundowych opóźnień.

Krok 2: Połącz Slave Arduino

Podłącz drugą płytę Arduino, która jest niewolnikiem w naszej konfiguracji. Podłącz tę płytę w dowolnym porcie komputerowym innym niż port używany w poprzednim kroku przez główną płytę Arduino. Przed przesłaniem kodu Arduino wybierz port Arduino com. Nasza deska niewolnika Arduino jest podłączona do COM8.


Teraz prześlij poniżej podany kod na płycie niewolniczej Arduino.

// Odbiornik kod płyty Arduino
Char MyString [20]; // zainicjowana zmienna do przechowywania
void setup ()
Seryjny.rozpocząć (9600); // Rozpocznij serial przy 9600 Baud

void Loop ()
Seryjny.ReadBytes (MyString, 15); // Odczytanie danych szeregowych
Seryjny.println (MyString); // Drukuj dane na temat monitora szeregowego
Seryjny.println („odbiornik”);
opóźnienie (1000);



Powyższy kod niewolnika Arduino jest podobny jak Master Arduino, tylko różnica jest tutaj zamiast tego Seryjny.pisać() użyliśmy Seryjny.ReadBytes () które odczytują przychodzące dane z Master Arduino. Po przeczytaniu danych zostanę wydrukowany na monitor szeregowych za pomocą Seryjny.println () funkcjonować.

Krok 3: Podłącz oba Arduino za pomocą pinów TX i RX

Po przesłaniu kodu Arduino na obu tablicach Arduino połącz teraz Master i Slave Arduino, jak pokazano na rysunku poniżej. Podłącz pin TX First Arduino z pinem Rx drugiego Arduino Podobnie Rx Pin of First Arduino z tx pinem drugiego arduino.

Pamiętaj, że przesyłanie kodu w obu tych Arduino nie łączą pinów TX i RX, w przeciwnym razie komunikacja szeregowa nie będzie możliwa.


Wyjście Master Arduino

Master Arduino nieustannie wysyła sznur do Slave Arduino z opóźnieniem 1000 milisekund.


Wyjście niewolnika Arduino

Slave Arduino najpierw wydrukuje odbiornik w terminalu seryjnym wyjściowym po tym, jak odbędzie się tablica Linuxhint.com z opóźnieniem 1000 milisekund od mistrza Arduino. Stąd komunikacja szeregowa odbywa się między dwiema tablicami Arduino.

Przykład 2: LED mrugnięcia przy użyciu dwóch płyt Arduino za pośrednictwem komunikacji UART

Krok 1: Prześlij kod do Master Arduino Board

Podłącz tablicę Arduino, która działa jako master z komputerem za pomocą kabla USB B i wybierz port COM, z którym podłącza się Arduino. W naszym przypadku główna płyta Arduino jest podłączona do portu COM7.


Prześlij podany kod poniżej na płycie nadawcy Arduino.

// nadajnik (tx) kod płyty Arduino
void Setup ()

Seryjny.rozpocząć (9600);

Void Loop ()

Seryjny.wydrukować (1);
Opóźnienie (2000);
Seryjny.wydrukuj (0);
Opóźnienie (2000);



W powyższym kodzie Master Arduino wysyła instrukcje do Slave Arduino w postaci liczb 1 i 0. Master wysyła numer 1, a następnie czeka na 2 sekundy po tym, jak wysyła numer 0, a następnie ponownie idzie na opóźnienie 2 sekundy. Potem zaczyna się powtarzać w pętli. Tutaj użyliśmy Seryjny.wydrukować() funkcja, która przekonwertuje instrukcje Master Arduino na znaki ASCII, co oznacza, że ​​Master przesyła wartości 49 dla 1 i 48 dla 0.

Krok 2: Prześlij kod do Slave Arduino Board

Teraz podłącz drugą płytę Arduino, która działa jako niewolnik z dowolnym innym portem komputera za pomocą kabla USB B. Pamiętaj, aby najpierw wybrać port COM Arduino przed przesłaniem kodu nadawcy. Slave Arduino płyta jest podłączona do portu COM8 PC.


Teraz prześlij poniższy kod na drugiej płycie Arduino, która działa jako niewolnik.

// Odbiornik (Rx) Arduino kod płyty
char serialinput = ";
Bajt LED = 2;
void Setup ()

pinmode (LED, wyjście);
Seryjny.rozpocząć (9600);

Void Loop ()

if (serial.dostępny())

Char SerialInput = szeregowy.Czytać();
if (serialInput == '0') digitalWrite (LED, Low);
if (serialInput == '1') digitalWrite (LED, high);
Seryjny.println (serialInput);



W powyższym kodzie Slave Arduino char SerialInput jest inicjowany, który odbędzie się i przechowuje instrukcje pochodzące od mistrza Arduino.

Następnie w sekcji pętli kodu kontrola zostanie wykonana za pomocą, jeśli stan.

if (serial.dostępny())


Powyższe polecenie sprawdzi, czy w buforze pojawią się jakieś dane.

Jeśli pojawiają się jakieś dane, jeden znak jest odczytany i przechowywany zwęglać zmienny SerialInput.

Ponieważ jesteśmy zainteresowani tylko wartościami 0 i 1. Jeśli oświadczenia wykonają pracę tutaj. Jeśli instrukcje sprawdzą wartość SerialInput, jeśli jest 1. Jeśli otrzyma serialInput 0, wyśle ​​niski sygnał do pinu nr 2.

Notatka: Zawsze podłącz obie płyty Arduino w osobnych portach COM, a przed przesłaniem nowego kodu Wybierz Port Arduino Com. Zaleca się użycie dwóch oddzielnych okien IDE dla obu płyt Arduino.

Krok 2: Prześlij kod do Slave Arduino Board

Podłącz tablice Arduino w poniższej konfiguracji, jak pokazano na zdjęciu. Podłącz TX pierwszego Arduino z RX drugiego Arduino. Podobnie podłącz RX First Arduino z TX drugiego Arduino. Nie podłącz piny TX i RX przed przesłaniem kodu Arduino, ponieważ Arduino ma tylko jeden port szeregowy Port Komunikacji łączący te dwa porty z dowolnym innym urządzeniem, blokuje komunikację szeregową z komputerem za pomocą kabla USB.

Połącz diodę LED w cyfrowym pinowi nr 2 i GND PIN Arduino, pomiędzy tymi dwoma pinami Podłącz rezystor 220OHM, aby utrzymać bezpieczne limity prądu. Połącz Arduino GND razem.


Mruganie diody LED wyjściowych

Po przesłaniu kodu na obu płytkach Arduino. Master wyśle ​​instrukcje z opóźnieniem 2000 ms. W wyjściu możemy zobaczyć, jak LED migra kolejno w 1 sekundowej konfiguracji.

LED Włącz


LED wyłącz się

Wniosek

Protokół komunikacji szeregowej UART jest używany przez wiele urządzeń i modułów, które pozwala Arduino zintegrować go w dowolnym obwodzie lub projekcie. Tutaj omówiliśmy, w jaki sposób możemy podłączyć dwa arduinos i przesyłać dane za pomocą komunikacji szeregowej. Korzystając z protokołu UART, możemy poprawić komunikację między urządzeniami i płytkami Arduino.