Arduino Communication Protocol

Arduino Communication Protocol



Ang mga protocol ng komunikasyon ay ang hanay ng mga panuntunan na nagpapahintulot sa mga device na makipag-usap at makipagpalitan ng data. Napakahalaga ng mga protocol na ito sa komunikasyon ng Arduino dahil patuloy na nagpapadala at tumatanggap ng data ang Arduino. Ang paggamit ng mga protocol na ito ay nakakatulong sa Arduino na masakop ang pagtuklas ng error at mga posibleng paraan ng pagbawi ng error. Pinagsasama ng mga protocol na ito ang mga analog at digital na device at ginagawang posible na magdisenyo ng maraming proyekto.

Arduino Communication Protocols

Sa pamamagitan ng paggamit ng mga protocol ng Communication, maaari kaming magpadala at tumanggap ng anumang data ng sensor sa Arduino.

Ang ilang mga simpleng sensor tulad ng Infrared (IR) ay maaaring direktang makipag-ugnayan sa Arduino ngunit ang ilan sa mga kumplikadong sensor tulad ng Wi-Fi module, SD card module at Gyroscope ay hindi maaaring direktang makipag-ugnayan sa Arduino nang walang anumang mga protocol ng komunikasyon. Kaya, iyon ang dahilan kung bakit ang mga protocol na ito ay isang mahalagang bahagi ng komunikasyon ng Arduino.







Ang Arduino ay may maraming mga peripheral na nakakabit dito; kasama ng mga ito mayroong tatlong mga peripheral ng komunikasyon na ginagamit sa mga Arduino board.



Arduino Communication Protocols

Ang komunikasyon sa iba't ibang mga elektronikong aparato tulad ng Arduino ay na-standardize sa tatlong protocol na ito; binibigyang-daan nito ang mga designer na madaling makipag-ugnayan sa pagitan ng iba't ibang device nang walang anumang isyu sa compatibility. Ang pagtatrabaho ng tatlong protocol na ito ay kapareho ng nagsisilbi ang mga ito sa parehong layunin ng komunikasyon, ngunit magkaiba ang mga ito sa pagpapatupad sa loob ng isang circuit. Ang karagdagang paglalarawan ng mga protocol na ito ay tinalakay sa ibaba.







UART

Ang UART ay kilala bilang ang Universal Asynchronous Receiver Transmitter. Ang UART ay isang serial communication protocol na nangangahulugang ang mga bits ng data ay inililipat sa sunud-sunod na anyo nang sunud-sunod. Para sa pag-set up ng komunikasyon sa UART kailangan namin ng dalawang linya. Ang isa ay ang Tx (D1) pin ng Arduino board at ang pangalawa ay ang Rx(D0) pin ng Arduino board. Ang Tx pin ay para sa pagpapadala ng data sa mga device at ang Rx pin ay ginagamit para sa pagtanggap ng data. Ang iba't ibang mga Arduino board ay may maraming UART pin.

Arduino Digital Pin UART Pin
D1 Tx
D0 Rx

Upang magtatag ng Serial na komunikasyon gamit ang UART port kailangan naming ikonekta ang dalawang device sa ipinapakitang configuration sa ibaba:



Sa Arduino Uno, isang serial port ang nakalaan para sa komunikasyon na karaniwang tinutukoy bilang USB port. Gaya ng ipinahihiwatig ng pangalan sa Universal Serial Bus, kaya isa itong serial port. Gamit ang USB port Arduino ay maaaring magtatag ng komunikasyon sa mga computer. Ang USB port ay konektado sa onboard na mga pin na Tx at Rx ng Arduino. Gamit ang mga pin na ito, maaari naming ikonekta ang anumang panlabas na hardware maliban sa Computer sa pamamagitan ng USB. Ang Arduino IDE ay nagbibigay ng SoftwareSerial library (SoftwareSerial.h) na nagpapahintulot sa mga user na gumamit ng mga GPIO pin bilang mga Serial Tx at Rx pin.

  • Ang UART ay simpleng patakbuhin sa Arduino
  • Hindi kailangan ng UART ng anumang signal ng orasan
  • Dapat itakda ang baud rate sa loob ng 10% na limitasyon ng mga device na nakikipag-ugnayan para maiwasan ang pagkawala ng data
  • Hindi posible sa UART ang maraming device na may Arduino sa Master Slave configuration
  • Ang UART ay half duplex, na nangangahulugan na ang mga device ay hindi maaaring magpadala at tumanggap ng data nang sabay
  • Dalawang device lang sa isang pagkakataon ang maaaring makipag-ugnayan sa UART protocol

