Компоненты · 17 мин чтения

Распиновка Arduino Nano: схема пинов, A6/A7, питание и Old Bootloader

Распиновка Arduino Nano в одном руководстве: D0–D13, A0–A7 (A6/A7 только аналоговые), пины PWM, VIN/5V/3V3, драйвер CH340, Old Bootloader и таблица соответствия пинов Uno и Nano.

Распиновка Arduino Nano — это 30 пинов, выстроенных вдоль двух длинных краёв платы размером 45 × 18 мм: 14 цифровых входов/выходов (D0–D13), 6 из которых умеют выдавать PWM (~3, 5, 6, 9, 10, 11), 8 аналоговых входов (A0–A7), а также пины питания и управления: VIN, 5V, 3V3, AREF, два GND и два RST. Поскольку в Nano стоит тот же процессор ATmega328P, что и в Arduino Uno, номера и функции пинов тоже совпадают: скетч, написанный для Uno, работает без изменений — нужно лишь выбрать Nano в меню плат.

И всё же несколько важных деталей отличают Nano от Uno, и именно на них спотыкаются новички: A6 и A7 только аналоговые, гнезда питания нет, пин 3V3 даёт очень маленький ток, на клонах за USB отвечает микросхема CH340, а для загрузки кода часто приходится выбирать ATmega328P (Old Bootloader). В этом руководстве ты познакомишься с каждым пином, узнаешь, как правильно разместить Nano на макетной плате, увидишь таблицу соответствия пинов Uno и Nano и выяснишь, чем Nano Every и Nano ESP32 отличаются от классической Nano.

Плата Arduino Nano и её пины
Оригинальная Arduino Nano: на одном конце разъём mini USB, на другом — разъём ICSP 2×3, посередине — кнопка сброса. Пины D13, 3V3 и AREF находятся со стороны USB, а VIN и TX1 — на противоположном конце.

Что такое Arduino Nano и чем она отличается от Uno?

Arduino Nano вмещает все основные возможности Uno в плату размером 45 × 18 мм и весом около 7 граммов. Её пины направлены вниз, поэтому она вставляется прямо в макетную плату: перемычек нужно меньше, а когда схема готова, её легко перенести в корпус или на постоянную плату. Внутри стоит тот же ATmega328P на 16 MHz, что и на Uno, логический уровень — 5 V, и те же библиотеки работают без изменений. На оригинальной Nano роль USB-UART-преобразователя выполняет микросхема FT232RL; почти у всех недорогих клонов на рынке вместо неё на обратной стороне платы стоит CH340G или CH340C. Для роботов-машинок, носимых устройств, пультов и любой схемы, которая должна поместиться в корпус, Nano удобнее, чем Uno.

ХарактеристикаArduino Nano (V3)
МикроконтроллерATmega328P, 8 бит, 16 MHz (корпус TQFP-32)
Логическое (рабочее) напряжение5 V
Входное напряжение VINРекомендуется 7–12 V
Цифровые входы/выходы14 пинов (D0–D13); 20 вместе с A0–A5
Выход PWM6 пинов: D3, D5, D6, D9, D10, D11
Аналоговые входы8 пинов (A0–A7), 10 бит (0–1023)
Ток на пинРекомендуется 20 mA, абсолютный максимум 40 mA
Память32 КБ флеш-памяти (в IDE доступно 30 720 байт), 2 КБ SRAM, 1 КБ EEPROM
USBMini-B; FT232RL (оригинал) или CH340 (клон)
Размер и вес45 × 18 мм, около 7 г

Схема пинов Arduino Nano: какой пин где?

30 пинов Nano расположены в два ряда по 15 друг напротив друга, расстояние между рядами — 15,24 мм (0,6 дюйма). Положи плату перед собой разъёмом mini USB к себе, и прямо у разъёма увидишь два пина друг напротив друга: D12 и D13. В ряду с D13 находятся 3V3, AREF, A0–A7 и пины питания; в ряду с D12 — цифровые пины от D11 до D2, затем GND, RST, RX0 (D0) и TX1 (D1). На дальнем от USB конце рядов друг напротив друга стоят VIN и TX1, и там же расположен разъём ICSP 2×3. Вокруг кнопки сброса посередине находятся светодиод питания (POW или ON), светодиод L, подключённый к D13, и светодиоды TX и RX, которые мигают во время загрузки.

Позиция (от USB)Ряд аналоговых пинов и питанияЦифровой рядПримечание
1D13 (SCK, светодиод L)D12 (MISO)Сразу у разъёма USB
23V3~D11 (MOSI)3V3 даёт очень маленький ток
3AREF~D10 (SS)-
4A0~D9-
5A1D8-
6A2D7-
7A3~D6-
8A4 (SDA)~D5Линия данных I2C
9A5 (SCL)D4Линия тактирования I2C
10A6~D3 (INT1)A6 только аналоговый
11A7D2 (INT0)A7 только аналоговый
125VGND5V и GND напротив друг друга
13RSTRSTОба пина — одна и та же линия сброса
14GNDD0 (RX0)D0 подключён к USB-UART-преобразователю
15VIND1 (TX1)На этом конце находится разъём ICSP
В инструкциях и на схемах пины Nano иногда нумеруют от 1 до 30 по физическому порядку: пин 1 — это TX1 (D1), а пин 30 — VIN. В коде эти номера не используются. В коде всегда указывается название, напечатанное на плате: для D7 пишешь 7, для A3 — A3. Если надписи на плате трудно разобрать, держи открытой на телефоне утилиту распиновки.

