Arduino-communicatieprotocol

Arduino Communicatieprotocol



Communicatieprotocollen zijn de regels waarmee apparaten kunnen communiceren en gegevens kunnen uitwisselen. Deze protocollen zijn erg belangrijk in Arduino-communicatie, omdat Arduino constant gegevens verzendt en ontvangt. Het gebruik van deze protocollen helpt Arduino om foutdetectie en mogelijke foutherstelmethoden te dekken. Deze protocollen brengen analoge en digitale apparaten bij elkaar en maken het mogelijk om meerdere projecten te ontwerpen.

Arduino-communicatieprotocollen

Door communicatieprotocollen te gebruiken, kunnen we alle sensorgegevens in Arduino verzenden en ontvangen.

Sommige eenvoudige sensoren zoals infrarood (IR) kunnen rechtstreeks communiceren met Arduino, maar sommige van de complexe sensoren zoals wifi-module, SD-kaartmodule en gyroscoop kunnen niet rechtstreeks met Arduino communiceren zonder communicatieprotocollen. Daarom zijn deze protocollen een integraal onderdeel van Arduino-communicatie.







Arduino heeft meerdere randapparatuur eraan; onder hen zijn er drie communicatie-randapparatuur die wordt gebruikt in Arduino-borden.



Arduino-communicatieprotocollen

Communicatie tussen verschillende elektronische apparaten zoals Arduino is gestandaardiseerd tussen deze drie protocollen; het stelt ontwerpers in staat om gemakkelijk tussen verschillende apparaten te communiceren zonder compatibiliteitsproblemen. De werking van deze drie protocollen is hetzelfde omdat ze hetzelfde communicatiedoel dienen, maar ze verschillen in implementatie binnen een circuit. Een verdere beschrijving van deze protocollen wordt hieronder besproken.







UART

UART staat bekend als de Universele asynchrone ontvangerzender. UART is een serieel communicatieprotocol wat betekent dat databits in sequentiële vorm achter elkaar worden overgedragen. Voor het opzetten van UART-communicatie hebben we twee lijnen nodig. Een daarvan is de Tx (D1)-pin van het Arduino-bord en de tweede is de Rx(D0)-pin van het Arduino-bord. Tx-pin is voor het verzenden van gegevens naar apparaten en Rx-pin wordt gebruikt voor het ontvangen van gegevens. Verschillende Arduino-kaarten hebben meerdere UART-pinnen.

Arduino digitale pin UART-pin
D1 Tx
D0 Rx

Om seriële communicatie tot stand te brengen met behulp van de UART-poort, moeten we twee apparaten aansluiten in de onderstaande configuratie:



Op Arduino Uno is één seriële poort bestemd voor communicatie, die gewoonlijk USB-poort wordt genoemd. Zoals de naam al doet vermoeden, is Universal Serial Bus een seriële poort. Met behulp van de USB-poort kan Arduino communicatie met computers tot stand brengen. De USB-poort is verbonden met de ingebouwde pinnen Tx en Rx van Arduino. Met behulp van deze pinnen kunnen we alle externe hardware behalve computer via USB aansluiten. Arduino IDE biedt SoftwareSerial-bibliotheek (SoftwareSerial.h) waarmee gebruikers GPIO-pinnen kunnen gebruiken als Serial Tx- en Rx-pinnen.

  • UART is eenvoudig te bedienen met Arduino
  • UART heeft geen kloksignaal nodig
  • De baudrate moet worden ingesteld binnen een limiet van 10% van communicerende apparaten om gegevensverlies te voorkomen
  • Meerdere apparaten met Arduino in Master Slave-configuratie zijn niet mogelijk met UART
  • UART is half duplex, wat betekent dat apparaten niet tegelijkertijd gegevens kunnen verzenden en ontvangen
  • Slechts twee apparaten tegelijk kunnen communiceren met het UART-protocol

Seriële perifere interface (SPI)

SPI is een acroniem van seriële perifere interface die speciaal is ontworpen voor microcontrollers om ermee te communiceren. SPI werkt in full-duplex-modus, wat betekent dat SPI tegelijkertijd gegevens kan verzenden en ontvangen. In vergelijking met UART en I2C is het de snelste communicatie-randapparatuur in Arduino-boards. Het wordt vaak gebruikt waar een hoge gegevenssnelheid vereist is, zoals bij LCD-schermen en Micro SD-kaarttoepassingen.

SPI digitale pinnen op Arduino zijn vooraf gedefinieerd. Voor Arduino Uno is de SPI-pinconfiguratie als volgt:

SPI-lijn GPIO ICSP-headerpin
SCK 13 3
MISO 12 1
ROOK elf 4
SS 10
  • MOSI staat voor Master Uit Slave In , MOSI is een datatransmissielijn voor master naar slave.
  • SCK is een klok lijn die de transmissiesnelheid en begin-eindkarakteristieken definieert.
  • SS staat voor Slaaf selecteren ; Met SS-lijn kan Master een bepaald Slave-apparaat selecteren bij gebruik in meerdere Slave-configuraties.
  • MISO staat voor Master in Slave uit ; MISO is een slave-naar-master-transmissielijn voor gegevens.

