Уроки технологии
Технология Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Arduino Uno Pins

Плата Arduino Uno имеет более 20 контактов, которые можно использовать для множества различных приложений. Пины - это мост между программным и аппаратным обеспечением на плате Arduino.

Вы узнаете:

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

Мы рассмотрим плату Arduino Uno, но большинство пояснений (за исключением номеров контактов на плате) применимы и для любой другой платы Arduino.

Схема контактов Arduino Uno

Вот общее визуальное описание всех контактов, которые вы можете найти на плате Arduino Uno.

Распиновка

Контакты заземления

Певрое: Всегда соединияйте все заземления ваших цепей вместе и убедитесь, что все компоненты правильно подключены к земле. На схемах контакты заземления часто обозначаются как GND. Земля необходима плате Arduino для измерения и установки любого напряжения. По сути, напряжение — это разница потенциалов между двумя точками: здесь вы берете землю и другую точку. Итак, если все в вашей цепи подключено к одной и той же земле, все напряжения можно сравнить, и их значение будет иметь значение. Если у вас нет общей земли, то что означает 3,3В? Превышает ли значение 5 В, измеренное вами в другой точке вашей цепи? Это похоже на измерение разницы в росте между двумя людьми: если один из них стоит на ящике, то точка отсчета не одинакова. И вы не сможете получить ценные измерения, если не поместите двух человек на один уровень.

Контакты питания Arduino

Питание идет двумя путями:

  • Вам необходимо питать плату Arduino Uno от внешнего источника.
  • Вы также можете подать питание на некоторые компоненты, подключенные к вашей плате.

Питание платы Arduino Uno

Для питания платы Arduino Uno есть разные варианты. Первый — просто подключить плату Arduino к компьютеру с помощью USB-кабеля — обычно вы получаете его при заказе платы Arduino. Вы также можете использовать разъем питания постоянного тока для питания платы Arduino напряжением 7–12 В. Если вы используете серводвигатели для хобби, питаемые от Arduino, возможно, вы захотите использовать разъем питания постоянного тока. Мощность, поступающая от USB-кабеля, ниже. Он отлично подходит для связи между вашей платой и компьютером (или другими платами Arduino), но может оказаться недостаточным для питания некоторых реальных двигателей. Итак, у вас уже есть 2 способа питания вашей платы Arduino Uno. Теперь, если вы посмотрите на контакты питания на схеме, вы увидите контакт Vin. Вы можете использовать этот контакт для подачи на вашу плату напряжения 7–12 В. Очень удобно, когда вам нужно использовать внешний источник питания и подключить его непосредственно к плате. И, как можно догадаться, если вы используете Вин, то и землю нужно использовать правильно, подключив ее к земле внешнего источника питания. Обратите внимание, что разъем питания USB и постоянного тока уже имеет встроенное заземление, которое подключается ко всему, что вы к ним подключаете. Фактически, металлическая часть вокруг разъема USB, к которой можно прикоснуться, напрямую связана с землей!

Питание компонентов от контактов питания Arduino Uno

Как вы можете догадаться, всякий раз, когда вы подключаете внешний компонент к плате Arduino Uno, вам необходимо сначала подключить его к земле. Затем вы можете использовать несколько разных контактов для его включения. Среди них контакты питания 3,3 В и 5 В. Обратите внимание – это важно – Arduino Uno работает при напряжении 5 В. Итак, обязательно запомните это для каждого выходного контакта, который мы увидим в следующей статье. Если вы подключите компонент с напряжением 3,3 В к источнику питания 5 В, вы можете повредить компонент. Есть 2 альтернативы этому: использовать источник питания 3,3 В от Arduino (встроенный мост напряжения) или использовать 5 В с переключателем уровня напряжения. Вы можете легко подключить компонент 3,3 В к компоненту 5 В при условии, что вы преобразуете напряжение между ними, используя резисторы или непосредственно компонент сдвига уровня.

Цифровые контакты Arduino

На плате Arduino Uno вы можете найти 14 цифровых контактов. Они легко узнаваемы, от 0 до 13 на плате.

Чтение/запись на цифровых выводах

