Справочник по распиновке Arduino UNO

Arduino Uno — одна из самых популярных плат микроконтроллеров для мейкеров, любителей и преподавателей, и на то есть веские причины. Она универсальна, удобна для начинающих и открывает двери к бесконечным электронным проектам. Но прежде чем приступить к работе с UNO, вам обязательно нужно разобраться в одной вещи — распиновке.

Это руководство проведёт вас через различные типы выводов Arduino Uno, объяснит их назначение и способы использования.

Итак, берите свой Uno и готовьтесь к увлекательному путешествию по выводам!

Примечание:

Хотя данное руководство посвящено распиновке Arduino Uno R3, важно отметить, что доступна более новая версия — Arduino Uno R4. R4 имеет ряд заметных отличий, включая более быстрый процессор и расширенные возможности.

Распиновка Arduino Uno

Arduino Uno имеет 32 вывода. Распиновка выглядит следующим образом:

Arduino UNO Pinout Reference

Давайте подробнее рассмотрим выводы Arduino и их функции.

Цифровые выводы ввода/вывода Arduino Uno

Arduino Uno имеет 14 цифровых выводов ввода/вывода с маркировкой от D0 до D13.

Эти выводы можно настроить как входы или выходы. В режиме входа они считывают цифровые сигналы (HIGH или LOW), а в режиме выхода — отправляют цифровые сигналы для управления внешними компонентами, такими как светодиоды, моторы и реле.

Arduino UNO Pinout Reference

Чтобы указать Arduino, должен ли цифровой вывод работать как вход или выход, используется специальная функция pinMode(). Например, чтобы установить цифровой вывод как вход, используется функция pinMode(pin, INPUT), а затем функция digitalRead(pin) для считывания состояния входного вывода. Для установки вывода как выхода используется функция pinMode(pin, OUTPUT), а затем digitalWrite(pin, HIGH) или digitalWrite(pin, LOW) для установки состояния HIGH или LOW.

Обратите внимание, что эти выводы работают на логическом уровне 5V, и каждый вывод может отдавать или потреблять максимум 20 мА тока.

Внутренние подтягивающие резисторы

Каждый цифровой вывод Arduino Uno имеет встроенный подтягивающий резистор. Вы можете включить этот резистор при использовании вывода в качестве входа с помощью pinMode(pinNumber, INPUT_PULLUP). Это помогает, когда к входному выводу ничего не подключено — без резистора вывод может иногда «плавать» и улавливать случайные электрические помехи, из-за чего Arduino трудно определить, находится ли он в состоянии HIGH или LOW. Внутренний подтягивающий резистор слабо подтягивает напряжение вывода к HIGH, обеспечивая стабильность.

Значение этого подтягивающего резистора не является точным, но обычно находится в диапазоне от 20 кОм до 50 кОм.

Выводы прерываний Arduino Uno

Выводы прерываний — это специальные цифровые входные выводы, которые могут запускать определённый блок кода (процедуру обработки прерывания, или ISR) при наступлении внешнего события, например, при изменении уровня напряжения (с HIGH на LOW или наоборот). Это позволяет Arduino мгновенно реагировать на события без постоянной проверки состояния вывода в основном цикле программы.

Arduino Uno имеет два специализированных аппаратных вывода прерываний:

Arduino UNO Pinout Reference

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

Функция attachInterrupt(interrupt, ISR, mode) используется для настройки выводов как внешних прерываний, где interrupt — это номер прерывания (0 для вывода 2, 1 для вывода 3), ISR — процедура обработки прерывания (функция, вызываемая при наступлении прерывания), а mode определяет условие срабатывания (RISING, FALLING или CHANGE).

Имейте в виду, что Interrupt 0 (вывод 2) имеет более высокий приоритет, чем Interrupt 1 (вывод 3). Если оба прерывания сработают одновременно, первым будет обслужено Interrupt 0.

Выводы PWM Arduino Uno