Цифровые пины (D0–D13), PWM и особые функции

Каждый цифровой пин настраивается как вход или выход с помощью pinMode(); в режиме выхода HIGH даёт около 5 V, а LOW — 0 V. Чтобы вход не «висел в воздухе», можно включить встроенный резистор микросхемы на 20–50 kΩ через INPUT_PULLUP. Безопасный ток на пин — 20 mA; красный светодиод с резистором 220 Ω потребляет около 13 mA, а подходящий резистор можно подобрать в калькуляторе резистора для светодиода. У некоторых пинов есть дополнительные функции, и если знать их заранее, конфликтов не будет, когда проект разрастётся:

ПинДополнительная функцияНа что обратить внимание
D0 (RX), D1 (TX)Аппаратный последовательный порт (Serial)Подключены к USB-UART-преобразователю через резисторы 1 kΩ; во время загрузки оставляй их свободными
D2, D3Внешние прерывания INT0, INT1attachInterrupt() работает только на этих двух пинах
~D3, ~D11PWM, Timer2 (около 490 Hz)PWM на этих пинах перестаёт работать, пока звучит tone()
~D5, ~D6PWM, Timer0 (около 980 Hz)Тот же таймер, что у millis() и delay()
~D9, ~D10PWM, Timer1 (около 490 Hz)Библиотека Servo отключает PWM на этих двух пинах
D10–D13SPI: SS, MOSI, MISO, SCKПри работе с SPI пин D10 должен оставаться выходом
D13Встроенный светодиод LСветодиод и его резистор подключены прямо к пину

Небольшая, но важная деталь, отличающая Nano от Uno, касается пина D13. На Uno R3 светодиод L управляется через операционный усилитель, а на Nano светодиод и его резистор подключены прямо к пину. Если использовать D13 как вход для кнопки с INPUT_PULLUP, светодиод тянет пин вниз, и даже при ненажатой кнопке можно прочитать LOW; оставь этот пин для выходов или SPI. Как работает PWM и что означают значения analogWrite(), рассказано в статье Что такое PWM?, а о прерываниях — в статье Прерывания в Arduino.

Аналоговые пины A0–A7: чем отличаются A6 и A7?

Восемь аналоговых входов Nano измеряют напряжение от 0 до 5 V с разрешением 10 бит: analogRead() возвращает число от 0 до 1023, а один шаг равен примерно 4,9 mV. При необходимости A0–A5 работают и как обычные цифровые пины (A0 = 14 … A5 = 19), а A4 и A5 одновременно служат линиями SDA и SCL шины I2C. A6 и A7, которых нет у Uno, — это два дополнительных канала АЦП, которые есть у ATmega328P в корпусе для поверхностного монтажа (TQFP). Эти два канала подключены только к аналого-цифровому преобразователю: за ними нет ни регистра порта, ни выходного драйвера, ни подтягивающего резистора. Поэтому pinMode(), digitalRead(), digitalWrite() и INPUT_PULLUP на этих двух пинах не работают.

Компилятор не будет ругаться на digitalRead(A6), но результат будет бессмысленным, а кнопка будет казаться совсем неработающей. Используй A6 и A7 для аналоговых источников: потенциометра, фоторезистора (LDR) или датчика влажности почвы. Если нужно подключить кнопку, добавь внешний подтягивающий резистор 10 kΩ от пина к 5V и читай его через analogRead(): считай кнопку нажатой, когда значение опускается ниже 300.

То, что A6 и A7 только аналоговые, может показаться недостатком, но это можно использовать с умом. Если подключить несколько кнопок к одному аналоговому пину через резисторы разного номинала, каждая кнопка будет давать своё напряжение; так ты читаешь четыре кнопки одним пином, а цифровые пины остаются свободными для моторов и дисплеев. В схеме подключи A6 к 5V через резистор 10 kΩ; первую кнопку подключи прямо между A6 и GND, а остальные три — к GND через резисторы 2,2 kΩ, 4,7 kΩ и 10 kΩ соответственно.

C++ (Arduino IDE)
1// A6'da 4 buton: 10 kΩ pull-up + farklı seri dirençler / 4 buttons on A6: 10 kΩ pull-up + different series resistors
2const byte LADDER_PIN = A6;    // yalnız analog pin / analog-only pin
3
4byte readButton() {
5  int v = analogRead(LADDER_PIN);
6  if (v < 92)  return 1;       // 0 Ω      -> yaklaşık 0 / about 0
7  if (v < 256) return 2;       // 2,2 kΩ   -> yaklaşık 184 / about 184
8  if (v < 419) return 3;       // 4,7 kΩ   -> yaklaşık 327 / about 327
9  if (v < 767) return 4;       // 10 kΩ    -> yaklaşık 512 / about 512
10  return 0;                    // basılı değil -> 1023 / not pressed -> 1023
11}
12
13void setup() {
14  Serial.begin(9600);
15}
16
17void loop() {
18  static byte lastButton = 0;
19  byte b = readButton();
20  if (b != lastButton) {
21    delay(20);                 // kontak sıçramasını bekle / wait out contact bounce
22    b = readButton();          // değeri doğrula / confirm the value
23    if (b != lastButton) {
24      lastButton = b;
25      if (b != 0) {
26        Serial.print(F("Buton / Button: "));
27        Serial.println(b);
28      }
29    }
30  }
31}
КнопкаПоследовательный резистор к GNDОжидаемое значение analogReadДиапазон, принимаемый в коде
Кнопка 10 Ω (напрямую)00–91
Кнопка 22,2 kΩОколо 18492–255
Кнопка 34,7 kΩОколо 327256–418
Кнопка 410 kΩОколо 512419–766
Нет-1023767–1023

