Протокол связи Arduino

Protokol Svazi Arduino



Протоколы связи — это набор правил, позволяющих устройствам обмениваться данными и обмениваться данными. Эти протоколы очень важны для связи Arduino, поскольку Arduino постоянно отправляет и получает данные. Использование этих протоколов помогает Arduino охватывать обнаружение ошибок и возможные методы устранения ошибок. Эти протоколы объединяют аналоговые и цифровые устройства и позволяют разрабатывать несколько проектов.

Протоколы связи Arduino

Используя протоколы связи, мы можем отправлять и получать данные любого датчика в Arduino.

Некоторые простые датчики, такие как инфракрасный (ИК), могут напрямую взаимодействовать с 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 УАПП контакт
Д1 Тх
Д0 Rx

Чтобы установить последовательную связь с использованием порта UART, нам необходимо подключить два устройства в показанной ниже конфигурации:



В Arduino Uno один последовательный порт предназначен для связи, который обычно называют USB-портом. Как следует из названия, универсальная последовательная шина означает, что это последовательный порт. С помощью USB-порта Arduino может устанавливать связь с компьютерами. Порт USB подключен к бортовым контактам Tx и Rx Arduino. Используя эти контакты, мы можем подключить любое внешнее оборудование, кроме компьютера, через USB. Arduino IDE предоставляет библиотеку SoftwareSerial (SoftwareSerial.h) что позволяет пользователям использовать контакты GPIO в качестве контактов Serial Tx и Rx.

  • UART прост в эксплуатации с Arduino
  • UART не нуждается в тактовом сигнале
  • Скорость передачи данных должна быть установлена ​​в пределах 10% от предела взаимодействующих устройств, чтобы предотвратить потерю данных.
  • Несколько устройств с Arduino в конфигурации Master Slave невозможны с UART.
  • UART является полудуплексным, что означает, что устройства не могут одновременно передавать и получать данные.
  • Только два устройства одновременно могут обмениваться данными по протоколу UART.

Последовательный периферийный интерфейс (SPI)

СПИ — это аббревиатура последовательного периферийного интерфейса, специально разработанного для взаимодействия микроконтроллеров с ними. SPI работает в полнодуплексном режиме, что означает, что SPI может отправлять и получать данные одновременно. По сравнению с UART и I2C это самая быстрая коммуникационная периферия в платах Arduino. Он обычно используется там, где требуется высокая скорость передачи данных, например, в ЖК-дисплеях и приложениях для карт Micro SD.

Цифровые контакты SPI на Arduino предопределены. Для Arduino Uno конфигурация контактов SPI выглядит следующим образом:

Линия SPI GPIO Контакт заголовка ICSP
СКК 13 3
МИСО 12 1
ДЫМ одиннадцать 4
SS 10
  • MOSI означает Master Out Slave In , MOSI — это линия передачи данных от ведущего к ведомому.
  • SCK - это Линия часов который определяет скорость передачи и начальные и конечные характеристики.
  • СС означает Выбор ведомого ; Линия SS позволяет главному устройству выбирать конкретное ведомое устройство при работе в конфигурации с несколькими ведомыми устройствами.
  • МИСО означает Мастер в рабстве ; MISO — это линия передачи данных от ведомого к ведущему.

Одной из основных особенностей протокола SPI является конфигурация Master-Slave. Используя SPI, одно устройство может быть определено как ведущее для управления несколькими ведомыми устройствами. Мастер полностью контролирует ведомые устройства через протокол SPI.

SPI является синхронным протоколом, что означает, что связь связана с общим тактовым сигналом между Master и Slave. SPI может управлять несколькими устройствами как ведомыми по одной линии передачи и приема. Все ведомые подключены к ведущему через общий МИСО получить линию вместе с ДЫМ одна общая линия передачи. СКК также является общей линией синхронизации между ведущими и ведомыми устройствами. Единственная разница в ведомых устройствах заключается в том, что каждое ведомое устройство управляется через отдельный SS выберите строку. Это означает, что каждому ведомому устройству нужен дополнительный вывод GPIO от платы Arduino, который будет действовать как линия выбора для этого конкретного ведомого устройства.

Некоторые из основных особенностей протокола SPI перечислены ниже:

  • SPI — самый быстрый протокол, чем I2C и UART.
  • Стартовые и стоповые биты не требуются, как в UART, что означает возможность непрерывной передачи данных.
  • Слейв может быть легко адресован благодаря простой конфигурации Master-Slave.
  • Для каждого ведомого устройства на плате Arduino занят дополнительный контакт. Практически 1 мастер может управлять 4 ведомыми устройствами
  • Подтверждение данных отсутствует, как используется в UART
  • Конфигурация с несколькими мастерами невозможна

Протокол связи I2C

Inter Integrated Circuit (I2C) — это еще один протокол связи, используемый платами Arduino. I2C — самый сложный протокол для реализации с Arduino и другими устройствами. Несмотря на свою сложность, он предлагает множество функций, отсутствующих в других протоколах, таких как конфигурации с несколькими ведущими и несколькими подчиненными. I2C позволяет подключить к основной плате Arduino до 128 устройств. Это возможно только потому, что I2C использует один провод для всех ведомых устройств. I2C в Arduino использует систему адресов, то есть перед отправкой данных на ведомое устройство Arduino должен сначала выбрать ведомое устройство, отправив уникальный адрес. I2C использует только два провода, что уменьшает общее количество выводов Arduino, но плохая сторона этого заключается в том, что I2C медленнее, чем протокол SPI.

Аналоговый вывод Arduino I2C контакт
А4 ПДД
А5 СКЛ

На аппаратном уровне I2C ограничен только двумя проводами, один для линии данных, известной как SDA (серийные данные) и второй для линии часов SCL (последовательные часы). В состоянии простоя и SDA, и SCL переводятся в высокий уровень. Когда необходимо передать данные, эти линии переводятся в низкий уровень с помощью схемы MOSFET. При использовании I2C в проектах обязательно использовать подтягивающие резисторы, обычно номиналом 4,7 кОм. Эти подтягивающие резисторы гарантируют, что обе линии SDA и SCL остаются высокими при их холостом пуске.

Некоторые из основных особенностей протоколов I2C:

  • Требуемое количество булавок очень мало
  • Можно подключить несколько устройств Master Slave
  • Использует только 2 провода
  • Скорость ниже по сравнению с SPI из-за подтягивающих резисторов.
  • Резисторы требуют больше места в цепи
  • Сложность проекта увеличивается с увеличением количества устройств

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

Протокол UART СПИ
Скорость Самый медленный Самый быстрый Быстрее, чем UART
Количество устройств до 2 4 устройства До 128 устройств
Требуемые провода 2 (Передача, Прием) 4 (СКК, ДЫМ, ГЛАЗА, СС) 2(ПДД,СКЛ)
Дуплексный режим Полнодуплексный режим Полнодуплексный режим Полудуплекс
Возможное количество Master-Slave Один мастер-один подчиненный Один мастер-несколько ведомых Несколько мастеров-несколько ведомых
Сложность Простой Может легко управлять несколькими устройствами Комплекс с увеличением устройств
Бит подтверждения Неа Неа Да

Вывод

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