Комуникационен протокол Arduino

Komunikacionen Protokol Arduino



Комуникационните протоколи са набор от правила, който позволява на устройствата да комуникират и обменят данни. Тези протоколи са много важни в Arduino комуникацията, тъй като Arduino непрекъснато изпраща и получава данни. Използването на тези протоколи помага на Arduino да покрива откриването на грешки и възможните методи за възстановяване на грешки. Тези протоколи обединяват аналогови и цифрови устройства и правят възможно проектирането на множество проекти.

Комуникационни протоколи на Arduino

Чрез използване на комуникационни протоколи можем да изпращаме и получаваме данни от всеки сензор в Arduino.

Някои прости сензори като инфрачервен (IR) могат директно да комуникират с Arduino, но някои от сложните сензори като Wi-Fi модул, модул SD карта и жироскоп не могат да комуникират директно с Arduino без никакви комуникационни протоколи. Ето защо тези протоколи са неразделна част от Arduino комуникацията.







Arduino има множество периферни устройства, свързани към него; сред тях има три комуникационни периферни устройства, използвани в платките Arduino.



Комуникационни протоколи на Arduino

Комуникацията между различни електронни устройства като Arduino е стандартизирана между тези три протокола; позволява на дизайнерите да комуникират лесно между различни устройства без проблеми със съвместимостта. Работата на тези три протокола е една и съща, тъй като служат за една и съща цел на комуникация, но се различават в изпълнението вътре в една верига. Допълнително описание на тези протоколи е обсъдено по-долу.







UART

UART е известен като Универсален асинхронен приемник-предавател. UART е сериен комуникационен протокол, което означава, че битовете данни се прехвърлят в последователна форма един след друг. За настройка на UART комуникация се нуждаем от две линии. Единият е щифтът Tx (D1) на платката Arduino, а вторият е щифтът Rx(D0) на платката Arduino. Tx щифтът е за предаване на данни към устройства, а Rx щифтът се използва за получаване на данни. Различните платки Arduino имат множество UART пинове.

Цифров щифт Arduino UART щифт
D1 Tx
D0 Rx

За да установим серийна комуникация чрез UART порт, трябва да свържем две устройства в показаната по-долу конфигурация:



На Arduino Uno един сериен порт е предназначен за комуникация, който обикновено се нарича USB порт. Както подсказва името Universal Serial Bus, това е сериен порт. Използвайки USB порта Arduino може да установи комуникация с компютри. USB портът е свързан към бордовите щифтове Tx и Rx на Arduino. С помощта на тези щифтове можем да свържем всеки външен хардуер, различен от компютър, през USB. Arduino IDE предоставя библиотека SoftwareSerial (SoftwareSerial.h) което позволява на потребителите да използват GPIO пинове като серийни Tx и Rx пинове.

  • UART е лесен за работа с Arduino
  • UART не се нуждае от часовников сигнал
  • Скоростта на предаване трябва да бъде зададена в рамките на 10% ограничение на комуникиращите устройства, за да се предотврати загуба на данни
  • Множество устройства с Arduino в конфигурация Master Slave не са възможни с UART
  • UART е половин дуплекс, което означава, че устройствата не могат да предават и получават данни едновременно
  • Само две устройства наведнъж могат да комуникират с UART протокол

Сериен периферен интерфейс (SPI)

SPI е акроним на сериен периферен интерфейс, който е специално проектиран за микроконтролери да комуникират с тях. SPI работи в режим на пълен дуплекс, което означава, че SPI може да изпраща и получава данни едновременно. В сравнение с UART и I2C това е най-бързата комуникационна периферия в платките Arduino. Обикновено се използва, когато се изисква висока скорост на данни, като например в приложения с LCD дисплей и Micro SD карта.

SPI цифровите щифтове на Arduino са предварително дефинирани. За Arduino Uno SPI pin конфигурацията е както следва:

SPI линия GPIO ICSP заглавен щифт
SCK 13 3
MISO 12 1
ДИМ единадесет 4
СС 10
  • MOSI означава Master Out Slave In , MOSI е линия за предаване на данни от главен към подчинен.
  • SCK е a Часовникова линия който определя скоростта на предаване и началните крайни характеристики.
  • SS означава Избор на роб ; SS линията позволява на Master да избере конкретно Slave устройство, когато работи в конфигурация с множество Slave.
  • MISO означава Господар в Slave Out ; MISO е Slave to Master предавателна линия за данни.