Вы будете использовать цифровые контакты для чтения данных с некоторых компонентов (датчиков) и записи данных на другие компоненты (исполнительные механизмы). Цифровой вывод может иметь только 2 состояния: LOW или HIGH. Вы можете рассматривать их как двоичные контакты. НИЗКИЙ означает, что напряжение на выводе равно 0 В. HIGH означает Vcc, что для Arduino Uno здесь составляет 5 В. Прежде чем вы сможете использовать цифровой вывод, вам необходимо настроить его режим. Цифровой вывод может находиться либо в режиме INPUT more, либо в режиме OUTPUT. В режиме INPUT вы будете использовать его для чтения данных. В режиме OUTPUT вы будете использовать его для записи данных. После того, как вы установили режим для вывода (обычно в функции setup() вашей программы Arduino с помощью pinMode()), вы сможете читать/записывать состояние вывода с помощью digitalRead()/digitalWrite(). Если вы установили вывод в режим INPUT, вы можете прочитать его состояние, которое будет либо ВЫСОКИМ, либо НИЗКИМ. При считывании любое напряжение, приложенное к выводу ниже 0,8 В, будет считаться НИЗКИМ, а любое напряжение выше 2 В — ВЫСОКИМ. Таким образом, еще раз подчеркиваю, что вам следует правильно соединить все заземления в вашей схеме, иначе Arduino Uno не сможет считать ценную информацию! Если вы не получаете надежных и стабильных данных, всегда сначала проверяйте землю, очень вероятно, что проблема исходит оттуда. Примеры использования цифровых выводов для управления компонентом см. здесь. Учебное пособие по светодиодам Arduino. О том, как использовать цифровые контакты для считывания данных с датчика, см. здесь. [Учебное пособие по кнопкам Arduino] (/arduino-push-button-tutorial/). А если вы хотите перейти на более продвинутый уровень с помощью цифровых контактов, посмотрите как ускорить работу digitalWrite().

ШИМ

Некоторые цифровые выводы можно использовать для записи ШИМ. ШИМ (широтно-импульсная модуляция) — это, по сути, способ получить определенное напряжение (например, 4,1 В) только с состояниями ВЫСОКИЙ/НИЗКИЙ (5 В/0 В). ШИМ создает импульс заданной частоты — 500 Гц для Arduino Uno. Затем параметр рабочего цикла покажет, какой процент каждого импульса находится в состоянии HIGH или LOW. Частая смена состояний HIGH/LOW дает среднее выходное напряжение. Например, при рабочем цикле 50% (50% времени ВЫСОКИЙ, 50% времени НИЗКИЙ) выходное напряжение будет 2,5 В. Конечно, это объяснение очень упрощено, но это все, что вам нужно знать, чтобы начать работу с ШИМ Arduino. Теперь вы можете использовать ШИМ только на некоторых цифровых выводах, рядом с номером которых есть знак «~». Контакты Arduino Uno, совместимые с ШИМ, — это контакты 3, 5, 6, 9, 10 и 11. Таким образом, у вас есть 6 контактов, на которых вы можете создать ШИМ, используя функцию AnalogWrite(). Это может быть весьма полезно для управления некоторыми приводами, которые требуют точной настройки напряжения, а не просто включаются или выключаются. Если мы возьмем пример светодиода, вы можете использовать функцию AnalogWrite() для изменения яркости светодиода.

Контакты прерывания

И… Есть еще одна доступная функциональность для цифровых выводов! Вы можете использовать некоторые из них в качестве контактов прерывания в вашей программе Arduino. Для Arduino Uno выбор этих контактов весьма ограничен. Только цифровые контакты 2 и 3 могут использоваться в качестве контактов прерывания. Итак, как это работает? Когда вы создаете программу Arduino, вы должны знать, что ваш код выполняется построчно, без возможности многопоточности. Допустим, вы подключаете кнопку к контакту прерывания (и к земле!). В вашей программе Arduino вы можете прикрепить определенную функцию, которая будет запускаться при каждом нажатии кнопки. Таким образом, вместо того, чтобы постоянно читать состояние кнопки, вы можете напрямую использовать поведение прерывания для запуска вашей функции. Думайте об этом как о push-уведомлении, как на вашем телефоне. Он сообщает вам, когда появляется новый контент или какое-то определенное действие. Узнайте, как использовать прерывания Arduino в вашем коде. Однако это не означает, что вы решили проблему многопоточности. Когда выполнение программы переключится на вашу функцию, вызванную прерыванием, она также остановит выполнение текущей программы и вернется к ней только после завершения функции прерывания. Если вы хотите узнать больше о многозадачности с помощью Arduino, ознакомьтесь с полным руководством по этой теме.

Аналоговые контакты Arduino

На плате Arduino Uno вы можете найти 6 аналоговых контактов. Вы найдете их рядом с контактами питания, и они легко узнаваемы, от A0 до A5.