Значения получаются по формуле analogRead = 1023 × R / (10 kΩ + R), а каждый порог стоит ровно посередине между двумя соседними значениями. Поскольку подтягивающий резистор и АЦП питаются от одной и той же линии 5 V, показания не меняются, даже если питание просядет до 4,7 V; это называется ратиометрическим измерением. Если нажать две кнопки одновременно, их резисторы окажутся включены параллельно и показание упадёт: код увидит кнопку с меньшим номером, а одновременное нажатие 3 и 4 и вовсе читается как 2. Поэтому резисторная лестница подходит для меню, где за раз нажимается только одна клавиша. Проверить расчёт делителя можно в калькуляторе делителя напряжения, а подробнее об аналоговых измерениях читай в статье об АЦП.

Пины питания: VIN, 5V, 3V3 и GND

ПинЧто делаетОграничения и предостережения
VINПитает плату напряжением 7–12 V; стабилизатор понижает его до 5 VAMS1117 на клонах выдерживает не более 15 V и быстро нагревается при 12 V
5VЛиния 5 V платы: как выход питает датчики, как вход принимает стабилизированные 5 VОт USB около 4,7 V; никогда не подавай на него снаружи больше 5 V
3V3Выход 3,3 VНа оригинале берётся от FT232RL, на клонах — от CH340; ток очень ограничен
GND (2 пина)Общая земляСюда нужно подключать GND каждого внешнего источника питания
RST (2 пина)Перезапускает плату при подаче LOWДля внешней кнопки сброса; оба пина — одна линия
AREFВход внешнего опорного напряжения для аналоговых измеренийПеред использованием вызови analogReference(EXTERNAL)

Питать Nano можно тремя способами. При питании по USB 5 V приходит от компьютера через диод Шоттки; на диоде падает около 0,3 V, поэтому мультиметр на пине 5V обычно показывает 4,6–4,8 V, а диод MBR0520 на оригинальной плате рассчитан максимум на 500 mA. Если подать 7–12 V на пин VIN, стабилизатор на обратной стороне платы (LM1117 на оригинале, обычно AMS1117 на клонах) понизит его до 5 V. Избыточное напряжение стабилизатор превращает в тепло: рассеиваемая мощность равна (VIN − 5 V) × ток, поэтому при потреблении 150 mA от входа 12 V маленький стабилизатор рассеивает около 1 W и раскаляется так, что не дотронуться. Поэтому для VIN идеально 7–9 V. Третий способ — подать стабилизированные 5 V снаружи на пин 5V; тогда стабилизатор не участвует, а диод со стороны USB не даёт току течь обратно в компьютер. Если работаешь от источника 12 V, гораздо «холоднее» получить 5 V понижающим преобразователем LM2596 и подать их на пин 5V; все варианты питания разобраны в статье Как питать Arduino.

Пин 3V3 — тот, который у Nano чаще всего понимают неправильно. На Uno этот пин питается от отдельного стабилизатора, а у классической Nano отдельного стабилизатора на 3,3 V нет. На оригинальной Nano 3,3 V берётся от маленького стабилизатора внутри микросхемы FT232RL (максимум 50 mA), и, согласно старой документации Arduino, этот выход недоступен, если плата питается не по USB. На большинстве клонов пин подключён к собственному встроенному стабилизатору CH340 и безопасен только для нагрузки в несколько mA. Поэтому не питай от этого пина модули на 3,3 V, такие как nRF24L01, ESP-01 или RC522; используй отдельный стабилизатор AMS1117-3.3, запитанный от пина 5V. А при подключении выхода Nano на 5 V к входу модуля на 3,3 V ставь между ними преобразователь уровней или делитель напряжения.

Подключение батарейки-«кроны» на 9 V или адаптера на 12 V к пину 5V мгновенно убивает Nano: этот пин — выход стабилизатора, а ATmega328P выдерживает не более 6 V. Батарейки и адаптеры всегда подключай к пину VIN. Следи и за полярностью: у большинства Nano на VIN нет защиты от переполюсовки.

То, что пин 5V от USB держится около 4,7 V, влияет и на аналоговые измерения: analogRead() использует напряжение питания как верхнюю границу, поэтому если подставить в расчёт 5,0 V, результат будет ошибаться на 4–6 процентов. Реальное напряжение питания можно вычислить, измерив внутреннее фиксированное опорное напряжение ATmega328P около 1,1 V. Первый тестовый скетч ниже делает именно это: переводит все восемь аналоговых входов в вольты по реальному напряжению питания и мигает светодиодом L на D13:

