Protokół komunikacji Arduino

Protokół komunikacji Arduino
Protokoły komunikacyjne to zestaw reguł, które pozwalają urządzeniom komunikować się i wymieniać dane. Protokoły te są bardzo znaczące w komunikacji Arduino, ponieważ Arduino stale wysyła i odbiera dane. Korzystanie z tych protokołów pomaga Arduino w pokryciu wykrywania błędów i możliwych metod odzyskiwania błędów. Protokoły te łączą urządzenia analogowe i cyfrowe i umożliwiają projektowanie wielu projektów.

Protokoły komunikacyjne Arduino

Korzystając z protokołów komunikacyjnych, możemy wysyłać i odbierać dane dowolnego czujnika w Arduino.

Niektóre proste czujniki, takie jak podczerwień (IR), mogą bezpośrednio komunikować się z Arduino, ale niektóre złożone czujniki, takie jak moduł Wi-Fi, moduł karty SD i żyroskop, nie mogą komunikować się bezpośrednio z Arduino bez żadnych protokołów komunikacyjnych. Dlatego te protokoły są integralną częścią komunikacji Arduino.

Arduino ma do niego przymocowane wiele urządzeń peryferyjnych; Wśród nich są trzy peryferyjne komunikacyjne używane na tablicach Arduino.

  • Uart
  • SPI
  • I2C

Protokoły komunikacyjne Arduino

Komunikacja między różnymi urządzeniami elektronicznymi, takimi jak Arduino, jest znormalizowane między tymi trzema protokołami; Umożliwia projektantom łatwą komunikację między różnymi urządzeniami bez żadnych problemów z kompatybilnością. Działanie tych trzech protokołów jest takie same, jak służą temu samemu celowi komunikacji, ale różnią się wdrażaniem w obwodzie. Dalszy opis tych protokołów omówiono poniżej.

Uart

UART jest znany jako Uniwersalny asynchroniczny nadajnik odbiornika. UART to szeregowy protokół komunikacji, co oznacza, że ​​bity danych są przesyłane w sekwencyjnej formie jeden po drugim. Do konfigurowania komunikacji UART potrzebujemy dwóch linii. Jednym z nich jest pin TX (D1) na płycie Arduino, a drugi to pin RX (D0) na tablicy Arduino. TX PIN służy do przesyłania danych do urządzeń, a pin RX jest używany do odbierania danych. Różne tablice Arduino mają wiele pinów UART.

Cyfrowy PIN Arduino Pin uart
D1 TX
D0 Rx

Aby ustalić komunikację szeregową za pomocą portu UART, musimy podłączyć dwa urządzenia na poniżej pokazane konfigurację:

Na Arduino UNO jeden port szeregowy jest poświęcony komunikacji, który jest powszechnie określany jako port USB. Jak sama nazwa sugeruje Universal Serial Bus, więc jest to port szeregowy. Korzystanie z portu USB Arduino może nawiązać komunikację z komputerami. Port USB jest podłączony do pinów pokładowych TX i RX Arduino. Za pomocą tych pinów możemy podłączyć dowolny zewnętrzny sprzęt inny niż komputer za pośrednictwem USB. Arduino IDE zapewnia bibliotekę oprogramowania (Softwareserial.H) który pozwala użytkownikom używać pinów GPIO jako seryjnych pinów TX i RX.

  • UART jest prosty w obsłudze z Arduino
  • UART nie potrzebuje żadnego sygnału zegara
  • Wskaźnik transakcji musi być ustawiony w granicach 10% komunikowania się urządzeń, aby zapobiec utratę danych
  • Wiele urządzeń z Arduino w konfiguracji mistrzowskiej niewolników nie jest możliwych z UART
  • UART to pół dupleksu, co oznacza, że ​​urządzenia nie mogą przesyłać i odbierać danych jednocześnie
  • Tylko dwa urządzenia jednocześnie mogą komunikować się z protokołem UART

Szeregowy interfejs peryferyjny (SPI)

SPI jest akronimem szeregowego interfejsu peryferyjnego, który jest specjalnie zaprojektowany dla mikrokontrolerów do komunikowania się z nimi. SPI działa w trybie pełnego dupleksu, co oznacza, że ​​SPI może wysyłać i odbierać dane jednocześnie. W porównaniu z UART i I2C jest to najszybsza peryferyjna komunikacja na tablicach Arduino. Jest powszechnie używany tam, gdzie wymagana jest wysoka szybkość danych, jak w aplikacjach kart LCD i mikro SD.

Cyfrowe szpilki SPI na Arduino są predefiniowane. Dla Arduino UNO SPI konfiguracja pin jest następująca:

Linia SPI GPIO Pin nagłówka ICSP
SCK 13 3
Miso 12 1
Mosi 11 4
SS 10 -
  • Mosi oznacza Opanuj niewolnik, MOSI to linia transmisji danych dla Master to Slave.
  • SCK to Linia zegara który określa prędkość transmisji i początkowe cechy końcowe.
  • SS oznacza Wybierz niewolnika; Linia SS pozwala Master na wybranie określonego urządzenia niewolnika podczas pracy w konfiguracji wielu niewolników.
  • Miso oznacza Mistrz w niewolniku; MISO jest niewolnikiem do głównej linii transmisji dla danych.