Считайте значение с аналогового вывода

Аналоговый вывод полезен для считывания значений, которые не могут быть просто 0 или 1. Допустим, у вас есть потенциометр и вы хотите получить процент значения потенциометра. С помощью цифрового контакта вы можете знать, когда потенциометр находится в минимальном и максимальном положении, но не более того. С аналоговыми выводами у вас есть все промежуточные значения. Обратите внимание, что аналоговые функции этих контактов предназначены только для чтения. Обычно их даже называют « Аналоговые входные контакты». Через эти контакты нельзя записать аналоговое значение, не забывайте об этом! Итак, как работает аналоговый входной контакт? Сначала он получит входное напряжение и прочитает это напряжение. Допустим, на выводе указано 2,5 В. Затем АЦП (аналогово-цифровой преобразователь) преобразует это аналоговое значение в то, что ваша программа Arduino может понять, — в цифровое значение. Плата Arduino Uno имеет 10-битный АЦП. Разрешение может быть другим, если вы используете другие платы Arduino. Итак, что означают 10 бит? Просто разрешение составляет 2^10 = 1024. Таким образом, значение, которое вы получаете при чтении данных с аналогового входного контакта, находится в диапазоне от 0 до 1023. Возвращаясь к нашему примеру с 2,5 В: 2,5 В составляет 50% от 5 В (Vcc). В вашей программе Arduino вы получите значение 512. На основании этого значения вы можете легко обратить вычисления вспять и получить информацию о приложенном напряжении. Также – и поначалу это может сбить с толку – помните, что функция AnalogWrite() для ШИМ доступна только для некоторых цифровых выводов, а не для аналоговых выводов вообще.

Использование аналогового вывода в качестве цифрового вывода

Даже если вы можете читать только с аналогового вывода, вы также можете использовать его как «простой» цифровой вывод. (но обратное неверно) Если вывод может считывать любое значение от 0 до 5 В, то он сможет считывать только значения ниже 0,8 В (НИЗКИЙ) и значения выше 2 В (ВЫСОКИЙ). Чтобы использовать аналоговый вывод в качестве цифрового вывода, вам просто нужно установить режим для вывода, как вы это сделали бы для цифровых выводов в функции setup() вашей программы Arduino. Затем вы можете использовать функции digitalWrite() и digitalRead(), и они будут работать отлично.

Протоколы связи через контакты Arduino

Вот тут-то и начинается самое интересное. Протоколы связи через контакты Arduino Uno позволят вам использовать более совершенные датчики и исполнительные механизмы. Вы будете создавать более сложные и полезные приложения. Существует три основных протокола связи, которые вы можете использовать с платой Arduino Uno через контакты схемы: UART, I2C и SPI. Но… На схеме ничего не отображается! Не паникуйте, протоколы связи используют существующие контакты в цепи. Фактически, большинство контактов можно настроить на использование альтернативных функций, иногда до 4 альтернативных функций только для одного контакта. Но давайте будем здесь проще.

Контакты для UART – последовательный порт

UART — наиболее используемый протокол для Arduino — по крайней мере, на старте. Когда вы подключаете плату Arduino Uno к компьютеру и обмениваетесь данными через Библиотека последовательных интерфейсов, ну… Вы используете UART! Вы также можете найти 2 необходимых контакта для UART непосредственно на плате Arduino Uno, на контактах 0 и 1: RX и TX. R означает «прием», а T — «передача». Это двусторонняя связь. Обратите внимание, что последовательный порт, используемый для USB, такой же, как тот, который используется для контактов 0 и 1. Поэтому, если вы хотите подключить другое устройство к контактам RX/TX вашей платы, не используйте последовательный порт через USB. В некоторых других платах Arduino, таких как Mega, имеется несколько различных UART. Но для Arduino Uno у вас есть только один. Однако если вы хотите использовать больше UART, вы всегда можете сделать это с помощью Библиотека SoftwareSerial. Эта библиотека позволяет вам использовать любые другие цифровые контакты для целей UART. Хотя здесь есть большая разница: «настоящий» Serial использует аппаратный функционал платы Arduino Uno, который очень быстр и не потребляет много вычислительной мощности. SoftwareSerial — наоборот: он компенсирует аппаратное обеспечение вычислительной мощностью. Итак, начните сначала со стандартного аппаратного UART, а затем вы увидите, нужно ли вам больше последовательных портов для вашего приложения (в этом случае я рекомендую вам переключиться на Arduino Mega, чтобы получить много аппаратных UART). Чтобы подключить компонент к контактам Arduino Uno и использовать последовательную связь, вам понадобятся 4 кабеля:

  • Один между RX компонента и TX Arduino.
  • Один между TX компонента и RX Arduino.
  • Если компонент не получает внешнего питания, используйте один кабель для его питания от контактов питания Arduino.
  • И… Один для подключения земли Если вы заинтересованы в обмене данными между платой Raspberry Pi и платой Arduino через последовательный порт, ознакомьтесь с этим [Учебное пособие по последовательному интерфейсу Raspberry Pi Arduino] (/raspberry-pi-arduino-serial-communication/).