C++ (Arduino IDE)
1// Arduino Nano: A0-A7'yi ve gerçek besleme gerilimini oku / read A0-A7 and the real supply voltage
2const byte ANALOG_PINS[8] = {A0, A1, A2, A3, A4, A5, A6, A7};
3
4long readVccMillivolts() {
5  // Referans AVcc, ölçülen kanal dahili 1,1 V / reference AVcc, measured channel internal 1.1 V
6  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
7  delay(2);                                // referansın oturmasını bekle / let the reference settle
8  ADCSRA |= _BV(ADSC);                     // dönüşümü başlat / start the conversion
9  while (bit_is_set(ADCSRA, ADSC)) {}      // bitmesini bekle / wait until it finishes
10  unsigned int raw = ADC;                  // 10 bit sonuç / 10-bit result
11  return 1125300L / raw;                   // 1,1 V x 1023 x 1000 / 1.1 V x 1023 x 1000
12}
13
14void setup() {
15  Serial.begin(9600);
16  pinMode(LED_BUILTIN, OUTPUT);            // D13'teki L LED'i / L LED on D13
17}
18
19void loop() {
20  long vcc = readVccMillivolts();
21  analogRead(A0);                          // kanal değişti, ilk okumayı at / channel changed, discard the first reading
22  Serial.print(F("Vcc: "));
23  Serial.print(vcc);
24  Serial.print(F(" mV |"));
25  for (byte i = 0; i < 8; i++) {
26    int raw = analogRead(ANALOG_PINS[i]);  // A6 ve A7 de okunur / A6 and A7 are read too
27    Serial.print(F(" A"));
28    Serial.print(i);
29    Serial.print(F("="));
30    Serial.print(raw * (vcc / 1000.0) / 1023.0, 2);   // gerçek Vcc ile volta çevir / convert to volts using the real Vcc
31  }
32  Serial.println();
33  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));   // L LED'ini çevir / toggle the L LED
34  delay(1000);
35}

После загрузки открой монитор порта на скорости 9600 бод. Значение Vcc должно быть около 4600–4800 mV от USB и около 5000 mV при питании через VIN. Неподключённые аналоговые пины показывают случайные значения; если подключить потенциометр к A0 и покрутить его, значение будет плавно меняться от 0 до Vcc. Внутреннее опорное напряжение может отличаться на ±10% от микросхемы к микросхеме; для большей точности измерь пин 5V мультиметром и умножь константу 1125300 в коде на отношение измеренное мультиметром значение / значение, которое показывает код. Поскольку этот скетч напрямую использует регистры ATmega328P, на Nano Every и Nano ESP32 он не заработает.

Mini USB, CH340 и установка драйвера

У классической Nano разъём Mini-B USB; кабели Micro-USB или USB-C от телефонов к нему не подойдут. У некоторых новых клонов стоят разъёмы Micro-USB или USB-C, но у большинства по-прежнему mini USB. Самая частая причина, по которой плата вообще не появляется в списке портов, — кабель только для зарядки, без проводов данных: светодиод питания горит, но компьютер плату не видит. Если с кабелем всё в порядке, переверни плату и посмотри на микросхему рядом с разъёмом USB. Если на ней написано FT232RL, у тебя оригинальная Nano, и её драйвер обычно уже есть в операционной системе; если CH340G или CH340C — у тебя клон.

Windows 10 и 11 часто устанавливают драйвер CH340 автоматически через Центр обновления Windows, и плата появляется в Диспетчере устройств под именем вроде USB-SERIAL CH340 (COM3). Если в разделе «Другие устройства» видишь USB2.0-Serial с жёлтым восклицательным знаком, установи драйвер CH341SER от производителя микросхемы, компании WCH, затем отключи плату и подключи снова. В актуальных версиях macOS драйвер уже есть; порт отображается как /dev/cu.usbserial-…, а установка старых драйверов поверх может вызвать конфликты. В Linux драйвер встроен в ядро; если в Ubuntu 22.04 или новее порт исчезает сразу после подключения платы, значит, пакет экранного диктора brltty перехватывает CH340, и если он тебе не нужен, его можно удалить командой sudo apt remove brltty. Все проблемы с портами и драйверами разобраны в статье Arduino не загружает код, а различия USB-UART-микросхем — в статье Преобразователи USB-TTL.

Загрузка кода: ATmega328P или Old Bootloader?

  1. В Arduino IDE выбери Инструменты › Плата › Arduino AVR Boards › Arduino Nano (Tools › Board).
  2. Подключи плату и выбери появившийся порт в Инструменты › Порт (Tools › Port), например COM3 в Windows или /dev/cu.usbserial-… в macOS.
  3. В Инструменты › Процессор (Tools › Processor) сначала попробуй загрузить пример Blink с вариантом ATmega328P.
  4. Если в выводе десять попыток подряд повторяется programmer is not responding (программатор не отвечает) или not in sync (нет синхронизации), выбери в пункте «Процессор» вариант ATmega328P (Old Bootloader) и загрузи снова.
  5. Если всё равно не получается, попробуй другой порт USB, убери все провода с D0 и D1 и проверь, что светодиод L быстро мигает при нажатии кнопки сброса.
  6. Запиши, какой вариант сработал: другим Nano от того же продавца, скорее всего, понадобится та же настройка.

Причина этой путаницы — изменение 2018 года. В Arduino заменили старый загрузчик Nano размером 2 КБ (ATmegaBOOT) на 512-байтный Optiboot, который используется на Uno. Optiboot принимает код на скорости 115200 бод, а старый загрузчик ждёт 57600 бод; когда скорости не совпадают, плата будто совсем не отвечает. Поскольку производители клонов ещё годами продолжали выпускать платы со старым загрузчиком, IDE предлагает оба варианта, и неверный выбор плате ничем не вредит. При желании можно использовать вторую Arduino как ArduinoISP и записать в Nano новый загрузчик: загрузка станет быстрее, а заодно исчезнет бесконечный цикл перезагрузок, в который старый загрузчик попадает после сброса сторожевым таймером.