Един от основните акценти на SPI протокола е конфигурацията Master-Slave. Използвайки SPI, едно устройство може да бъде определено като Master за управление на няколко Slave устройства. Главният е в пълен контрол на подчинените устройства чрез SPI протокол.

SPI е синхронен протокол, което означава, че комуникацията е свързана с общ часовников сигнал между главния и подчинения. SPI може да управлява множество устройства като Slave през една предавателна и приемаща линия. Всички подчинени устройства са свързани към главния чрез общ MISO получавате линия заедно с ДИМ една обща предавателна линия. SCK също така е често срещаната линия на часовника сред главните и подчинените устройства. Единствената разлика в подчинените устройства е, че всяко подчинено устройство се управлява чрез отделно СС изберете линия. Това означава, че всеки Slave се нуждае от допълнителен GPIO щифт от платката на Arduino, който ще действа като избрана линия за това конкретно Slave устройство.

Някои от основните акценти на SPI протокола са изброени по-долу:

  • SPI е най-бързият протокол от I2C и UART
  • Не са необходими стартови и стоп битове, както в UART, което означава, че е възможно непрекъснато предаване на данни
  • Slave може лесно да се адресира благодарение на простата конфигурация на Master Slave
  • За всеки Slave се заема допълнителен щифт на платката Arduino. На практика 1 Master може да управлява 4 Slave устройства
  • Липсва потвърждение на данните, както се използва в UART
  • Не е възможна конфигурация с множество главни

Комуникационен протокол I2C

Inter Integrated Circuit (I2C) е друг комуникационен протокол, използван от платките Arduino. I2C е най-трудният и сложен протокол за прилагане с Arduino и други устройства. Въпреки усложненията си, той предлага множество функции, които липсват в други протоколи, като множество главни и множество подчинени конфигурации. I2C позволява свързване на до 128 устройства към основната платка Arduino. Това е възможно само защото I2C споделя един проводник между всички подчинени устройства. I2C в Arduino използва адресна система, което означава, че преди да изпрати данни към подчинено устройство, Arduino трябва първо да избере подчинено устройство, като изпрати уникален адрес. I2C използва само два проводника, намалявайки общия брой пинове на Arduino, но лошата страна е, че I2C е по-бавен от SPI протокола.

Аналогов щифт на Arduino I2C щифт
A4 SDA
A5 SCL

На хардуерно ниво I2C е ограничен само до два проводника, един за линия за данни, известна като SDA (серийни данни) и вторият за линията на часовника SCL (сериен часовник). В неактивно състояние и SDA, и SCL са изтеглени високо. Когато данните трябва да бъдат предадени, тези линии се изтеглят ниско с помощта на MOSFET верига. Използването на I2C в проекти е задължително да се използват изтеглящи резистори, обикновено със стойност от 4,7 Kohm. Тези издърпващи резистори гарантират, че и SDA, и SCL линиите остават високи при стартиране на празен ход.

Някои от основните акценти на I2C протоколите са:

  • Броят на необходимите щифтове е много малък
  • Могат да бъдат свързани множество устройства Master Slaves
  • Използва само 2 проводника
  • Скоростта е по-ниска в сравнение със SPI поради издърпващи резистори
  • Резисторите се нуждаят от повече място във веригата
  • Сложността на проекта се увеличава с увеличаване на броя на устройствата

Сравнение между UART срещу I2C срещу SPI

протокол UART SPI 2C
Скорост Най-бавно Най-бързият По-бързо от UART
Брой устройства До 2 4 устройства До 128 устройства
Необходими са проводници 2(Tx,Rx) 4(SCK,ДИМ,ОЧИ,SS) 2 (SDA, SCL)
Дуплексен режим Пълен дуплексен режим Пълен дуплексен режим Полудуплекс
Възможен брой главни-подчинени Един главен-единствен подчинен Единичен господар-множество роби Множество господари-множество роби
Сложност просто Може лесно да управлява множество устройства Комплекс с увеличаване на устройствата
Бит за потвърждение не не да

Заключение

В тази статия разгледахме цялостно сравнение на всичките три протокола UART, SPI и I2C, използвани в Arduino. Познаването на всички протоколи е важно, тъй като дава безкрайни възможности за интегриране на множество устройства. Разбирането на всички комуникационни периферни устройства ще спести време и ще помогне за оптимизиране на проектите според правилния протокол.