Справочник плат

Arduino Leonardo, Micro и Pro Micro: платы-клавиатуры

У этих трёх плат общий секрет — микроконтроллер ATmega32U4 с USB прямо внутри чипа. Компьютер видит такую плату не только как порт для прошивки, но и как настоящую клавиатуру или мышь: можно собрать кнопку-«горячую клавишу», педаль для презентаций или мини-геймпад. Здесь распиновка, отличия от Uno, работа с Keyboard.h и лечение знаменитого «порт исчез при прошивке».

В чём фокус

USB живёт прямо в микроконтроллере

У Uno и Nano за связь с компьютером отвечает отдельный чип-переводчик (ATmega16U2 у Uno, FT232RL у фирменной Nano, CH340 у клонов) — сам контроллер про USB ничего не знает. У ATmega32U4 переводчик не нужен: USB встроен в тот же кристалл, который выполняет скетч. Отсюда оба фирменных свойства семейства. Приятное: плата умеет притворяться любым USB-устройством ввода. Хлопотное: во время прошивки USB-порт на несколько секунд исчезает и появляется заново — для новичка это выглядит как поломка, хотя это штатная работа загрузчика.

Технические характеристики

МикроконтроллерATmega32U4 (8 бит, AVR) — USB встроен в сам чип
Тактовая частота16 МГц (Pro Micro бывает и 8 МГц на 3,3 В)
Flash-память32 КБ, из них 4 КБ занимает загрузчик Caterina — скетчу доступно 28 672 байта
Оперативная память (SRAM)2 560 байт — на четверть больше, чем у Uno и Nano
EEPROM1 КБ
Цифровые выводыLeonardo и Micro — 20, из них 7 с ШИМ (3, 5, 6, 9, 10, 11, 13)
Аналоговые входы12: A0–A5 плюс A6–A11 на цифровых ножках 4, 6, 8, 9, 10 и 12
Шина I2CSDA — вывод 2, SCL — вывод 3 (не A4/A5, как у Uno!)
Последовательные портыДва: Serial (виртуальный, через USB) и Serial1 (аппаратный, ножки 0/1)
USB-разъёмLeonardo, Micro и большинство Pro Micro — micro-USB
Особый талантОпределяется компьютером как клавиатура и мышь (USB HID)

Обратите внимание на две строки, из-за которых чаще всего «не работает» переезд проекта с Uno: шина I2C здесь живёт на выводах 2 и 3, а не на A4/A5 — дисплей, подключённый «как на Uno», молчит, — и портов Serial два. Как подключать экраны на новые ножки — в разборах LCD 1602 и OLED-дисплея.

Одна плата в трёх форматах

Leonardo — полноразмерная плата под шилды Uno. Micro — та же схема, ужатая под макетку, официальная плата Arduino. Pro Micro — народный формат от SparkFun ещё компактнее: ради размера с платы убрали кнопку RESET, светодиод L и часть выводов. Клоны Pro Micro — самые дешёвые платы на 32U4, поэтому именно из них делают самодельные геймпады и макро-клавиатуры.

LeonardoMicroPro Micro
Размер68,6 × 53,4 мм (как Uno)48 × 18 мм≈33 × 18 мм
Куда ставитьПод шилды формата UnoВ макетную платуВ макетную плату
Кнопка RESETЕстьЕстьНет — замыкают RST на GND
Гнездо питания 7–12 ВЕстьНетНет (вход RAW на плате)
SPIТолько колодка ICSPICSP и ножки MISO/MOSI/SCKВыводы 14, 15, 16
Выведено аналоговых12 (A0–A11)12 (A0–A11)9 (A0–A3, A6–A10)
Светодиод на выводе 13ЕстьЕстьНет — только RX/TX-светодиоды
СтатусПродаётся у ArduinoПродаётся у ArduinoПлата SparkFun + море клонов

Распиновка Pro Micro: схема выводов

Схема повторяет плату при взгляде сверху, USB вверху. У Leonardo и Micro назначение выводов то же самое — просто выводов больше: добавляются 11, 12, 13, A4, A5 и колодка ICSP. Наведите на категорию в легенде — её выводы подсветятся.

Распиновка Pro Micro (ATmega32U4) — схема выводовUSBTXRXATmega32U4PRO MICROкнопки RESET нетсброс: RST на GND1·TX0·RXGNDGND2·SDA~3·SCL4·A6~5~6·A778·A8~9·A9RAWGNDRSTVCCA3A2A1A015·SCK14·MISO16·MOSI~10·A10