Вариант процессораЗагрузчикСкорость загрузкиМесто для кода
ATmega328POptiboot (с 2018 года)115200 бод30 720 байт
ATmega328P (Old Bootloader)ATmegaBOOT (старый)57600 бод30 720 байт
ATmega168ATmegaBOOT (старый)19200 бод14 336 байт
Для Nano в выводе компиляции написано Maximum is 30720 bytes (максимум 30 720 байт); если выбрана Uno, тот же скетч сравнивается с пределом 32 256 байт. IDE резервирует на Nano 2 КБ ради совместимости со старыми платами, даже если установлен новый загрузчик. Если скетч приближается к этому пределу, убери неиспользуемые библиотеки и лишние строки Serial.print(), упрости большие таблицы или перейди на Nano Every с 48 КБ флеш-памяти.

Размещение на макетной плате и пайка

Макетная плата и её центральная канавка
Канавка посередине макетной платы разделяет две её половины; когда Nano стоит над этой канавкой, каждый её пин попадает в свою полоску.

Вставляя Nano в макетную плату, расположи её так, чтобы два ряда пинов оказались по разные стороны центральной канавки. Тогда каждый пин попадёт в свою полоску, и провода к нему можно подключать через свободные отверстия этой полоски. Поскольку плата закрывает канавку и отверстия между пинами, рядом с каждым пином остаётся лишь несколько отверстий; на распространённых макетных платах на 830 точек, если поставить плату по центру канавки, с одной стороны останется 2 свободных отверстия, а с другой — 3. Если развернуть разъём USB к короткому краю макетной платы, кабель будет удобно подключать. Затем соедини пины 5V и GND Nano с красной и синей шинами питания макетной платы, чтобы питать от них датчики. Чтобы освежить в памяти, как макетная плата устроена внутри, загляни в статью Что такое макетная плата?.

  • Пайка гребёнок: на клонах, которые поставляются с отдельными пинами, сначала вставь штыревые гребёнки в макетную плату, положи сверху Nano и паяй прямо так; макетная плата держит гребёнки ровно и точно на расстоянии 0,6 дюйма друг от друга. Технику пайки найдёшь в статье Как паять.
  • Извлечение: если поднимать плату за один край, пины гнутся; поднимай оба края понемногу или подсунь снизу плоскую отвёртку и вытащи плату ровно.
  • Плохой контакт: на старых или дешёвых макетных платах пружинные контакты изнашиваются; Nano время от времени перезагружается или какой-нибудь датчик иногда пропадает. Попробуй переставить плату в другую часть макетной платы.
  • Плата расширения для Nano: в постоянном проекте шилд ввода-вывода для Nano (Nano I/O shield) с винтовыми клеммами или разъёмами на 3 пина, которые дают для каждого пина сигнал, 5V и GND, сильно уменьшает путаницу проводов.
  • Мини-макетная плата: у маленьких макетных плат на 170 точек нет шин питания; выведи 5V и GND на отдельные полоски и пометь их цветом проводов.
Если паяешь Nano на монтажную плату с полосками (stripboard), следи, чтобы противоположные пины не оказались на одной медной полоске. Если полоски между двумя рядами пинов не разрезаны, 5V и GND на позиции 12, а также VIN и TX1 на позиции 15 замыкаются между собой, и в момент подключения USB под ударом оказываются и плата, и порт компьютера. Разрежь полоски между рядами сверлом; подробности — в статье о постоянной схеме.

Таблица соответствия пинов Arduino Uno и Nano

ФункцияArduino Uno R3Arduino NanoПримечание
Цифровые входы/выходыD0–D13D0–D13Те же номера и функции
PWM~3, 5, 6, 9, 10, 11~3, 5, 6, 9, 10, 11Те же частоты и таймеры
Аналоговый входA0–A5A0–A7A6 и A7 есть только у Nano, и они только аналоговые
I2C SDA / SCLA4 / A5 (копия рядом с AREF)A4 / A5У Nano нет отдельных пинов SDA/SCL
SPI SS / MOSI / MISO / SCK10 / 11 / 12 / 1310 / 11 / 12 / 13У обеих они есть и на разъёме ICSP
Внешние прерыванияD2, D3D2, D3Одинаково
Встроенный светодиодD13 (через буфер на ОУ)D13 (подключён прямо к пину)На Nano осторожнее с D13 в роли входа
Вход питанияГнездо DC и Vin, 7–12 VТолько пин VIN, 7–12 VУ Nano гнезда нет
USBUSB-B; ATmega16U2 или CH340Mini-B; FT232RL или CH340Разные кабели
Выход 3,3 VОтдельный стабилизатор, 50 mAОт USB-микросхемы, очень ограниченНа Nano не питай от него модули
IOREFЕстьНетДля совместимости с шилдами
Место для кода32 256 байт30 720 байтIDE резервирует на Nano 2 КБ
Установка шилдовНапрямуюЧерез адаптер или плату расширения-

Как видно из таблицы, чтобы перенести схему с Uno на Nano, достаточно подключить провода к пинам с теми же номерами: сервопривод с D9 на Uno идёт на D9 на Nano, а I2C-дисплей на A4/A5 по-прежнему подключается к A4/A5. Единственное изменение в коде — выбрать Arduino Nano в Инструменты › Плата. А вот шилды, которые вставляются прямо в Uno, на Nano не встанут; для этого есть платы-адаптеры, переводящие Nano на расположение пинов Uno. Подробную роль каждого пина Uno найдёшь в статье Распиновка Arduino Uno, а помощь в выборе платы — в статье Какую Arduino купить?.