Serial Peripheral Interface (SPI)

SPI ay isang acronym ng serial peripheral interface na espesyal na idinisenyo para sa mga microcontroller na makipag-ugnayan sa kanila. Gumagana ang SPI sa full-duplex mode na nangangahulugang ang SPI ay maaaring magpadala at tumanggap ng data nang sabay-sabay. Kung ihahambing sa UART at I2C ito ang pinakamabilis na peripheral ng komunikasyon sa mga Arduino board. Karaniwang ginagamit ito kung saan kinakailangan ang mataas na rate ng data tulad ng sa LCD display at mga application ng Micro SD card.

Ang mga digital na pin ng SPI sa Arduino ay paunang natukoy. Para sa Arduino Uno SPI pin configuration ay ang mga sumusunod:

Linya ng SPI GPIO Pin ng Header ng ICSP
SCK 13 3
MISO 12 1
Usok labing-isa 4
SS 10
  • Ang ibig sabihin ng MOSI ay Master Out Alipin Sa , Ang MOSI ay linya ng paghahatid ng Data para sa Master hanggang Alipin.
  • Ang SCK ay isang Linya ng orasan na tumutukoy sa bilis ng paghahatid at mga katangian ng pagtatapos ng simula.
  • Ang ibig sabihin ng SS ay Pumili ng Alipin ; Binibigyang-daan ng SS line ang Master na pumili ng partikular na Slave device kapag tumatakbo sa maraming configuration ng Slave.
  • Ang ibig sabihin ng MISO ay Master sa Slave Out ; Ang MISO ay Slave to Master transmission line para sa Data.

Isa sa mga pangunahing highlight ng SPI protocol ay Master-Slave configuration. Ang paggamit ng SPI isang device ay maaaring tukuyin bilang Master para makontrol ang ilang Slave device. Ang Master ay nasa buong kontrol ng mga Slave device sa pamamagitan ng SPI protocol.

Ang SPI ay synchronous protocol, na nangangahulugang ang komunikasyon ay naka-link sa karaniwang signal ng orasan sa pagitan ng Master at Slave. Maaaring kontrolin ng SPI ang maraming device bilang Slave sa isang linya ng pagpapadala at pagtanggap. Ang lahat ng mga Alipin ay konektado sa Master gamit ang karaniwan MISO makatanggap ng linya kasama ng Usok isang karaniwang linya ng pagpapadala. SCK ay din ang karaniwang linya ng orasan sa mga Master at Slave na device. Ang pagkakaiba lamang sa mga Slave device ay ang bawat slave device ay kinokontrol sa pamamagitan ng hiwalay SS pumili ng linya. Nangangahulugan ito na ang bawat Slave ay nangangailangan ng dagdag na GPIO pin mula sa Arduino board na magsisilbing piling linya para sa partikular na Slave device na iyon.

Ang ilan sa mga pangunahing highlight ng SPI protocol ay nakalista sa ibaba:

  • Ang SPI ay pinakamabilis na protocol kaysa sa I2C at UART
  • Walang kinakailangang start at stop bit tulad ng sa UART na nangangahulugang posible ang tuluy-tuloy na paghahatid ng data
  • Madaling matugunan ang Slave dahil sa simpleng configuration ng Master Slave
  • Para sa bawat Slave isang dagdag na pin ang inookupahan sa Arduino board. Halos kayang kontrolin ng 1 Master ang 4 na device ng Slave
  • Nawawala ang data acknowledgement tulad ng ginamit sa UART
  • Multiple Master configuration ay hindi posible