Выводы PWM на Arduino Uno — это цифровые выводы, способные имитировать аналоговый выход. Они достигают этого путём быстрого переключения вывода между состояниями HIGH и LOW, создавая прямоугольный сигнал. Отношение времени «включения» к полному периоду сигнала называется коэффициентом заполнения. Изменяя коэффициент заполнения, вы можете управлять средним напряжением, подаваемым на подключённый компонент, что позволяет регулировать яркость светодиодов, скорость моторов и даже генерировать простые звуковые сигналы.

Arduino Uno предоставляет 6 цифровых выводов с поддержкой PWM: D3, D5, D6, D9, D10 и D11. Эти выводы отмечены символом тильды (~) рядом с номером на плате.

Arduino UNO Pinout Reference

Выход PWM является 8-битным сигналом, то есть может принимать любое значение от 0 до 255. Это соответствует 256 дискретным уровням коэффициента заполнения.

Функция pinMode(pin, OUTPUT) устанавливает нужный вывод PWM как выход. Функция analogWrite(pin, value) устанавливает значение PWM на выводе. Здесь pin — номер вывода с поддержкой PWM, а value — целое число от 0 до 255.

  • analogWrite(pin, 0): устанавливает коэффициент заполнения 0% (всегда выключен).

  • analogWrite(pin, 127): устанавливает коэффициент заполнения приблизительно 50%.

  • analogWrite(pin, 255): устанавливает коэффициент заполнения 100% (всегда включён).

Частота сигнала PWM по умолчанию составляет приблизительно 490 Гц на всех выводах, за исключением выводов D5 и D6, у которых частота составляет около 980 Гц.

Выводы PWM Arduino Uno связаны с различными таймерами микроконтроллера ATmega328P:

  • D3 и D11: управляются таймером Timer 2.

  • D5 и D6: управляются таймером Timer 0.

  • D9 и D10: управляются таймером Timer 1.

Вы можете напрямую настраивать таймеры для изменения частоты и режима PWM путём конфигурирования регистров микроконтроллера ATmega328P. Однако это также влияет на функции delay() и millis(), которые зависят от Timer 0.

Выводы АЦП Arduino Uno

Аналоговые входные выводы Arduino Uno предназначены для считывания непрерывных аналоговых сигналов. Эти сигналы часто поступают от датчиков, измеряющих физические величины, такие как температура, интенсивность света или давление. Arduino Uno преобразует эти аналоговые сигналы в цифровые значения с помощью аналого-цифрового преобразователя (АЦП), позволяя обрабатывать и анализировать данные в вашем коде Arduino.

Arduino Uno имеет шесть аналоговых входных выводов с маркировкой от A0 до A5.

Arduino UNO Pinout Reference

АЦП Arduino Uno имеет разрешение 10 бит, что означает способность распознавать 1024 (2^10) дискретных аналоговых уровня. Другими словами, он преобразует входные напряжения в диапазоне от 0 до 5V (рабочее напряжение) в целые числа от 0 до 1023. Это даёт разрешение 5 вольт / 1024 единицы, или приблизительно 0,0049 вольта (4,9 мВ) на единицу.

Такой уровень точности обычно достаточен для большинства наших проектов, но для более точных измерений следует использовать внешний АЦП с более высоким разрешением.

Для считывания аналогового значения с вывода используется функция analogRead(pin). Эта функция возвращает целое число от 0 до 1023, представляющее измеренное напряжение на выводе. Например, если вывод измеряет напряжение 2,5V (половина от максимальных 5V), функция analogRead() вернёт приблизительно 512.

Имейте в виду, что аналоговые выводы (A0-A5) также можно использовать как цифровые выводы, если вам нужны дополнительные цифровые выводы ввода/вывода.

Изменение опорного напряжения