Nano Every и Nano ESP32: чем они отличаются от классической Nano

ХарактеристикаКлассическая Nano (V3)Nano EveryNano ESP32
ПроцессорATmega328P, 8 бит, 16 MHzATmega4809, 8 бит, 16 MHz в IDE (до 20 MHz)ESP32-S3, двухъядерный, 32 бита, 240 MHz
Флеш / SRAM32 КБ / 2 КБ48 КБ / 6 КБ16 МБ / 512 КБ (+8 МБ PSRAM)
Логическое напряжение5 V5 V3,3 V (5 V недопустимо)
USBMini-BMicro-BUSB-C
Диапазон VINРекомендуется 7–12 V7–21 V6–21 V
Пины PWMD3, D5, D6, D9, D10, D11D3, D5, D6, D9, D10 (на D11 нет)Почти все цифровые пины
A6 / A7Только аналоговыеАналоговые и цифровыеАналоговые и цифровые
Внешние прерыванияТолько D2, D3Все цифровые пиныВсе пины
Последовательная линия D0 / D1Общая с USB (Serial)Отдельно от USB (Serial1)Отдельно от USB (Serial0)
Беспроводная связьНетНетWi-Fi и Bluetooth LE
Пакет плат в IDEArduino AVR BoardsArduino megaAVR BoardsArduino ESP32 Boards

Nano Every — более мощная версия классической Nano того же размера и с тем же расположением пинов. Внутри у неё ATmega4809, она работает от 5 V и предлагает 48 КБ флеш-памяти и 6 КБ SRAM, так что проектам с OLED и светодиодными лентами, которым тесно в ОЗУ классической Nano, становится свободнее. На стороне USB мостом служит микросхема SAMD11, а код загружается через интерфейс UPDI, поэтому возни с Old Bootloader нет. Чтобы работать с платой, установи пакет Arduino megaAVR Boards из «Менеджера плат» (Boards Manager). Отличия, на которые стоит обратить внимание: PWM есть только на D3, D5, D6, D9 и D10 (на D11 PWM нет), A6 и A7 работают и как цифровые пины, любой цифровой пин можно использовать как внешнее прерывание, а D0 и D1 — это порт Serial1, независимый от USB. Настройка Инструменты › Registers emulation › ATMEGA328 эмулирует регистры портов вроде PORTB, но старый код, который пишет напрямую в регистры таймеров или АЦП, всё равно не заработает. Скетч ниже показывает сразу два отличия Every: он общается с модулем на D0/D1, пока открыт монитор порта, и использует A7 как вход кнопки со встроенной подтяжкой.

C++ (Arduino IDE)
1// Nano Every: Serial = USB, Serial1 = D0 (RX) ve D1 (TX) / Serial = USB, Serial1 = D0 (RX) and D1 (TX)
2const byte BUTTON_PIN = A7;            // Every'de A7 dijital de çalışır / A7 also works as digital on the Every
3
4bool lastState = HIGH;
5
6void setup() {
7  Serial.begin(9600);                  // Seri Monitör / Serial Monitor
8  Serial1.begin(9600);                 // D0/D1'deki modül, ör. HC-05 / module on D0/D1, e.g. HC-05
9  pinMode(BUTTON_PIN, INPUT_PULLUP);   // klasik Nano'nun A7'sinde çalışmaz / does not work on the classic Nano's A7
10}
11
12void loop() {
13  if (Serial1.available()) {
14    Serial.write(Serial1.read());      // modülden bilgisayara / module to computer
15  }
16  if (Serial.available()) {
17    Serial1.write(Serial.read());      // bilgisayardan modüle / computer to module
18  }
19  bool state = digitalRead(BUTTON_PIN);
20  if (state != lastState) {            // durum değişince bildir / report when the state changes
21    lastState = state;
22    Serial1.println(state == LOW ? "Buton basildi / Button pressed" : "Buton birakildi / Button released");
23    delay(20);                         // kontak sıçraması / contact bounce
24  }
25}

Nano ESP32 же — совсем другой мир в том же размере платы: процессор ESP32-S3 в модуле u-blox NORA-W106 работает на 240 MHz и даёт Wi-Fi и Bluetooth LE. Главное отличие — напряжение: все пины работают на 3,3 V и не выдерживают 5 V, поэтому датчик с выходом 5 V, который к классической Nano можно подключить напрямую, способен повредить Nano ESP32. Там, где у классической Nano пин 5V, находится пин VBUS, который даёт 5 V только при питании платы по USB; при питании через VIN этот пин мёртв. Вместо AREF и пина RST на аналоговой стороне находятся BOOT0 и BOOT1. Плата программируется через пакет Arduino ESP32 Boards, а в меню Инструменты › Pin Numbering есть два варианта: при настройке по умолчанию By Arduino pin действуют названия D и A, напечатанные на плате, а в режиме By GPIO number номера — это номера GPIO самой ESP32. Например, D2 на самом деле GPIO5; в режиме GPIO запись pinMode(2, OUTPUT) настроит вместо него пин A1. Если всегда писать пины по именам, вроде D2 и A0, код будет правильно работать в обоих режимах.

