Arduino Leonardo

Arduino Leonardo с разъемами - вид спереди Arduino Leonardo - вид сзади
Arduino Leonardo без разъемов - вид спереди

Общие сведения

Arduino Leonardo - это устройство на базе микроконтроллера ATmega32U4 (datasheet). В его состав входит все необходимое для работы с данным микроконтроллером: 20 цифровых входов/выходов (7 из которых могут работать в качестве ШИМ-выходов, 12 - в качестве аналоговых входов), кварцевый резонатор на 16 МГц, разъем микро-USB, разъем питания, разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming) и кнопка сброса. Для начала работы с Leonardo достаточно просто подать питание от AC/DC-адаптера или батареи, либо подключить его к компьютеру посредством USB-кабеля.

Отличие Leonardo от всех предыдущих плат заключается в том, что его USB-контроллер встроен непосредственно в микроконтроллер ATmega32U4, что исключает необходимость в дополнительном процессоре. Благодаря этому при подсоединении к компьютеру Leonardo может определяться не только как виртуальный (CDC) COM-порт, но и как обычная мышь или клавиатура. Кроме того, такая архитектура оказывает влияние и на поведение платы; подробнее об этом см. страницу Начало работы.

Характеристики:

Микроконтроллер ATmega32u4
Рабочее напряжение
Напряжение питания (рекомендуемое) 7-12В
Напряжение питания (предельное) 6-20В
Цифровые входы/выходы 20
Каналы ШИМ 7
Аналоговые входы 12
Максимальный ток одного вывода 40 мА
Максимальный выходной ток вывода 3.3V   50 мА
Flash-память 32 КБ (ATmega32u4) из которых 4 КБ используются загрузчиком
SRAM 2.5 КБ (ATmega32u4)
EEPROM 1 КБ (ATmega32u4)
Тактовая частота 16 МГц

Схема и исходный проект

Файлы EAGLE: arduino-leonardo-reference-design.zip

Схема: arduino-leonardo-schematic-rev3b.pdf

Питание

Arduino Leonardo может быть запитан от микро-USB либо от внешнего источника питания - тип источника выбирается автоматически.

В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера (диаметр - 2.1мм, центральный контакт - положительный) необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.

Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

Ниже перечислены выводы питания, расположенные на плате:

  • VIN. Напряжение, поступающее в Arduino непосредственно от внешнего источника питания (не связано с 5В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если устройство запитано от внешнего адаптера.
  • 5V. Стабилизированное напряжение 5В, питающее микроконтроллер и другие компоненты на плате. Может поступать как через стабилизатор напряжения питания VIN, так и от USB или другого стабилизированного источника 5В.
  • 3V3. 3.3В, поступающие от стабилизатора напряжения на плате. Максимальный выходной ток, потребляемый от этого вывода, составляет 50 мА.
  • GND. Выводы земли.
  • IOREF. Рабочее напряжение цифровых входов/выходов платы (эквивалентно напряжению VCC на плате). В Leonardo это напряжение равно 5В. 

Память

Объем памяти программ микроконтроллера ATmega32U4 составляет 32 КБ (из них 4 КБ отведены под загрузчик). Помимо этого, он имеет 2.5 КБ оперативной памяти SRAM и 1 КБ EEPROM (для взаимодействия с которой служит библиотека EEPROM).

Входы и выходы

С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 20 цифровых выводов может работать в качестве входа или выхода. Рабочее напряжение выводов - 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо основных, некоторые выводы Ардуино могут выполнять дополнительные функции:

  • Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу посредством аппаратного приемопередатчика, встроенного в ATmega32U4. Обратите внимание, что в Arduino Leonardo класс Serial отвечает за передачу данных через USB (CDC)-соединение; для передачи данных через выводы 0 и 1 необходимо использовать класс Serial1.
  • TWI: выводы 2 (SDA) и 3 (SCL). С использованием библиотеки Wire данные выводы могут осуществлять связь по интерфейсу TWI.
  • Внешние прерывания: выводы 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt 2), 1 (interrupt 3) и 7 (interrupt 4). Данные выводы могут быть сконфигурированы в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, по фронту, по спаду или при изменении сигнала. Для получения дополнительной информации см. функцию attachInterrupt().
  • ШИМ: выводы 3, 5, 6, 9, 10, 11 и 13. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
  • Интерфейс SPI: выводы разъема ICSP. C использованием библиотеки SPI данные выводы позволяют осуществлять связь по интерфейсу SPI. Обратите внимание, что линии SPI выведены только на разъем ICSP и не соединены с выводами платы, как на Arduino Uno. Поэтому, те SPI-платы расширения, у которых нет 6-контактного разъема ICSP для подсоединения к Leonardo, работать не будут.
  • Светодиод: вывод 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается.
  • Аналоговые входы: выводы A0 - A5, A6 - A11 (на цифровых выводах 4, 6, 8, 9, 10 и 12). В Arduino Leonardo есть 12 аналоговых входов (A0 - A11), каждый из которых может использоваться как обычный цифровой вывод. Аналоговые входы A0 - A5 расположены так же, как и на Arduino Uno; а входы A6 - A11 - на цифровых выводах 4, 6, 8, 9, 10 и 12 соответственно. Каждый из входов может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Однако, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference().