Главные сюрпризы для тех, кто пришёл с Uno: I2C на выводах 2/3, SPI на выводах 14/15/16, а аналоговые входы прячутся и среди цифровых ножек — полный список АЦП у Pro Micro: A0–A3 плюс выводы 4, 6, 8, 9 и 10. ШИМ умеют выводы 3, 5, 6, 9 и 10 (у Leonardo и Micro — ещё 11 и 13).

Скетч-клавиатура: плата печатает сама

Классический первый проект на 32U4 — кнопка, которая печатает текст. Библиотеки Keyboard и Mouse в Trema IDE уже вшиты в среду, ничего скачивать не надо. Мы собрали этот скетч для Leonardo — 5 718 байт из 28 672:

// Кнопка на D2 печатает текст — плата работает USB-клавиатурой.
// Собирается только для плат на ATmega32U4: на Uno будет ошибка
// «'Keyboard' was not declared in this scope».
#include <Keyboard.h>

void setup() {
  pinMode(2, INPUT_PULLUP);   // кнопка между D2 и GND
  Keyboard.begin();
}

void loop() {
  if (digitalRead(2) == LOW) {           // кнопка нажата
    Keyboard.print("privet ot arduino"); // плата «печатает» сама
    delay(500);                          // защита от повтора
  }
}

Ловушка, о которой предупреждает даже официальная справка Arduino: если скетч печатает или двигает мышь без остановки, плата начинает мешать вам работать — и перепрошить её становится трудно, среда просто не успевает открыть порт. Поэтому печатайте только по событию: по кнопке, как в примере, или по команде. Если плата уже «взбесилась» — нажмите RESET один раз и сразу запускайте загрузку: загрузчик ждёт около 8 секунд, среда успеет.

Что ещё умеет семейство: Mouse.h двигает курсор, а библиотека Joystick из каталога библиотек превращает плату в геймпад, который видят игры. На Uno и Nano всё это не работает совсем: мы проверили — сборка падает с ошибкой 'Keyboard' was not declared in this scope, потому что у ATmega328P нет USB-железа в чипе.

Порт исчезает при прошивке — это нормально

Перед загрузкой скетча среда открывает порт платы на скорости 1200 бод и тут же закрывает — это условный сигнал «перейди в режим загрузчика». Плата перезапускается, её USB-порт пропадает из системы и через секунду появляется снова — иногда под другим номером. Загрузчик Caterina ждёт прошивку около 8 секунд, затем запускает старый скетч. Классическая Arduino IDE в этот момент нередко теряет плату — «порт недоступен», особенно если скетч завис или порт сменил номер.

Trema IDE делает этот танец сама: посылает сигнал 1200 бод, до 8 секунд следит за списком портов и находит загрузчик по USB-номерам платы, даже когда тот появился под другим именем, — в журнале сборки это видно по строкам «1200-baud touch». Если плата не ответила на сигнал (скетч завис намертво), поможет кнопка RESET — у Pro Micro вместо неё дважды быстро замыкают RST на GND. Полный разбор ошибок загрузки — на странице «Ошибка загрузки скетча».

Два порта Serial: почему монитор молчит

Ещё одно отличие от Uno, которое ловит переезжающие скетчи: у 32U4 порт Serial — виртуальный, он живёт внутри USB-соединения. А на ножках 0/1 работает отдельный аппаратный порт Serial1. Это удобно: GPS или Bluetooth-модуль подключается к Serial1, а монитор порта остаётся свободным — на Uno так не получится. Мы собрали мост между портами (4 456 байт; на Uno этот же код не собирается — 'Serial1' was not declared):

// Мост между USB-портом и аппаратным UART на ножках 0/1.
// Serial — виртуальный порт через USB, Serial1 — настоящий UART:
// к нему можно подключить GPS или Bluetooth-модуль, не теряя монитор.
void setup() {
  Serial.begin(9600);    // порт в компьютер (USB)
  Serial1.begin(9600);   // порт на ножках 0 (RX) и 1 (TX)
}

void loop() {
  if (Serial1.available()) Serial.write(Serial1.read()); // модуль -> ПК
  if (Serial.available())  Serial1.write(Serial.read()); // ПК -> модуль
}

Почему после прошивки монитор пустой: Serial через USB «оживает» не мгновенно, и всё, что скетч печатает в первые мгновения, пропадает. Если вывод нужен с первой строки, добавьте в setup() после Serial.begin(9600) строку while (!Serial) {} — скетч подождёт, пока компьютер откроет порт. Только не оставляйте её в автономном устройстве: без компьютера ожидание не закончится никогда.

Память: USB-стек всегда с собой

За встроенный USB приходится платить флеш-памятью. Мы измерили: пустой скетч на Leonardo занимает 3 462 байта — против 444 байт на Uno. Почти три килобайта съедает USB-стек, который держит связь с компьютером в каждом скетче. Плюс загрузчик Caterina забирает 4 КБ из 32: скетчу остаётся 28 672 байта — меньше, чем у Uno (32 256). Утешение: SRAM здесь 2 560 байт, на четверть больше. Что делать, если скетч перестал помещаться — в разборе «Память Arduino».