C++ (Arduino IDE)
1// Nano ESP32: Araçlar > Pin Numbering > By Arduino pin (default)
2// Nano ESP32: Tools > Pin Numbering > By Arduino pin (default)
3bool ledOn = false;
4
5void setup() {
6  Serial.begin(115200);                // USB-C üzerinden / over USB-C
7  pinMode(LED_BUILTIN, OUTPUT);        // D13 = GPIO48
8  pinMode(LED_RED, OUTPUT);
9  pinMode(LED_GREEN, OUTPUT);
10  pinMode(LED_BLUE, OUTPUT);
11  digitalWrite(LED_RED, HIGH);         // RGB LED ters mantık: HIGH = sönük / active low: HIGH = off
12  digitalWrite(LED_GREEN, HIGH);
13  digitalWrite(LED_BLUE, HIGH);
14  analogReadResolution(12);            // 0-4095 arası / range 0-4095
15}
16
17void loop() {
18  int raw = analogRead(A0);            // 12 bit ham değer / 12-bit raw value
19  int mv = analogReadMilliVolts(A0);   // kalibre edilmiş milivolt / calibrated millivolts
20  Serial.printf("A0: %d  (%d mV)\n", raw, mv);
21  digitalWrite(LED_GREEN, mv > 1650 ? LOW : HIGH);   // 1,65 V üstünde yeşil / green above 1.65 V
22  digitalWrite(LED_RED, mv > 1650 ? HIGH : LOW);     // altında kırmızı / red below
23  ledOn = !ledOn;
24  digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);     // D13 LED'ini yakıp söndür / blink the D13 LED
25  delay(500);
26}

Аналоговые входы Nano ESP32 делают 12-битные измерения и возвращают значения от 0 до 4095, а analogReadMilliVolts() использует калибровочные данные микросхемы и выдаёт результат сразу в милливольтах. Встроенный RGB-светодиод работает с инверсной логикой, поэтому загорается, когда пишешь LOW. Если код не загружается и плата пропадает из списка портов, её можно перевести в режим загрузчика, дважды быстро нажав кнопку сброса. Чтобы узнать о Wi-Fi-возможностях ESP32, загляни в статью Что такое ESP32?, а чтобы определиться с платой, прочитай Arduino или ESP32?. Из других членов семейства Nano R4 переносит тот же процессор Renesas RA4M1 на 48 MHz, что и в Uno R4, в 5-вольтовый формат Nano, но даёт всего 8 mA на пин, а Nano 33 IoT и Nano 33 BLE — платы на 3,3 V, как и Nano ESP32.

Идеи проектов на Arduino Nano

  • Карманный термометр: выводи температуру, измеренную DHT11, на маленький OLED-дисплей; Nano и дисплей помещаются в спичечный коробок.
  • Мини-робот-машинка: маленький размер Nano экономит место на шасси; управляй моторами через L298N и следуй шагам из статьи Как собрать робота-машинку.
  • Робот, следующий по линии: восьми аналоговых входов с запасом хватает, чтобы читать линейку из пяти датчиков; подробности — в статье Робот, следующий по линии.
  • Bluetooth-пульт: подключи модуль HC-05 к D8 и D7 через SoftwareSerial и управляй светодиодом или реле с телефона; D0 и D1 остаются свободными для загрузки.
  • Носимая подсветка: сделай подсветку для значка или сумки из Nano на батарейке и нескольких светодиодов WS2812B.
  • Клавиатура на одном пине: собери описанную выше резисторную лестницу и на A6, и на A7 — получится меню на восемь кнопок, а цифровые пины останутся для дисплея и моторов.
  • Нужна USB-клавиатура? В ATmega328P классической Nano нет встроенного USB, поэтому компьютер не может распознать её как клавиатуру или мышь; для этого нужны платы на ATmega32U4, такие как Leonardo и Pro Micro.

Частые ошибки и как их исправить

СимптомПричинаРешение
Nano не появляется в списке портовКабель только для зарядки или нет драйвера CH340Возьми кабель с передачей данных, установи драйвер CH341SER; в Linux удали brltty
Загрузка прерывается ошибкой «not in sync» (нет синхронизации)На плате старый загрузчикИнструменты › Процессор › ATmega328P (Old Bootloader)
Кнопка на A6 или A7 совсем не реагируетУ этих пинов нет digitalRead и встроенной подтяжкиДобавь внешнюю подтяжку 10 kΩ и используй порог с analogRead
Кнопка на D13 всегда читается как нажатаяСветодиод L и его резистор тянут пин внизПеренеси кнопку на другой пин
Модуль, питаемый от 3V3, работает нестабильно или не работаетПин 3V3 даёт очень маленький токИспользуй отдельный стабилизатор на 3,3 V, запитанный от 5V
Аналоговые показания завышены на несколько процентовОт USB на пине 5V около 4,7 VИзмерь реальное Vcc или питай плату через VIN
Плата сильно греется при 12 V на VINСтабилизатор рассеивает в виде тепла (12 − 5) × токПодавай на VIN 7–9 V или питай пин 5V от понижающего модуля
С подключённым сервоприводом яркость светодиода на D9/D10 не регулируетсяБиблиотека Servo использует Timer1Перенеси светодиод на D3, D5, D6 или D11
Перед началом проекта на Nano составь план пинов: сначала размести детали, которым нужны I2C (A4/A5), SPI (D10–D13), прерывания (D2/D3) и PWM, распредели аналоговые датчики по A0–A3 и A6–A7, кнопки поставь на оставшиеся цифровые пины, а D0 и D1 оставь напоследок. Если плата неожиданно перезагружается, помогут шаги из статьи Arduino постоянно перезагружается.