Jednym z głównych atrakcji protokołu SPI jest konfiguracja mistrzowska. Korzystanie z SPI jedno urządzenie można zdefiniować jako master do kontrolowania kilku urządzeń niewolników. Master jest pełna kontroli urządzeń niewolniczych za pośrednictwem protokołu SPI.

SPI to protokół synchroniczny, co oznacza, że ​​komunikacja jest powiązana ze wspólnym sygnałem zegara między mistrzem a niewolnikiem. SPI może kontrolować wiele urządzeń jako niewolnika nad jedną linią nadawczą i odbiorczą. Wszyscy niewolnicy są podłączeni do głównego za pomocą wspólnych Miso odbierać linię wraz z Mosi Jedna wspólna linia transmisji. SCK jest również wspólną linią zegara wśród urządzeń mistrzowskich i niewolników. Jedyną różnicą w urządzeniach niewolników jest to, że każde urządzenie niewolników jest kontrolowane przez osobne SS Wybierz linię. Oznacza to, że każdy niewolnik potrzebuje dodatkowego styku GPIO z płyty Arduino, która będzie działać jako wybrana linia dla tego konkretnego urządzenia niewolnika.

Niektóre z głównych atrakcji protokołu SPI podano poniżej:

  • SPI to najszybszy protokół niż I2C i UART
  • Brak wymaganych bitów początkowych i stopu, jak w UART, co oznacza, że ​​możliwa jest ciągła transmisja danych
  • Slave można łatwo rozwiązać z powodu prostej konfiguracji niewolników głównych
  • Dla każdego niewolnika na tablicy Arduino zajmuje dodatkowy szpilka. Praktycznie 1 Master może kontrolować 4 urządzenia niewolników
  • Brakuje uznania danych, jak użyte w UART
  • Wiele konfiguracji głównej nie jest możliwe

Protokół komunikacji I2C

Międzyintegrowany obwód (I2C) to kolejny protokół komunikacyjny używany przez tablice Arduino. I2C jest najtrudniejszym i najtrudniejszym protokołem do wdrożenia z Arduino i innymi urządzeniami. Pomimo jego komplikacji oferuje wiele funkcji, których brakuje w innych protokołach, takich jak wiele konfiguracji master i wielu niewolników. I2C umożliwia podłączenie do 128 urządzeń z główną płytą Arduino. Jest to możliwe tylko dlatego, że I2C dzieli pojedynczy drut między wszystkimi urządzeniami niewolnikami. I2C w Arduino używa systemu adresu, co oznacza, że ​​przed wysłaniem danych do urządzenia niewolnika Arduino musi najpierw wybrać urządzenie niewolników, wysyłając unikalny adres. I2C używa tylko dwóch przewodów zmniejszających ogólną liczbę pinów Arduino, ale złą stroną jest I2C jest wolniejszy niż protokół SPI.

Analogiczna szpilka Arduino Pin I2C
A4 SDA
A5 Scl

Na poziomie sprzętowym I2C jest ograniczone tylko do dwóch przewodów, jeden dla linii danych znanej jako SDA (dane szeregowe) i drugi dla linii zegarowej SCL (zegar szeregowy). W stanie bezczynności zarówno SDA, jak i SCL są wyciągane wysoko. Gdy dane muszą być przesyłane, linie te są ciągnięte nisko za pomocą obwodu MOSFET. Korzystanie z I2C w projektach obowiązkowe jest stosowanie rezystorów podciągających zwykle wartość 4.7KOHM. Te rezystory podciągające zapewniają, że zarówno linie SDA, jak i SCL pozostają wysokie w swoim biegu jałowym.

Niektóre z głównych atrakcji protokołów I2C to:

  • Liczba wymaganych pinów jest bardzo niska
  • Można podłączyć wiele urządzeń niewolników głównych
  • Używa tylko 2 przewodów
  • Prędkość jest wolniejsza w porównaniu do SPI z powodu oporu podciągania
  • Rezystory potrzebują więcej miejsca w obwodzie
  • Złożoność wzrostu projektu wraz ze wzrostem liczby urządzeń

Porównanie UART vs I2C vs SPI

Protokół Uart SPI I2C
Prędkość Najwolniejszy Najszybszy Szybciej niż Uart
Liczba urządzeń Do 2 4 urządzenia Do 128 urządzeń
Wymagane przewody 2 (TX, RX) 4 (SCK, Mosi, Miso, SS) 2 (SDA, SCL)
Tryb dupleksu Pełny tryb dupleksu Pełny tryb dupleksu Połowa dupleksu
Możliwa liczba mistrzów Pojedynczy mistrz niewolnik Pojedyncze niewolnicy Master-Multiple Wielu niewolników Masters-Multiple
Złożoność Prosty Może łatwo kontrolować wiele urządzeń Złożone ze wzrostem urządzeń
Bit potwierdzenia NIE NIE Tak

Wniosek

W tym artykule omówiliśmy kompleksowe porównanie wszystkich trzech protokołów UART, SPI i I2C używanych w Arduino. Znajomość wszystkich protokołów jest ważna, ponieważ daje niekończące się możliwości zintegrowania wielu urządzeń. Zrozumienie wszystkich urządzeń peryferyjnych zaoszczędzi czas i pomoże zoptymalizować projekty zgodnie z prawidłowym protokołem.