Помимо перечисленных на плате существует еще несколько выводов:

  • AREF. Опорное напряжение для аналоговых входов. Может задействоваться функцией analogReference().
  • Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения

Смотрите также соответствие выводов Arduino и ATmega32U4.

Связь

Arduino Leonardo предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega32U4 имеется приемопередатчик UART, позволяющий осуществлять связь по последовательным интерфейсам посредством цифровых выводов 0 (RX) и 1 (TX). Микроконтроллер 32U4 поддерживает последовательную (CDC) связь через USB и при подключении к компьютеру может определяться как виртуальный COM-порт. При этом микросхема использует стандартные USB-COM драйвера и может работать в режиме USB 2.0 Full Speed. На платформе Windows необходим только соответствующий .inf-файл. В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных компьютеру через USB на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1 данные светодиоды не задействуются).

Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Leonardo.

В микроконтроллере ATmega32U4 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см.документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.

Leonardo может определяться как обычная клавиатура или мышь, и с помощью библиотек Keyboard и Mouse может быть запрограммирован на управление этими устройствами ввода.

Программирование

Arduino Leonardo программируется с помощью программного обеспечения Ардуино (скачать). Для этого из меню Tools > Board необходимо выбрать "Arduino Leonardo" с микроконтроллером, соответствующим вашей плате. Для получения более подробной информации см. справку и примеры.

ATmega32U4 в Arduino Leonardo выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по протоколу AVR109.

Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.

Автоматический (программный) сброс и запуск загрузчика

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Leonardo спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Сброс срабатывает после закрытия виртуального COM-порта, который предварительно был открыт на скорости 1200 бод. При срабатывании этого условия, процессор сбросится, разорвав USB соединение с компьютером (при этом виртуальный COM-порт исчезнет). После перезагрузки процессора, запускается загрузчик, оставаясь активным на протяжение приблизительно 8 секунд. Помимо этого, инициировать загрузчик можно, нажав кнопку сброса на плате Leonardo. Обратите внимание, что при первом включении устройства вместо запуска загрузчика, контроллер сразу перейдет к выполнению пользовательской программы (если таковая есть).

Из-за особенностей механизма сброса Leonardo, рекомендуется предоставлять программному обеспечению Ардуино возможность осуществить сброс перед загрузкой программы, особенно, если вы привыкли нажимать кнопку сброса при прошивке других плат. Если же программное обеспечение не сможет сбросить устройство, вы всегда сможете запустить загрузчик, нажав кнопку сброса вручную.

Защита USB от перегрузок

В Arduino Leonardo есть восстанавливаемые предохранители, защищающие USB-порт компьютера от коротких замыканий и перегрузок. Несмотря на то, что большинство компьютеров имеют собственную защиту, такие предохранители обеспечивают дополнительный уровень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.

Физические характеристики

Максимальная длина и ширина печатной платы Leonardo составляет 6.9 см и 5.4 см соответственно, с учетом разъема USB и разъема питания, выступающих за пределы платы. Четыре крепежных отверстия позволяют прикреплять плату к поверхности или корпусу. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.

Купить Arduino Leonardo можно в интернет-магазине arduino-ua.com.