Где купить

В магазине iarduino.ru (проверяли 21 августа 2026 года) из всей троицы в наличии — полноразмерная Arduino Leonardo за 790 ₽: разъём micro-USB, гнездо питания, колодки под шилды Uno. Кабель micro-USB в комплект не входит — берите сразу, если дома не найдётся. Pro Micro в этом магазине нет — его обычно покупают как клон на маркетплейсах, и это нормально: формат открытый. Карточка Arduino Micro (1 090 ₽) в момент проверки значилась «скоро в продаже». Забавная деталь: в описании Leonardo на сайте магазина упомянут «USB ATmega16U2» — это копипаста из карточки Uno, у Leonardo отдельного USB-чипа нет, в этом весь его смысл.

Чем программировать

Семейство 32U4 в Trema IDE

Все три платы — и обе версии Pro Micro, 5 В и 3,3 В — есть во встроенном списке плат Trema IDE: выбираете с панели, ничего не доустанавливая. Хитрую прошивку с исчезающим портом среда отрабатывает сама, а если что-то пойдёт не так — объяснит по-русски. Чем ещё отличается от классики — на странице «Arduino IDE на русском».

  • Leonardo, Micro и Pro Micro (5 В и 3,3 В) — во встроенном списке плат
  • Keyboard.h и Mouse.h уже вшиты в среду — ничего ставить не надо
  • Авто-сброс 1200 бод среда делает сама и до 8 секунд ждёт новый порт
  • Ошибки сборки объясняются по-русски карточками
  • Дома — бесплатно, скачивается с российского сервера

Вопросы

Частые вопросы про Leonardo и Pro Micro

Не нашли ответа? Спросите нас

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

Микроконтроллером: у Leonardo стоит ATmega32U4 с USB прямо в чипе, отдельного USB-переводчика на плате нет. Отсюда таланты — плата умеет притворяться клавиатурой и мышью, портов Serial два, оперативной памяти 2 560 байт вместо 2 048. И отличия в разводке: I2C живёт на выводах 2/3, а не на A4/A5, поэтому дисплей, подключённый «как на Uno», молчит.

Почему при прошивке Leonardo порт исчезает и появляется?

Это штатная работа загрузчика: по сигналу 1200 бод плата перезапускается, её USB-порт пропадает из системы и через секунду возвращается — иногда под другим номером. Загрузчик ждёт прошивку около 8 секунд. Trema IDE отрабатывает этот танец сама и находит новый порт по USB-номерам платы.

Будет ли Keyboard.h работать на Uno или Nano?

Нет. Мы проверили: сборка падает с ошибкой «'Keyboard' was not declared in this scope», потому что у ATmega328P нет USB-железа в кристалле. Клавиатурой и мышью умеют быть только платы на ATmega32U4 (Leonardo, Micro, Pro Micro) и старшие 32-битные платы.

Почему Serial.println ничего не печатает на Leonardo?

Порт Serial здесь виртуальный, через USB, и оживает не мгновенно: всё, что скетч напечатал в первые мгновения, пропадает. Добавьте после Serial.begin() строку while (!Serial) {} — скетч дождётся, пока компьютер откроет порт. В автономном устройстве эту строку уберите, иначе без компьютера скетч не стартует.

Плата с Keyboard.h взбесилась и не прошивается. Что делать?

Скетч, который печатает без остановки, мешает среде открыть порт. Нажмите кнопку RESET один раз и сразу запускайте загрузку — загрузчик ждёт около 8 секунд, среда успеет. У Pro Micro кнопки нет: дважды быстро замкните RST на GND. И добавьте в скетч кнопку-предохранитель, как в примере на этой странице.

Чем Pro Micro отличается от Leonardo и Micro?

Это плата SparkFun (и множество клонов) на том же ATmega32U4, но урезанная ради размера: нет кнопки RESET и светодиода L, выведено меньше ножек — 9 аналоговых входов вместо 12, ШИМ на пяти выводах. Бывает в версиях 5 В/16 МГц и 3,3 В/8 МГц: если прошить с неверной настройкой, USB перестаёт определяться — лечится двойным замыканием RST на GND и прошивкой с правильной платой в списке.

Плата-клавиатура на столе? Осталась среда

Скачайте Trema IDE — Leonardo, Micro и Pro Micro уже в списке плат, Keyboard.h вшита, а исчезающий порт среда ловит сама. Дома — бесплатно навсегда. Все платы семейства — в обзоре «Платы Arduino».