Komunikační protokol Arduino

Komunikacni Protokol Arduino



Komunikační protokoly je sada pravidel, která umožňuje zařízením komunikovat a vyměňovat si data. Tyto protokoly jsou velmi důležité v komunikaci Arduino, protože Arduino neustále odesílá a přijímá data. Použití těchto protokolů pomáhá Arduinu pokrýt detekci chyb a možné metody obnovy chyb. Tyto protokoly spojují analogová a digitální zařízení a umožňují navrhovat více projektů.

Komunikační protokoly Arduino

Pomocí komunikačních protokolů můžeme odesílat a přijímat data jakéhokoli senzoru v Arduinu.

Některé jednoduché senzory, jako je infračervené (IR), mohou přímo komunikovat s Arduinem, ale některé složité senzory, jako je modul Wi-Fi, modul SD karty a gyroskop, nemohou komunikovat přímo s Arduinem bez jakýchkoli komunikačních protokolů. Proto jsou tyto protokoly nedílnou součástí komunikace Arduino.







Arduino má připojeno několik periferií; mezi nimi jsou tři komunikační periferie používané v deskách Arduino.



Komunikační protokoly Arduino

Komunikace mezi různými elektronickými zařízeními, jako je Arduino, je standardizována mezi těmito třemi protokoly; umožňuje návrhářům snadno komunikovat mezi různými zařízeními bez problémů s kompatibilitou. Fungování těchto tří protokolů je stejné, protože slouží stejnému účelu komunikace, ale liší se implementací uvnitř obvodu. Další popis těchto protokolů je diskutován níže.







UART

UART je známý jako Univerzální asynchronní přijímač vysílač. UART je sériový komunikační protokol, což znamená, že datové bity jsou přenášeny v sekvenční formě jeden po druhém. Pro nastavení UART komunikace potřebujeme dvě linky. Jeden je pin Tx (D1) desky Arduino a druhý je pin Rx(D0) desky Arduino. Pin Tx slouží pro přenos dat do zařízení a pin Rx se používá pro příjem dat. Různé desky Arduino mají více pinů UART.

Digitální pin Arduino Pin UART
D1 Tx
D0 Rx

Pro navázání sériové komunikace pomocí portu UART potřebujeme připojit dvě zařízení v níže uvedené konfiguraci:



Na Arduino Uno je jeden sériový port vyhrazen pro komunikaci, která se běžně nazývá USB port. Jak název napovídá Universal Serial Bus, jedná se tedy o sériový port. Pomocí USB portu může Arduino navázat komunikaci s počítači. USB port je připojen k integrovaným pinům Tx a Rx Arduina. Pomocí těchto pinů můžeme přes USB připojit jakýkoli externí hardware jiný než počítač. Arduino IDE poskytuje knihovnu SoftwareSerial (SoftwareSerial.h) což umožňuje uživatelům používat piny GPIO jako piny Serial Tx a Rx.

  • UART se s Arduinem snadno ovládá
  • UART nepotřebuje žádný hodinový signál
  • Přenosová rychlost musí být nastavena v rámci 10% limitu komunikujících zařízení, aby se zabránilo ztrátě dat
  • Více zařízení s Arduinem v konfiguraci Master Slave není možné s UART
  • UART je poloviční duplex, což znamená, že zařízení nemohou vysílat a přijímat data současně
  • Protokolem UART mohou komunikovat pouze dvě zařízení současně

Serial Peripheral Interface (SPI)

SPI je zkratka pro sériové periferní rozhraní, které je speciálně navrženo pro mikrokontroléry, aby s nimi komunikovaly. SPI pracuje v plně duplexním režimu, což znamená, že SPI může odesílat a přijímat data současně. Ve srovnání s UART a I2C je to nejrychlejší komunikační periferie na deskách Arduino. Běžně se používá tam, kde je vyžadována vysoká přenosová rychlost, jako je například LCD displej a aplikace pro karty Micro SD.

Digitální piny SPI na Arduinu jsou předdefinované. Konfigurace pinů Arduino Uno SPI je následující:

Linka SPI GPIO Pin hlavičky ICSP
SCK 13 3
MISO 12 1
KOUŘ jedenáct 4
SS 10
  • Zkratka MOSI znamená Master Out Slave In , MOSI je datová přenosová linka pro Master to Slave.
  • SCK je a Hodinová linka který definuje přenosovou rychlost a počáteční a koncovou charakteristiku.
  • SS znamená Slave Select ; SS linka umožňuje Master vybrat konkrétní Slave zařízení při provozu v konfiguraci více Slave.
  • MISO znamená Master in Slave Out ; MISO je přenosová linka Slave to Master pro data.