По умолчанию АЦП измеряет напряжения от 0V до 5V, но этот диапазон можно изменить с помощью вывода AREF и функции analogReference(type). Возможные значения параметра type:

  • DEFAULT: использует опорное напряжение по умолчанию 5V.

  • INTERNAL: использует внутреннее опорное напряжение 1,1V.

  • EXTERNAL: использует внешнее опорное напряжение, поданное на вывод AREF.

Выводы разъёма ICSP Arduino Uno

Arduino Uno имеет два разъёма ICSP (In-Circuit Serial Programming), каждый с шестью выводами.

Arduino UNO Pinout Reference

Эти разъёмы используются для:

  • Программирования Arduino: вы можете использовать внешний программатор (например, AVR ISP программатор или другую плату Arduino в качестве ISP) для загрузки кода на Arduino напрямую через разъём ICSP. Это особенно полезно, если загрузчик повреждён или если вы хотите записать загрузчик на новый микроконтроллер.

  • Связи с устройствами SPI: разъём предоставляет доступ к выводам SPI (Serial Peripheral Interface): MISO (Master In Slave Out), MOSI (Master Out Slave In) и SCK (Serial Clock). Эти выводы можно использовать для подключения и обмена данными с устройствами SPI, такими как модули SD-карт или внешние датчики. Важно отметить, что вывод Slave Select (SS), необходимый для управления несколькими устройствами SPI, не включён в разъём и должен управляться вручную.

Выводы I2C Arduino Uno

На Arduino Uno выводы I2C (SDA и SCL) также доступны на отдельных выводах рядом с выводом AREF. Эти выводы напрямую подключены к A4 и A5 на плате, предоставляя альтернативный и часто более удобный способ подключения устройств I2C.

Arduino UNO Pinout Reference

Имейте в виду, что линии SDA и SCL обычно требуют внешних подтягивающих резисторов (как правило, около 4,7 кОм) для обеспечения надёжной связи.

Выводы SPI Arduino Uno

Arduino Uno имеет отдельный набор выводов для связи по SPI:

Arduino UNO Pinout Reference

Вывод 11, обозначенный MOSI (Master Out Slave In), используется ведущим устройством (Arduino) для отправки данных на ведомое устройство. И наоборот, вывод 12, обозначенный MISO (Master In Slave Out), используется ведомым устройством для отправки данных обратно на Arduino. Вывод 13, обозначенный SCK (Serial Clock), передаёт тактовый сигнал, синхронизирующий обмен данными между ведущим и ведомым устройствами. Наконец, вывод 10, обычно назначаемый как SS (Slave Select), используется для выбора конкретного ведомого устройства, с которым вы хотите обмениваться данными, если подключено несколько устройств SPI.

Помимо стандартных выводов SPI, Arduino Uno также имеет разъём ICSP (In-Circuit Serial Programming), предоставляющий доступ к тем же сигналам SPI. Вы можете использовать как стандартные выводы, так и разъём ICSP для связи по SPI.

Выводы UART Arduino Uno

Arduino Uno имеет один аппаратный интерфейс UART, который подключён к цифровым выводам 0 (RX) и 1 (TX).

Arduino UNO Pinout Reference

Этот аппаратный UART также используется для загрузки скетчей и обмена данными с компьютером через USB-подключение, то есть он разделяется с конвертером USB-to-serial на плате.

Если вам нужно больше каналов UART, Arduino Uno поддерживает библиотеку SoftwareSerial, которая позволяет создавать дополнительные программные соединения UART на других цифровых выводах. Однако SoftwareSerial имеет ограничения по скорости и надёжности по сравнению с аппаратным UART.

Выводы питания Arduino Uno

Arduino Uno имеет несколько выводов питания. Эти выводы необходимы для питания самой платы и для подачи питания на подключённые компоненты и датчики.

Arduino UNO Pinout Reference

