Arduino.ru
Arduino Leonardo
Общие сведения
Arduino Leonardo — контроллер на базе ATmega32u4 (техническое описание, pdf). Платформа имеет 20 цифровых вход/выходов (7 из которых могут использоваться как выходы ШИМ и 12 как аналоговые входы), кварцевый генератор 16 МГц, разъем микро-USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо подать питание при помощи адаптера AC/DC или батареи.
В отличие от всех предыдущих плат ATmega32u4 имеет встроенную поддержку для USB соединения, это позволяет задать как Leonardo будет виден при подключение к компьютеру, это может быть клавиатура, мышь, виртуальный серийный / COM порт.
Характеристики
Схема и исходные данные
Питание
Arduino Leonardo может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.
Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи подключаются к выводам Gnd и Vin разъема питания.
Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.
- VIN. Вход используется для подачи питания от внешнего источника (в отсутствие 5 В от разъема USB или другого регулируемого источника питания). Подача напряжения питания происходит через данный вывод.
- 5V. Регулируемый источник напряжения, используемый для питания микроконтроллера и компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или от разъема USB, или другого регулируемого источника напряжения 5 В.
- 3V3. Напряжение на выводе 3.3 В генерируемое встроенным регулятором на плате. Максимальное потребление тока 50 мА.
- GND. Выводы заземления.
- IOREF. Вывод с рабочим напряжением вход/выходов платы. Для Leonardo это 5 В. Предполагается к использованию платами расширения для правильноего выбора рабочего напряжения.
Память
Микроконтроллер ATmega32u4 располагает 32 кБ флэш памяти, из которых 4 кБ используется для хранения загрузчика, а также 2.5 кБ ОЗУ (SRAM) и 1 Кб EEPROM.(которая читается и записывается с помощью библиотеки EEPROM).
Входы и Выходы
Каждый из 20 цифровых выводов Leonardo может настроен как вход или выход, используя функции pinMode(), digitalWrite(), и digitalRead(), . Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины ATmega32U4 USB-to-TTL. Обратите внимание что у Leonardo, класс Serial относится к последовательному соединению USB CDC. Последовательное соединение через выводы 0 и 1 осуществляется через класс Serial1.
- TWI: 2 (SDA) и 3 (SCL). Посредством выводов осуществляется связь I2C (TWI), для создания которой используется библиотека Wire.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, 11 и 13. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: на разъеме ICSP. Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI. Обратите внимание, что в Leonardo выводы SPI не разведены на цифровые вход/выходы как это было в предыдущих версиях Arduino контроллеров.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
- Аналоговые входы: A0-A5, A6-A11 (на цифровых выводах 4, 6, 8, 9, 10 и 12). Leonardo имеет 12 аналоговых входов, помеченных от A0 до A11. Все анадоговые входы могут работать в режиме цифровых вход/выходов. Входы с A0 по A5 совпадают с аналоговыми входами UNO. Входы с A6 по A11 на цифровых выводах 4, 6, 8, 9, 10 и 12 соответственно. Рарешение аналоговых входов — 10 бит, т.е. 1024 различных значения. По умолчанию значение на аналоговых входах измеряется от земли (0) до 5 Вольт, верхний предел диапазона может быть изменен с помощью AREF входа и analogReference() функции.
Дополнительная пара выводов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Обратите внимание на соединение между выводами Arduino и портами ATmega328.
Связь
На платформе Arduino Leonardo может устанавливать связь с компьютером, другими устройствами Arduino или микроконтроллерами несколькими способами. ATmega32U4 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). ATmega32U4 позволяет также организовать последовательное соединение с программами на стороне компьютера через USB так, чтобы они «общались» с платой через виртуальный COM порт. Leonardo c помощью стандартных драйверов USB COM (для Windows потребуется .inf файл) может подключаться как USB 2.0 устройтво. Мониторинг последовательной шины (Serial Monitor) среды разработки Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через USB подключение (но не при использовании последовательной передачи через выводы 0 и 1).
Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Leonardo.
ATmega32U4 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C. Для SPI может использоваться библиотека SPI.
Arduino Leonardo умеет определяться при подключение к компьютеру как устройство мышь или клавиатура. Управление этим режимом осуществляется через классы Keyboard и Mouse.
Программирование
Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Leonardo» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.
Микроконтроллер ATmega32U4 на Leonardo поставляется с записанным загрузчиком, опрощающим запись новых программ без использования внешних программаторов. Связь осуществляется протоколом AVR109.
Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.
Автоматическая (программная) перезагрузка
Leonardo разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой Arduino на компьютере, а не нажатием кнопки на платформе. Перезагрузка срабатывает когда виртуальный CDC COM порт открывается со скоростью 1200 бод, а затем закрывается. Когда это происходит, микропроцессор уходит на перезагрузку, разрывая USB соединение. После перезагрузки стартует загрузчик (бутлодер) и остается активным примерно 8 секунд. Загрузчик также можно инициировать нажатием кнопки Reset. Обратите внимание, что при подачи питания контроллер сразу переходит к выполнению загруженной пользовательской программы без выполнения загрузчика.
Токовая защита разъема USB
В Arduino Leonardo встроен самовостанавливающийся предохранитель (автомат), защищающий порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает дополнительный барьер. Предохранитель срабатыват при прохождении тока более 500 мА через USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.
Физические характеристики
Размер печатной платы Leonardo составляют 6.9 на 5.3 см. Разъем USB и силовой разъем выходят за границы данных размеров. Четыре отверстия в плате позволяют закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя между другими выводами оно составляет 0,25 см.
Arduino Leonardo
Отладочная плата Arduino Leonardo построена на микроконтроллере ATmega32u4. Она имеет 20 цифровых входных/выходных выводов (7 из которых могут использоваться в качестве ШИМ выходов и 16 в качестве аналоговых входов), кварцевый резонатор 16 МГц, подключение USB, разъем питания, разъем ICSP и кнопку перезагрузки. Она содержит всё необходимое для работы с микроконтроллером; для того, чтобы начать работу с ней, просто подключите ее к компьютеру с помощью USB кабеля или подайте питание от блока питания AC/DC или от батареи.
Arduino Leonardo отличается от всех предыдущих плат тем, что ATmega32u4 имеет встроенные средства для связи через USB, устраняющие необходимость в дополнительном процессоре. Это позволяет в дополнение к виртуальному (CDC) последовательному COM порту подключать Arduino Leonardo к компьютеру, как мышь или клавиатуру, или использовать Arduino Leonardo в других применениях.
Arduino Leonardo
Технические характеристики
Микроконтроллер | ATMega32u4 |
Рабочее напряжение | 5 В |
Входное напряжение (рекомендуемое) | 7-12 В |
Входное напряжение (предельное) | 6-20 В |
Цифровые входные/выходные выводы | 20 |
ШИМ каналы | 7 |
Аналоговые входные выводы | 12 |
Постоянный ток через входные/выходные выводы | 40 мА |
Постоянный ток через вывод 3,3 В | 50 мА |
Флеш-память | 32 Кб (ATmega32u4), из которых 4 Кб используются загрузчиком |
Оперативная память SRAM | 2,5 Кб |
Энергонезависимая память EEPROM | 1 Кб |
Тактовая частота | 16 МГц |
Длина | 68,6 мм |
Ширина | 53,3 мм |
Вес | 20 г |
Документация
Схемы, разводка платы
Питание
Arduino Leonardo может получать питание либо через подключение microUSB, либо от внешнего источника питания. Источник питания выбирается автоматически.
Внешнее (не USB) питание может подаваться либо от AC/DC адаптера, либо от батареи. Адаптер может быть подключен с помощью 2,1 мм разъема питания с положительным контактом в центре. Питание от батареи может быть подано на выводы Vin и GND разъема POWER.
Плата может работать от внешнего питания от 6 до 20 вольт. Если подается питание меньше, чем 7 вольт, то на выводе 5V питание может составлять менее пяти вольт, и плата может начать работать нестабильно. Если используется питание более 12В, регулятор напряжения может перегреться и повредить плату. Рекомендуется использовать напряжение питания в диапазоне от 7 до 12 вольт.
- Vin. Вход питания платы при использовании внешнего источника питания (используется при отсутствии 5 вольт от USB подключения или от другого регулируемого источника питания). Вы можете подать питание через этот вывод, или, если напряжение питания подается через разъем питания, то это напряжение 5В будет доступно и на этом выводе.
- 5V. С этого вывода можно взять регулируемое напряжение 5В с выхода регулятора на плате. Плата может питаться через разъем питания (7–12В), через USB разъем (5В) или через вывод Vin на плате (7–12В). Подача напряжения через выводы 5V и 3.3V обходит регулятор и может повредить плату. Поэтому не советуем подавать питание на плату через эти выводы.
- 3V3. Питание 3,3 вольта, выдаваемое регулятором на плате. Максимальный ток 50 мА.
- GND. Выводы земли.
- IOREF. Этот вывод обеспечивает опорное напряжение, с которым работает микроконтроллер. Правильно, сконфигурированная плата расширения, может прочитать напряжение на выводе IOREF и выбрать подходящий источник питания или перевести буферы выходов для работы с напряжением либо 5В, либо 3,3В.
Память
ATmega32u4 обладает 32 килобайтами флэш-памяти для хранения кода программы (из которых 4 килобайт используется загрузчиком), 2,5 килобайтами SRAM и 1 килобайтом EEPROM (которая может быть считана и записана с помощью библиотеки EEPROM).
Входы и выходы
Диаграмма соответствия выводов Arduino Leonardo и ATmega32U4
Номер вывода Atmega32U4 | Название вывода ATmega32U4 | Соответствующий вывод на Arduino Leonardo |
---|---|---|
1 | PE6 (INT. 6/AIN0 ) | Цифровой вывод 7 |
2 | UVcc | +5V |
3 | D- | RD- |
4 | D+ | RD+ |
5 | UGnd | UGND |
6 | UCap | UCAP |
7 | VUSB | VBus |
8 | ( SS/PCINT0 ) PB0 | RXLED |
9 | ( PCINT1 /SCLK) PB1 | SCK |
10 | ( PDI/PCINT2 /MOSI) PB2 | MOSI |
11 | ( PDO/PCINT3 /MISO) PB3 | MISO |
12 | ( PCINT7/OC0A / OC1C /#RTS) PB7 | Цифровой вывод 11 (PWM) |
13 | RESET | RESET |
14 | Vcc | +5V |
15 | GND | GND |
16 | XTAL2 | XTAL2 |
17 | XTAL1 | XTAL1 |
18 | ( OC0B / SCL/INT0 ) PD0 | Цифровой вывод 3 (SCL)(PWM) |
19 | ( SDA/INT1 ) PD1 | Цифровой вывод 2 (SDA) |
20 | (RX D1/AIN1 / INT2 ) PD2 | Цифровой вывод 0 (RX) |
21 | ( TXD1/INT3 ) PD3 | Цифровой вывод 1 (TX) |
22 | ( XCK1 /#CTS) PD5 | TXLED |
23 | GND1 | GND |
24 | AVCC | AVCC |
25 | ( ICP1/ADC8 ) PD4 | Цифровой вывод 4 |
26 | (T1/# OC4D/ADC9 ) PD6 | Цифровой вывод 12 |
27 | ( T0/OC4D / ADC10 ) PD7 | Цифровой вывод 6 (PWM) |
28 | ( ADC11/PCINT4 ) PB4 | Цифровой вывод 8 |
29 | ( PCINT5/OC1A /# OC4B/ADC12 ) PB5 | Цифровой вывод 9 (PWM) |
30 | ( PCINT6/OC1B / OC4B/ADC13 ) PB6 | Цифровой вывод 10 (PWM) |
31 | ( OC3A /#0C4A) PC6 | Цифровой вывод 5 (PWM) |
32 | ( ICP3/CLK0 /)0C4A) PC7 | Цифровой вывод 13 (PWM) |
33 | (#HWB) PE2 | HWB |
34 | Vcc1 | +5V |
35 | GND2 | GND |
36 | ( ADC7 /TDI) PF7 | Аналоговый вход 0 |
37 | ( ADC6 /TDO) PF6 | Аналоговый вход 1 |
38 | ( ADC5 /TMS) PF5 | Аналоговый вход 2 |
39 | ( ADC4 /TCK) PF4 | Аналоговый вход 3 |
40 | ( ADC1 ) PF1 | Аналоговый вход 4 |
41 | ( ADC0 ) PF0 | Аналоговый вход 5 |
42 | AREF | AEF |
43 | GND3 | GND |
44 | AVCC1 | AVCC |
Каждый из 20 цифровых выводов Arduino Leonardo может быть использован и как вход, и как выход, с помощью функций pinMode() , digitalWrite() и digitalRead . Они работают с напряжением 5 вольт. Каждый вывод может пропускать максимальный ток 40 мА и имеет внутренний подтягивающий резистор (по умолчанию отключен) 20–50 кОм.
Также некоторые выводы обладают специальными функциями:
- последовательный порт: 0 (RX) и 1 (TX). Выводы используются для приема (RX) и передачи (TX) последовательных данных с TTL уровнями с помощью аппаратных возможностей ATmega32U4. Обратите внимание, что для Arduino Leonardo класс Serial ссылается на USB (CDC) связь; для последовательной TTL связи через выводы 0 и 1 используйте класс Serial1 ;
- TWI: 2 (SDA) и 3 (SCL). Поддерживают связь через TWI с помощью библиотеки Wire;
- внешние прерывания: 3 (прерывание 0), 2 (прерывание 1), 0 (прерывание 2), 1 (прерывание 3) и 7 (прерывание 4). Эти выводы могут быть сконфигурированы для вызова прерывания по фронту или по спаду импульса или по изменению уровня на выводе. Смотрите работу с прерываниями на Arduino для более подробной информации;
- ШИМ: выводы 3, 5, 6, 9, 10, 11 и 13. Обеспечивают 8-битный ШИМ выход с помощью функции analogWrite() ;
- SPI: через разъем ICSP. Эти выводы поддерживают связь через SPI с помощью соответствующей библиотеки. Обратите внимание, что SPI выводы не подключены к каким-либо цифровым входным/выходным выводам, как на Arduino Uno. Они доступны только на разъеме ICSP. Это означает, что, если у вас есть плата расширения, использующая SPI, но у которой нет 6-пинового разъема ICSP, который подключается к 6-пиновому разъему ICSP на Arduino Leonardo, то эта плата работать не будет;
- светодиод: 13. Встроенный светодиод подключен к цифровому выводу 13. При высоком уровне на выводе светодиод загорается, при низком – гаснет;
- аналоговые входы: 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. Низкий уровень на этом выводе приводит к перезагрузке микроконтроллера. Обычно используется для добавления кнопки сброса на платы расширения, закрывающей доступ к кнопке сброса на самой плате Arduino.
Связь
Плата Arduino Leonardo обладает рядом возможностей для связи с компьютером, с другой платой или с другими микроконтроллерами. ATmega32U4 обеспечивает аппаратный UART порт, доступный на цифровых выводах 0 (RX) и 1 (TX), для последовательной связи с TTL уровнями (5 вольт). ATmega32U4 также позволяет использовать последовательную (CDC) связь через USB и отображается на компьютере, как виртуальный COM порт. Микросхема также действует, как полноскоростное USB 2.0 устройство, использующее стандартные USB COM драйвера. Windows машинам понадобится inf-файл. Arduino IDE включает в себя монитор последовательного порта, который позволяет посылать и принимать от платы простые текстовые данные. Светодиоды RX и TX на плате загораются при передаче данных через микросхему ATmega8U2/ATmega16U2 и USB соединение (но не при передаче данных через выводы 0 и 1 последовательного порта).
Библиотека SoftwareSerial позволяет организовать последовательную связь через любые цифровые выводы Arduino Leonardo.
Arduino Leonardo также поддерживает связь через TWI и SPI. Arduino IDE включает в себя библиотеку Wire для упрощения использования шины TWI. Для связи через SPI используется библиотека SPI .
Arduino Leonardo отображается, как стандартные клавиатура и мышь, и может быть запрограммирована для управления этими устройствами ввода с помощью классов Keyboard и Mouse .
Программирование
Arduino Leonardo может быть запрограммирована с помощью Arduino IDE. Выберите «Arduino Leonardo» в меню Инструменты → Плата (согласно микроконтроллеру на вашей плате).
ATmega32U4 на Arduino Leonardo поставляется с уже зашитым загрузчиком, что позволяет вам загружать в микроконтроллер новый код программы без использования внешнего аппаратного программатора. Связь осуществляется с помощью протокола AVR109.
Вы можете также обойти загрузчик и прошить микроконтроллер через разъем ICSP (внутрисхемное последовательное программирование) с помощью программатора Arduino ISP или аналога.
Автоматическая (программная) перезагрузка и запуск загрузчика
Вместо того, чтобы требовать физического нажатия кнопки перезагрузки перед прошивкой кода новой программы, Arduino Leonardo спроектирована таким образом, что она позволяет перезагружать ее с помощью программного обеспечения, запущенного на подключенном компьютере. Перезагрузка вызывается, когда на Arduino Leonardo виртуальный (CDC) последовательный COM порт сначала открывается со скоростью 1200 бод, а затем закрывается. Когда это происходит, процессор перезагружается, разрывая USB соединение с компьютером (то есть виртуальный последовательный COM порт исчезает). После перезагрузки процессора, запускается загрузчик и остается в активном состоянии около 8 секунд. Загрузчик также может быть запущен нажатием кнопки перезагрузки на Arduino Leonardo. Обратите внимание, что при подаче напряжения питания на плату Arduino Leonardo сразу переходит к выполнению пользовательской программы (если та загружена) без запуска загрузчика.
Из-за этого способа обработки перезагрузки платой Arduino Leonardo лучше всего позволить Arduino IDE попытаться вызвать перезагрузку перед прошивкой, особенно если вы привыкли нажимать кнопку перезагрузки перед прошивкой на других платах. Если IDE не может перезагрузить плату, вы всегда можете запустить загрузчик нажатием кнопки перезагрузки на плате.
Защита от перегрузки по току при питании через USB
Arduino Leonardo имеет самовосстанавливающийся предохранитель, который защищает USB порты вашего компьютера от короткого замыкания и перегрузки по току. Несмотря на то, что большинство компьютеров обеспечивают свою собственную внутреннюю защиту, этот предохранитель дает дополнительный уровень защиты. Если ток через USB порт превышает 500 мА, предохранитель автоматически разрывает соединение, пока короткое замыкание или перегрузка не будут устранены.