Jednou z hlavních předností protokolu SPI je konfigurace Master-Slave. Pomocí SPI lze jedno zařízení definovat jako Master pro ovládání několika Slave zařízení. Master má plnou kontrolu nad Slave zařízeními prostřednictvím SPI protokolu.

SPI je synchronní protokol, což znamená, že komunikace je spojena se společným hodinovým signálem mezi Master a Slave. SPI může ovládat více zařízení jako Slave přes jedinou vysílací a přijímací linku. Všechny Slave jsou připojeny k Master pomocí společného MISO přijímat linku spolu s KOUŘ jedna společná přenosová linka. SCK je také společná hodinová linka mezi Master a Slave zařízeními. Jediný rozdíl u Slave zařízení je, že každé slave zařízení je ovládáno samostatně SS vyberte řádek. To znamená, že každý Slave potřebuje další pin GPIO z desky Arduino, který bude fungovat jako výběrová linka pro toto konkrétní Slave zařízení.

Některé z hlavních předností protokolu SPI jsou uvedeny níže:

  • SPI je nejrychlejší protokol než I2C a UART
  • Nejsou vyžadovány žádné start a stop bity jako v UART, což znamená, že je možný nepřetržitý přenos dat
  • Slave lze snadno adresovat díky jednoduché konfiguraci Master Slave
  • Pro každý Slave je na desce Arduino obsazen jeden pin navíc. Prakticky 1 Master může ovládat 4 Slave zařízení
  • Chybí potvrzení dat jako v UART
  • Konfigurace více masterů není možná

Komunikační protokol I2C

Inter Integrated Circuit (I2C) je další komunikační protokol používaný deskami Arduino. I2C je nejobtížnější a nejsložitější protokol pro implementaci s Arduino a dalšími zařízeními. Navzdory své složitosti nabízí několik funkcí, které v jiných protokolech chybí, jako je více konfigurací Master a více Slave. I2C umožňuje připojení až 128 zařízení k hlavní desce Arduino. To je možné pouze proto, že I2C sdílí jeden vodič mezi všemi zařízeními Slave. I2C v Arduinu používá adresní systém, což znamená, že před odesláním dat do Slave zařízení musí Arduino nejprve vybrat Slave zařízení odesláním jedinečné adresy. I2C používá pouze dva vodiče, což snižuje celkový počet pinů Arduino, ale špatná stránka je, že I2C je pomalejší než protokol SPI.

Analogový pin Arduino I2C pin
A4 SDA
A5 SCL

Na hardwarové úrovni je I2C omezeno pouze na dva vodiče, jeden pro datovou linku známou jako SDA (sériová data) a druhý pro řádek Clock SCL (Sériové hodiny). V klidovém stavu jsou SDA i SCL vytaženy vysoko. Když je potřeba přenést data, jsou tyto linky staženy nízko pomocí obvodů MOSFET. Při použití I2C v projektech je povinné používat pull up rezistory běžně o hodnotě 4,7 kohm. Tyto vytahovací rezistory zajišťují, že obě linky SDA i SCL zůstanou při startu naprázdno vysoké.

Některé z hlavních předností protokolů I2C jsou:

  • Počet požadovaných pinů je velmi nízký
  • Lze připojit více zařízení Master Slaves
  • Používá pouze 2 dráty
  • Rychlost je ve srovnání s SPI pomalejší kvůli vytahovacím odporům
  • Rezistory potřebují více místa v obvodu
  • S narůstajícím počtem zařízení roste složitost projektu

Srovnání mezi UART vs I2C vs SPI

Protokol UART SPI 2C
Rychlost Nejpomalejší Nejrychlejší Rychlejší než UART
Počet zařízení Až do 2 4 zařízení Až 128 zařízení
Nutné dráty 2 (Tx,Rx) 4(SCK,SMOKE,EYES,SS) 2 (SDA, SCL)
Duplexní režim Plně duplexní režim Plně duplexní režim Half Duplex
Počet Master-Slave možný Single Master-Single Slave Single Master-Multiple Slaves Více pánů-více otroků
Složitost Jednoduchý Lze snadno ovládat více zařízení Komplexní s nárůstem zařízení
Potvrzení bit ani náhodou ani náhodou Ano

Závěr

V tomto článku jsme se zabývali komplexním srovnáním všech tří protokolů UART, SPI a I2C používaných v Arduinu. Znalost všech protokolů je důležitá, protože poskytuje nekonečné možnosti integrace více zařízení. Pochopení všech komunikačních periferií ušetří čas a pomůže optimalizovat projekty podle správného protokolu.