I2C Communication Protocol

Ang Inter Integrated Circuit (I2C) ay isa pang protocol ng komunikasyon na ginagamit ng mga Arduino board. Ang I2C ay ang pinakamahirap at kumplikadong protocol na ipatupad sa Arduino at iba pang mga device. Sa kabila ng komplikasyon nito, nag-aalok ito ng maraming feature na nawawala sa iba pang mga protocol tulad ng maraming Master at maraming mga configuration ng Slaves. Pinapayagan ng I2C ang pagkonekta ng hanggang 128 na device sa pangunahing Arduino board. Posible lang ito dahil ang I2C ay nagbabahagi ng solong wire sa lahat ng Slave device. Gumagamit ang I2C sa Arduino ng isang address system, ibig sabihin bago magpadala ng data sa Slave device, dapat munang piliin ng Arduino ang Slave device sa pamamagitan ng pagpapadala ng natatanging address. Gumagamit lamang ang I2C ng dalawang wire na binabawasan ang kabuuang bilang ng pin ng Arduino, ngunit ang masamang bahagi nito ay ang I2C ay mas mabagal kaysa sa protocol ng SPI.

Arduino Analog Pin I2C Pin
A4 SDA
A5 SCL

Sa antas ng hardware, ang I2C ay limitado lamang sa dalawang wire, isa para sa linya ng data na kilala bilang SDA (Serial Data) at pangalawa para sa linya ng Orasan SCL (Serial Clock). Sa idle state parehong SDA at SCL ay hinihila nang mataas. Kapag ang data ay kailangang ipadala ang mga linyang ito ay hinila nang mababa gamit ang MOSFET circuitry. Ang paggamit ng I2C sa mga proyekto ay ipinag-uutos na gumamit ng mga pull up resistors na karaniwang may halaga na 4.7Kohm. Tinitiyak ng mga pull up resistor na ito na ang parehong mga linya ng SDA at SCL ay mananatiling mataas sa kanilang idle start.

Ang ilan sa mga pangunahing highlight ng I2C protocol ay:

  • Ang bilang ng mga pin na kinakailangan ay napakababa
  • Maaaring ikonekta ang maramihang mga Master Slaves device
  • Gumagamit lamang ng 2 wire
  • Ang bilis ay mas mabagal kumpara sa SPI dahil sa pull up resistors
  • Ang mga resistors ay nangangailangan ng mas maraming espasyo sa circuit
  • Ang pagiging kumplikado ng pagtaas ng proyekto sa pagtaas ng bilang ng mga aparato

Paghahambing sa pagitan ng UART vs I2C vs SPI

Protocol UART SPI 2C
Bilis Pinakamabagal Pinakamabilis Mas mabilis kaysa sa UART
Bilang ng mga device Hanggang 2 4 na device Hanggang 128 device
Kinakailangan ang mga wire 2(Tx,Rx) 4(SCK,USOK,MATA,SS) 2(SDA,SCL)
Duplex Mode Full Duplex Mode Full Duplex Mode Half Duplex
Bilang ng mga Master-Slaves na posible Single Master-Single Alipin Single Master-Maramihang Alipin Maramihang Masters-Maramihang Alipin
Pagiging kumplikado Simple Madaling makontrol ang maraming device Kumplikado sa pagdami ng mga device
Medyo pagkilala Hindi Hindi Oo

Konklusyon

Sa artikulong ito, sinaklaw namin ang isang komprehensibong paghahambing ng lahat ng tatlong protocol na UART, SPI at I2C na ginamit sa Arduino. Ang pag-alam sa lahat ng mga protocol ay mahalaga dahil nagbibigay ito ng walang katapusang mga pagkakataon upang pagsamahin ang maramihang mga aparato. Ang pag-unawa sa lahat ng mga peripheral ng komunikasyon ay makatipid ng oras at makakatulong upang ma-optimize ang mga proyekto ayon sa tamang protocol.