Arduino Nano — самый простой способ перенести всё, что освоено на Uno, в маленькие постоянные проекты; если знать отличия, связанные с A6/A7, 3V3 и загрузчиком, сюрпризов не будет. Если хочется вернуться к основам, начни со статьи Что такое Arduino?. В приложении BlueGrays есть пошаговые проекты со схемами подключения и готовым кодом: мигающий светодиод, светодиод с кнопкой, измерение освещённости фоторезистором (LDR), расстояния с HC-SR04, температуры и влажности с DHT11, RGB-светодиод, сервопривод с потенциометром и последовательная связь между двумя Arduino; все они работают на Nano с теми же номерами пинов.

Частые вопросы

Сколько пинов у Arduino Nano?

У классической Arduino Nano 30 пинов в два ряда. 14 из них — цифровые входы/выходы (D0–D13), 8 — аналоговые входы (A0–A7), а остальные — VIN, 5V, 3V3, AREF, два GND и два RST. Так как A0–A5 тоже можно использовать как цифровые, всего получается 20 цифровых пинов; A6 и A7 умеют только читать аналоговые значения.

Какие пины Arduino Nano поддерживают PWM?

Пины PWM — D3, D5, D6, D9, D10 и D11; на плате и на схемах распиновки они отмечены значком ~ рядом с номером. D5 и D6 работают на частоте около 980 Hz, остальные — около 490 Hz. Библиотека Servo влияет на PWM на D9 и D10, а функция tone() — на D3 и D11.

Можно ли использовать A6 и A7 на Arduino Nano как цифровые пины?

Нет. A6 и A7 — это два канала ATmega328P, подключённые только к аналого-цифровому преобразователю; pinMode, digitalRead, digitalWrite и встроенная подтяжка на этих пинах не работают. Чтобы прочитать кнопку, добавь внешний подтягивающий резистор 10 kΩ и сравнивай значение analogRead() с порогом. А вот на Nano Every и Nano ESP32 A6 и A7 можно использовать и как цифровые пины.

Какое напряжение можно подавать на Arduino Nano?

Nano можно питать по USB, напряжением 7–12 V на пин VIN или стабилизированными 5 V на пин 5V. Стабилизатор AMS1117 на платах-клонах может выйти из строя выше 15 V и быстро греется уже при 12 V, поэтому для VIN идеально 7–9 V. Никогда не подавай на пин 5V больше 5 V.

Что означает Old Bootloader на Arduino Nano?

В 2018 году в Arduino заменили загрузчик Nano на более компактный и быстрый Optiboot; новый загрузчик обменивается данными на скорости 115200 бод, а старый — на 57600 бод. На большинстве клонов Nano на рынке до сих пор стоит старый загрузчик, поэтому, если не выбрать ATmega328P (Old Bootloader) в «Инструменты › Процессор», загрузка останавливается с ошибкой not in sync. Неверный вариант плате не вредит, так что можно просто попробовать оба.

Чем Arduino Nano отличается от Uno?

Обе платы используют ATmega328P на 16 MHz, поэтому номера пинов, пины PWM, линии I2C (A4/A5) и SPI (D10–D13) и код у них одинаковые. Nano меньше, вставляется в макетную плату и имеет два дополнительных аналоговых входа (A6, A7), но у неё нет гнезда питания DC и колодок для шилдов. Кроме того, у Nano разъём mini USB, и IDE выделяет ей 30 720 байт под код, тогда как у Uno предел — 32 256 байт.

Все проекты
Мигающий светодиод
#1Новичок

Мигающий светодиод

Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

4.6(188)
1127
Управление светодиодом кнопкой (удержание)
#9Новичок

Управление светодиодом кнопкой (удержание)

Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

4.8(113)
229
Измерение освещённости с LDR
#11Новичок

Измерение освещённости с LDR

Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

4.6(81)
139
Измерение расстояния HC-SR04 (вывод в порт)
#27Новичок

Измерение расстояния HC-SR04 (вывод в порт)

Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

4.6(46)
71
Температура и влажность с DHT11
#55Средний

Температура и влажность с DHT11

Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

4.7(47)
73
Работа с RGB-светодиодом
#39Новичок
Premium

Работа с RGB-светодиодом

В одном светодиоде прячутся три цвета: RGB-светодиод загорается красным, затем зелёным, затем синим, каждый цвет горит полсекунды и полсекунды не горит, а потом цикл начинается снова. Нужны всего один

4.9(73)
98
Управление сервоприводом потенциометром
#36Новичок
Premium

Управление сервоприводом потенциометром

Когда ты поворачиваешь ручку потенциометра, рычаг сервопривода поворачивается вместе с ней: одно крайнее положение ручки — ноль градусов, другое — пол-оборота. Arduino всё время читает положение ручки

4.6(37)
52
Односторонняя связь между двумя Arduino
#57Средний
Premium

Односторонняя связь между двумя Arduino

Ты заставляешь две Arduino разговаривать по одному проводу: нажми кнопку на одной, и на другой загорится светодиод, нажми снова — погаснет. Плата-передатчик сообщает о нажатии кнопки коротким сообщени

4.4(37)
50