Een van de belangrijkste hoogtepunten van het SPI-protocol is de Master-Slave-configuratie. Met behulp van SPI kan één apparaat worden gedefinieerd als Master om meerdere Slave-apparaten te bedienen. Master heeft volledige controle over slave-apparaten via het SPI-protocol.

SPI is een synchroon protocol, wat betekent dat de communicatie is gekoppeld aan een gemeenschappelijk kloksignaal tussen master en slave. SPI kan meerdere apparaten als slave besturen via een enkele zend- en ontvangstlijn. Alle slaves zijn verbonden met de master via common MISO lijn ontvangen samen met: ROOK één gemeenschappelijke zendlijn. SCK is ook de gemeenschappelijke kloklijn onder Master- en Slave-apparaten. Het enige verschil in slave-apparaten is dat elk slave-apparaat wordt bestuurd via afzonderlijke SS lijn selecteren. Dit betekent dat elke Slave een extra GPIO-pin van het Arduino-bord nodig heeft die zal fungeren als selectielijn voor dat specifieke Slave-apparaat.

Enkele van de belangrijkste hoogtepunten van het SPI-protocol worden hieronder vermeld:

  • SPI is het snelste protocol dan I2C en UART
  • Geen start- en stopbits vereist zoals in UART, wat betekent dat continue gegevensoverdracht mogelijk is
  • Slave kan eenvoudig worden geadresseerd dankzij eenvoudige Master Slave-configuratie
  • Voor elke Slave wordt een extra pin bezet op het Arduino-bord. Praktisch 1 Master kan 4 Slave-apparaten aansturen
  • Gegevensbevestiging ontbreekt zoals gebruikt in UART
  • Multiple Master configuratie is niet mogelijk

I2C-communicatieprotocol

Inter Integrated Circuit (I2C) is een ander communicatieprotocol dat wordt gebruikt door Arduino-kaarten. I2C is het moeilijkste en meest gecompliceerde protocol om te implementeren met Arduino en andere apparaten. Ondanks de complicatie biedt het meerdere functies die ontbreken in andere protocollen, zoals meerdere Master- en meerdere Slaves-configuraties. Met I2C kunnen maximaal 128 apparaten op het Arduino-hoofdbord worden aangesloten. Dit is alleen mogelijk omdat I2C een enkele draad deelt tussen alle slave-apparaten. I2C in Arduino maakt gebruik van een adressysteem, wat betekent dat voordat de gegevens naar het slave-apparaat worden verzonden, Arduino eerst het slave-apparaat moet selecteren door een uniek adres te verzenden. I2C gebruikt slechts twee draden die het totale aantal Arduino-pins verminderen, maar de slechte kant ervan is dat I2C langzamer is dan het SPI-protocol.

Arduino analoge pin I2C-pin
A4 SDA
A5 SCL

Op hardwareniveau is I2C beperkt tot slechts twee draden, één voor een datalijn die bekend staat als: SDA (Seriële gegevens) en tweede voor Kloklijn SCL (Seriële Klok). Bij inactiviteit worden zowel SDA als SCL hoog getrokken. Wanneer gegevens moeten worden verzonden, worden deze lijnen laag getrokken met behulp van MOSFET-schakelingen. Bij gebruik van I2C in projecten is het verplicht om pull-up weerstanden te gebruiken, normaal gesproken een waarde van 4.7Kohm. Deze pull-up weerstanden zorgen ervoor dat zowel SDA- als SCL-lijnen hoog blijven in hun inactieve start.

Enkele van de belangrijkste hoogtepunten van I2C-protocollen zijn:

  • Aantal benodigde pinnen is erg laag
  • Er kunnen meerdere Master Slaves-apparaten worden aangesloten
  • Gebruikt slechts 2 draden
  • Snelheid is langzamer in vergelijking met SPI vanwege optrekweerstanden
  • Weerstanden hebben meer ruimte nodig in het circuit
  • Complexiteit van het project neemt toe met toename van het aantal apparaten

Vergelijking tussen UART versus I2C versus SPI

Protocol UART SPI 2C
Snelheid Langzaamste Snelste Sneller dan UART
Aantal apparaten Tot 2 4 apparaten Tot 128 apparaten
Draden vereist 2(Tx,Rx) 4 (SCK, ROOK, OGEN, SS) 2 (SDA, SCL)
Duplexmodus Full duplex-modus Full duplex-modus Half duplex
Aantal Master-Slaven mogelijk Enkele Master-Single Slave Enkele master-meerdere slaves Meerdere Masters-Meerdere Slaves
Complexiteit Gemakkelijk Kan gemakkelijk meerdere apparaten bedienen Complex met toename van apparaten
Erkenningsbit Nee Nee Ja

Conclusie

In dit artikel hebben we een uitgebreide vergelijking gemaakt van alle drie de protocollen UART, SPI en I2C die in Arduino worden gebruikt. Het is belangrijk om alle protocollen te kennen, omdat het eindeloze mogelijkheden biedt om meerdere apparaten te integreren. Als u alle communicatierandapparatuur begrijpt, bespaart u tijd en kunt u projecten optimaliseren volgens het juiste protocol.