Справочник по распиновке Arduino Nano
Arduino Nano может быть маленьким по размеру, но не позволяйте этому вас обмануть — он вмещает практически все функциональные возможности более крупного Arduino Uno в компактный корпус, удобный для установки на макетную плату. Это делает его идеальным для проектов, где пространство ограничено, но функциональность по-прежнему важна.
Чтобы использовать весь потенциал Nano, вам необходимо разобраться в его распиновке. В этом руководстве мы рассмотрим различные типы выводов Arduino Nano, чтобы вы могли максимально эффективно использовать эту компактную плату.
Итак, берите свой Nano и готовьтесь к увлекательному путешествию по выводам!
Распиновка Arduino Nano
Arduino Nano имеет 30 выводов. Распиновка выглядит следующим образом:
Давайте подробнее рассмотрим выводы Arduino и их функции.
Цифровые выводы ввода/вывода Arduino Nano
Это выводы Arduino Nano, которые можно настроить как входы или выходы. В режиме входа они считывают цифровые сигналы (HIGH или LOW), а в режиме выхода — отправляют цифровые сигналы для управления внешними компонентами, такими как светодиоды, моторы и реле.
Arduino Nano имеет 14 цифровых выводов ввода/вывода с маркировкой от D0 до D13:
Обратите внимание, что эти выводы работают на логическом уровне 5V, и каждый вывод может отдавать или потреблять максимум 20 мА тока.
Чтобы установить цифровой вывод как вход, используется функция pinMode(pin, INPUT), а затем функция digitalRead(pin) для считывания состояния входного вывода. Для установки вывода как выхода используется функция pinMode(pin, OUTPUT), а затем digitalWrite(pin, HIGH/LOW) для установки нужного состояния.
Встроенный светодиод
Arduino Nano имеет встроенный светодиод, подключённый к выводу D13. Он загорается, когда вывод установлен в HIGH, и гаснет, когда установлен в LOW. Это удобный индикатор для отладки или отображения состояния проекта.
Если вы используете D13 для других целей, помимо управления светодиодом, помните, что встроенный светодиод также будет реагировать на изменения состояния вывода. Это может сбивать с толку, если вы не знаете о таком подключении.
Внутренние подтягивающие резисторы
Каждый цифровой вывод имеет внутренний подтягивающий резистор, который можно включить в режиме INPUT с помощью pinMode(pinNumber, INPUT_PULLUP). Этот резистор слабо подтягивает вывод к HIGH, когда к нему ничего не подключено, предотвращая «плавание» между состояниями HIGH и LOW из-за электрических помех.
Значение подтягивающего резистора гарантированно находится в диапазоне 20-50 кОм.
Выводы прерываний Arduino Nano
Выводы прерываний — это специальные цифровые входные выводы, которые могут запускать определённый блок кода (процедуру обработки прерывания, или ISR) при наступлении внешнего события, например, при изменении уровня напряжения (с HIGH на LOW или наоборот). Это позволяет Arduino мгновенно реагировать на события без постоянной проверки состояния вывода в основном цикле программы.
Arduino Nano имеет два специализированных аппаратных вывода прерываний:
Эти выводы можно настроить на срабатывание прерывания по нарастающему, спадающему или изменяющемуся фронту сигнала. Это полезно для задач, требующих немедленного внимания, например, считывание показаний датчика, который необходимо обработать быстро.
Функция attachInterrupt(interrupt, ISR, mode) используется для настройки выводов как внешних прерываний, где interrupt — это номер прерывания (0 для вывода 2, 1 для вывода 3), ISR — процедура обработки прерывания (функция, вызываемая при наступлении прерывания), а mode определяет условие срабатывания (RISING, FALLING или CHANGE).
Имейте в виду, что Interrupt 0 (вывод 2) имеет более высокий приоритет, чем Interrupt 1 (вывод 3). Если оба прерывания сработают одновременно, первым будет обслужено Interrupt 0.
Выводы PWM Arduino Nano
Выводы PWM на Arduino Nano — это цифровые выводы, способные имитировать аналоговый выход. Они достигают этого путём быстрого переключения вывода между состояниями HIGH и LOW, создавая прямоугольный сигнал. Отношение времени «включения» к полному периоду сигнала называется коэффициентом заполнения. Изменяя коэффициент заполнения, вы можете управлять средним напряжением, подаваемым на подключённый компонент, что позволяет регулировать яркость светодиодов, скорость моторов и даже генерировать простые звуковые сигналы.
Arduino Nano предоставляет 6 цифровых выводов с поддержкой PWM: D3, D5, D6, D9, D10 и D11. Эти выводы отмечены символом тильды (~) рядом с номером на плате.
Выход 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 Nano связаны с различными таймерами микроконтроллера ATmega328P:
D3 и D11: управляются таймером Timer 2.
D5 и D6: управляются таймером Timer 0.
D9 и D10: управляются таймером Timer 1.
Вы можете напрямую настраивать таймеры для изменения частоты и режима PWM путём конфигурирования регистров микроконтроллера ATmega328P. Однако это также влияет на функции delay() и millis(), которые зависят от Timer 0.
Выводы АЦП Arduino Nano
Аналоговые входные выводы Arduino Nano предназначены для считывания непрерывных аналоговых сигналов. Эти сигналы часто поступают от датчиков, измеряющих физические величины, такие как температура, интенсивность света или давление. Arduino Nano преобразует эти аналоговые сигналы в цифровые значения с помощью аналого-цифрового преобразователя (АЦП), позволяя обрабатывать и анализировать данные в вашем коде Arduino.
Arduino Nano имеет 8 аналоговых входных выводов с маркировкой от A0 до A7.
АЦП Arduino Nano имеет разрешение 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 также можно использовать как цифровые выводы ввода/вывода, если вам нужны дополнительные цифровые выводы. В цифровом режиме они обозначаются как выводы с 14 по 19. Однако выводы A6 и A7 могут использоваться только как аналоговые входы. Их нельзя использовать как цифровые выводы.
Изменение опорного напряжения
По умолчанию АЦП измеряет напряжения от 0V до 5V, но этот диапазон можно изменить с помощью вывода AREF и функции analogReference(type). Возможные значения параметра type:
DEFAULT: использует опорное напряжение по умолчанию 5V.INTERNAL: использует внутреннее опорное напряжение 1,1V.EXTERNAL: использует внешнее опорное напряжение, поданное на вывод AREF.
Выводы разъёма ICSP Arduino Nano
Разъём ICSP — это набор из 6 выводов на Arduino Nano, расположенных в конфигурации 2×3.
Разъём ICSP имеет два основных назначения:
Программирование Arduino Nano: вы можете использовать внешний программатор (например, AVR ISP программатор или другую плату Arduino в качестве ISP) для загрузки кода на Arduino Nano напрямую через разъём 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 Nano
Arduino Nano имеет два вывода, предназначенных для связи по I2C:
A4 (SDA)
A5 (SCL)
Скорость шины I2C по умолчанию на Arduino Nano составляет 100 кГц. Вы можете увеличить её до 400 кГц (или даже выше в некоторых случаях) с помощью Wire.setClock(), но учитывайте ограничения подключённых устройств.
Имейте в виду, что линии SDA и SCL обычно требуют внешних подтягивающих резисторов (как правило, около 4,7 кОм) для обеспечения надёжной связи.
Выводы SPI Arduino Nano
Arduino Nano имеет отдельный набор выводов для связи по SPI:
Вывод 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 Nano также имеет разъём ICSP, предоставляющий доступ к тем же сигналам SPI. Вы можете использовать как стандартные выводы, так и разъём ICSP для связи по SPI.
Выводы UART Arduino Nano
Arduino Nano имеет один аппаратный интерфейс UART, который подключён к цифровым выводам 0 (RX) и 1 (TX).
Этот аппаратный UART также используется для загрузки скетчей и обмена данными с компьютером через USB-подключение, то есть он разделяется с конвертером USB-to-serial на плате.
Если вам нужно больше каналов UART, Arduino Nano поддерживает библиотеку SoftwareSerial, которая позволяет создавать дополнительные программные соединения UART на других цифровых выводах. Однако SoftwareSerial имеет ограничения по скорости и надёжности по сравнению с аппаратным UART.
Выводы питания Arduino Nano
Arduino Nano имеет несколько выводов питания. Эти выводы необходимы для питания самой платы и для подачи питания на подключённые компоненты и датчики.
VIN: этот вывод позволяет подавать питание на плату Arduino от внешнего источника питания, такого как сетевой адаптер или батарейный блок. Это полезно для автономных проектов, когда плата не подключена к компьютеру через USB. Диапазон входного напряжения для VIN обычно составляет 7-12 вольт. Входное напряжение, подаваемое на этот вывод, стабилизируется до 5V встроенным регулятором напряжения, который затем питает микроконтроллер и другие компоненты на плате.
5V: этот вывод обеспечивает стабилизированный выход 5V от встроенного регулятора напряжения. Вы можете использовать этот вывод для питания различных компонентов и датчиков, требующих стабильного напряжения 5V. Вывод 5V может обеспечить максимум 500 мА тока при питании Arduino Nano через USB-кабель. Встроенный регулятор напряжения технически рассчитан на 800 мА, но из-за проблем с рассеиванием тепла не следует превышать 400-500 мА. Если ваш проект требует больше энергии, чем может безопасно обеспечить вывод 5V, вам потребуется внешний источник питания.
3.3V: этот вывод обеспечивает стабилизированный выход 3,3V, что полезно для компонентов, работающих при пониженном напряжении. Будьте осторожны и не потребляйте слишком много тока с этого вывода, так как его максимальная токовая нагрузка составляет примерно 50 мА.
GND: этот вывод представляет собой общую точку заземления для всех электрических соединений на Arduino. Обязательно подключайте выводы заземления ваших внешних компонентов к этому выводу для замыкания электрической цепи.
Вывод сброса Arduino Nano
Вывод сброса используется для сброса микроконтроллера Arduino Nano, по сути перезапуская выполняемую на нём программу.
Вывод RESET активен при LOW, что означает, что при подтяжке к LOW (подключении к земле) микроконтроллер сбрасывается. Обычно внутренний подтягивающий резистор удерживает вывод RESET в состоянии HIGH по умолчанию.
Вы можете сбросить Arduino программно, подключив вывод RESET к цифровому выходному выводу и переключив его в LOW с помощью digitalWrite(RESET_PIN, LOW), а затем обратно в HIGH. Или вы можете подключить к этому выводу внешнюю кнопку или устройство. Когда кнопка нажата или устройство отправляет сигнал LOW, Arduino будет сброшен.