VIN: этот вывод позволяет подавать питание на плату Arduino от внешнего источника питания, такого как сетевой адаптер или батарейный блок. Это полезно для автономных проектов, когда плата не подключена к компьютеру через USB. Диапазон входного напряжения для VIN обычно составляет 7-12 вольт. Входное напряжение, подаваемое на этот вывод, стабилизируется до 5V встроенным регулятором напряжения, который затем питает микроконтроллер и другие компоненты на плате. Вывод Vin внутренне соединён с положительным контактом разъёма питания DC. Это означает, что при подаче напряжения через разъём DC оно доступно через вывод Vin.

5V: этот вывод обеспечивает стабилизированный выход 5V от встроенного регулятора напряжения. Вы можете использовать этот вывод для питания различных компонентов и датчиков, требующих стабильного напряжения 5V. Вывод 5V может обеспечить максимум 500 мА тока при питании Arduino Uno через USB-кабель. Встроенный регулятор напряжения технически рассчитан на 800 мА, но из-за проблем с рассеиванием тепла не следует превышать 400-500 мА. Если ваш проект требует больше энергии, чем может безопасно обеспечить вывод 5V, вам потребуется внешний источник питания.

3.3V: этот вывод обеспечивает стабилизированный выход 3,3V, что полезно для компонентов, работающих при пониженном напряжении. Будьте осторожны и не потребляйте слишком много тока с этого вывода, так как его максимальная токовая нагрузка составляет примерно 50 мА. Стоит отметить, что регулятор 3,3V подключён к выходу регулятора 5V. Потребление тока от регулятора 3,3V будет рассеивать тепло как в регуляторе 3,3V, так и в регуляторе 5V. Это означает, что при подключении устройства 3,3V к выводу 3,3V также ограничивается максимальный ток, доступный для модулей 5V, подключённых к выводу 5V.

GND: этот вывод представляет собой общую точку заземления для всех электрических соединений на Arduino. Обязательно подключайте выводы заземления ваших внешних компонентов к этому выводу для замыкания электрической цепи.

Выводы специальных функций Arduino Uno

Arduino UNO Pinout Reference

D13: к этому выводу подключён встроенный светодиод. Он загорается, когда вывод установлен в HIGH, и гаснет, когда установлен в LOW. Это удобный индикатор для отладки или отображения состояния проекта. Если вы используете D13 для других целей, помимо управления светодиодом, помните, что встроенный светодиод также будет реагировать на изменения состояния вывода. Это может сбивать с толку, если вы не знаете о таком подключении.

IOREF: означает Input/Output Reference Voltage (опорное напряжение ввода/вывода). Этот вывод обеспечивает опорное напряжение, указывающее рабочее напряжение платы Arduino. В случае Arduino UNO вывод IOREF выдаёт напряжение 5V. Этот вывод в основном предназначен для использования с платами расширения, называемыми шилдами. Правильно спроектированный шилд может считать напряжение на выводе IOREF для определения рабочего напряжения Arduino. Эта информация позволяет шилду регулировать свои собственные уровни напряжения или включать трансляторы уровней по мере необходимости, обеспечивая совместимость и предотвращая повреждения из-за несоответствия напряжений. Имейте в виду, что вывод IOREF не предназначен для использования в качестве источника питания для внешних компонентов. Это может привести к повреждению платы Arduino.

RESET: вывод используется для сброса микроконтроллера Arduino UNO, по сути перезапуская выполняемую на нём программу. Вывод RESET активен при LOW, что означает, что при подтяжке к LOW (подключении к земле) микроконтроллер сбрасывается. Обычно внутренний подтягивающий резистор удерживает вывод RESET в состоянии HIGH по умолчанию. Вы можете сбросить Arduino программно, подключив вывод RESET к цифровому выходному выводу и переключив его в LOW с помощью digitalWrite(RESET_PIN, LOW), а затем обратно в HIGH. Или вы можете подключить к этому выводу внешнюю кнопку или устройство. Когда кнопка нажата или устройство отправляет сигнал LOW, Arduino будет сброшен.