Протоколы связи 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 | СПИ | 2С |
Скорость | Самый медленный | Самый быстрый | Быстрее, чем UART |
Количество устройств | до 2 | 4 устройства | До 128 устройств |
Требуемые провода | 2 (Передача, Прием) | 4 (СКК, ДЫМ, ГЛАЗА, СС) | 2(ПДД,СКЛ) |
Дуплексный режим | Полнодуплексный режим | Полнодуплексный режим | Полудуплекс |
Возможное количество Master-Slave | Один мастер-один подчиненный | Один мастер-несколько ведомых | Несколько мастеров-несколько ведомых |
Сложность | Простой | Может легко управлять несколькими устройствами | Комплекс с увеличением устройств |
Бит подтверждения | Неа | Неа | Да |
Вывод
В этой статье мы провели всестороннее сравнение всех трех протоколов UART, SPI и I2C, используемых в Arduino. Знание всех протоколов важно, так как это дает бесконечные возможности для интеграции нескольких устройств. Понимание всех коммуникационных периферийных устройств сэкономит время и поможет оптимизировать проекты в соответствии с правильным протоколом.