Пины для I2C

I2C — это протокол шины с архитектурой «мультиведущий/мультиведомый». Но для простоты – а большинству ваших приложений это просто необходимо – давайте поговорим только о части архитектуры с одним главным/мульти подчиненными устройствами. По сути, представьте себе шину данных, через которую проходят все данные. Начальник автобуса – хозяин. Теперь вы можете добавить к шине любой новый компонент, настроенный как ведомый. Также каждый компонент имеет свой идентификатор. Главное устройство будет отправлять данные и запросы подчиненному устройству посредством связи по шине и предоставления идентификатора подчиненного устройства. Если ведущему требуется ответ, ведомое отправит ответ обратно на шину. Как только мастер получил ответ, он может отправить следующую инструкцию/запрос. Обычно вы используете плату Arduino Uno в качестве главной и подключаете один или несколько компонентов (обычно датчиков) к шине I2C, каждый из которых имеет свой идентификатор. Что касается программного обеспечения, вы будете использовать Arduino с открытым исходным кодом. Библиотека проводов. Но к каким контактам Arduino Uno следует подключить все эти компоненты? Для I2C вы не увидите никакой индикации непосредственно на плате. Для использования шины I2C вам понадобится 4 кабеля:

  • Один для подключения контакта SCL (часы) — Еще один для вывода SDA (данные)
  • Один для включения компонентов на шине
  • И один, чтобы найти общий язык Некоторые примеры компонентов, совместимых с I2C:
  • Датчик температуры MPL3115A2
  • Гироскоп MPU6050 + датчик акселерометра
  • Датчик цвета TCS34725

Пины для SPI

SPI — еще один протокол, основанный на архитектуре «главный-подчиненный». Вы можете использовать его для подключения платы Arduino к нескольким устройствам. Обратите внимание, что скорость связи выше, чем у I2C и UART, но она не подходит для связи на средние расстояния (более нескольких сантиметров по кабелю). Что касается других протоколов связи, вы можете напрямую использовать открытый исходный код. Библиотека SPI в ваших программах Arduino. Если вы используете устройство SPI и хотите подключить его к некоторым контактам на плате Arduino, вам нужно использовать следующие контакты: Кабельная система для подключения устройств с контактами SPI немного сложнее. Вам понадобится минимум 6 кабелей:

  • вывод SCK (часы)
  • Вывод MISO (главный вход, ведомый выход)
  • Контакт MOSI (главный выход, подчиненный вход)
  • Один для каждогоCS/SS (выбор чипа/выбор ведомого). Для каждого дополнительного подчиненного устройства вам потребуется добавить еще одно соединение к выводу Arduino.
  • Один для питания компонентов
  • И один для общего интереса Некоторые примеры устройств, совместимых с SPI:
  • Магнитный датчик положения AS5047D
  • MAX31855 термопара-цифровой датчик

Начало работы с выводами Arduino Uno

Как вы видели в этом посте, у вас есть огромное количество вариантов использования выводов Arduino Uno. Если вы только начинаете работать с Arduino, попробуйте сначала использовать базовые цифровые и аналоговые функции. Затем вы можете начать двигаться дальше с прерываниями, ШИМ-выходами и т. д. И, наконец, существует бесконечное количество датчиков/исполнительных механизмов, которые вы можете подключить к плате Arduino Uno, чтобы создать свой следующий проект! Вы также можете соединить вместе несколько плат Arduino или даже Плата Raspberry Pi. Что ж, теперь, когда вы лучше разбираетесь в выводах Arduino Uno, пришло время испачкать руки! Если вы не знаете, что делать со всеми этими контактами, ознакомьтесь с различными устройствами, которые я представил в качестве примеров в этом посте. Возможно, это хороший способ начать и получить больше идей.