Arduino Leonardo: распиновка, схема подключения и программирование
Arduino Leonardo — платформа для разработки на базе микроконтроллера ATmega32U4. На плате предусмотрены: 20 цифровых входов/выходов (7 из них могут работать в качестве ШИМ-выходов, 12 — в качестве аналоговых входов), кварцевый резонатор на 16 МГц, разъём микро-USB, разъём питания, разъём для внутрисхемного программирования ICSP (In-Circuit Serial Programming) и кнопка сброса.
Отличие Arduino Leonardo от других плат в том, что его USB-контроллер встроен непосредственно в микроконтроллер ATmega32U4, исключая необходимость в дополнительном процессоре. При подключении к компьютеру Leonardo определяется HID-устройство (вроде клавиатуры или мыши) — сделать на основе Arduino Leonardo новый компьютерный манипулятор значительно проще, чем с другими платами.
Подключение и настройка
Для работы с платой Arduino Leonardo в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.
Что-то пошло не так?
Элементы платы
Микроконтроллер ATmega32U4
Сердцем платформы Iskra Neo является 8-битный микроконтроллер семейства AVR — ATmega32U4. Он предоставляет в ваше распоряжение 32 КБ флеш-памяти для хранения прошивки, 2.5 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных. Этого вполне достаточно для решения множества задач вроде управления роботом, промышленной автоматикой, умным домом, световыми инсталляциями и т.д.
Пины питания
VIN: Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера.
5V: На вывод поступает напряжение 5 В от стабилизатора платы. Стабилизатор обеспечивает питание микроконтроллера ATmega32U4. Питать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
3.3V: 3,3 В от стабилизатора напряжения платы. Максимальный ток — 50 мА.
GND: Выводы земли.
IOREF: Этот вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.
Порты ввода/вывода
Цифровые входы/выходы: пины 0 – 13
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
ШИМ: пины 3 , 5 , 6 , 9 , 10 , 11 и 13
Позволяют выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
АЦП: пины A0 – A5 , A6 – A11 (на цифровых пинах 4, 6, 8, 9, 10 и 12).
В Arduino Leonardo есть 12 аналоговых входов, каждый из которых может представить напряжение в виде 10-битного кода (1024 значений). Разрядность АЦП — 10 бит.
TWI/I²C: пины SDA и SCL
Для общения с периферией по синхронному протоколу, через 2 провода с использованием библиотеки Wire .
SPI: пины разъёма ICSP
Выводы позволяют осуществлять связь по интерфейсу SPI. Обратите внимание, что линии SPI выведены только на разъём ICSP и не соединены с выводами платы, как на Arduino Uno. Те SPI-платы расширения, у которых нет 6-контактного разъёма ICSP для подсоединения к Leonardo — работать не будут.
UART: пины 0(RX) и 1(TX)
Используется для коммутации платы Arduino с другими устройствами через класс Serial1 . Для связи Arduino Leonardo с компьютером через порт micro-USB, используйте класс Serial
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
RX и TX | Мигают при обмене данными между Arduino Leonardo и ПК. |
L | Светодиод выводу 13 . При отправке значения HIGH светодиод включается, при отправке LOW – выключается. |
ON | Индикатор питания Arduino Leonardo. |
Разъём micro-USB
Разъём micro-USB предназначен для прошивки платформы Arduino Leonardo с помощью компьютера.
Разъём для внешнего питания
Разъём для подключения внешнего питания от 7 В до 12 В.
ICSP-разъём
ICSP-разъем предназначен для внутрисхемного программирования микроконтроллера ATmega32U4. Также с применением библиотеки SPI данные выводы могут осуществлять связь по интерфейсу SPI. Обратите внимание линии SPI не продублированы на цифровых контактах, как например на Arduino Uno. Это означает, что если плата расширения использует SPI и не имеет снизу ICSP-разъёма ответного к этим штырькам на Arduino, она работать не будет.
Arduino Nano: распиновка, схема подключения и программирование
Плата Arduino Nano — аналог флагманской Uno в миниатюрном размере. На ней предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём Mini-USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.
Видеообзор
Подключение и настройка
Для запуска платформы скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.
При выборе платформы выбирайте Arduino Nano.
Если всё получилось — можете смело переходить к экспериментам.
Элементы платы
Микроконтроллер ATmega328P
Сердцем платформы Arduino Nano является 8-битный микроконтроллер семейства AVR — ATmega328P с тактовой частотой 16 МГц. Контроллер предоставляет 32 КБ Flash-памяти для хранения прошивки, 2 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных.
Микросхема FT232R
Микросхема FTDI FT232R обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к компьютеру Nano определяется как виртуальный COM-порт.
USB-UART преобразователь общается с микроконтроллером ATmega328P по интерфейсу UART через пины 0(RX) и 1(TX) . Рекомендуем не использовать эти контакты в своём проекте.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
RX и TX | Мигают при обмене данными между Arduino Nano и ПК. |
L | Пользовательский светодиод подключённый к 13 пину микроконтроллера. При высоком уровне светодиод включается, при низком – выключается. |
ON | Наличие питания на Arduino Nano. |
Разъём Mini-USB
Разъём Mini-USB предназначен для прошивки платформы с помощью компьютера.
Регулятор напряжения 5 В
Линейный понижающий регулятор напряжения LM1117MPX-5.0 с выходом 5 вольт обеспечивает питание микроконтроллера ATmega328P и другой логики платформы. Максимальный выходной ток составляет 800 мА.
ICSP-разъём для ATmega328
ICSP-разъём предназначен для загрузки прошивки в микроконтроллер ATmega328 через программатор.
Также через контакты ICSP Nano общается с платами расширения по интерфейсу SPI.
Распиновка
Пины питания
VIN: Входной пин для подключения внешнего источника питания с напряжением в диапазоне от 7 до 12 вольт.
5V: Выходной пин от регулятора напряжения на плате с выходом 5 вольт и максимальных током 800 мА. Питать устройство через вывод 5V не рекомендуется — вы рискуете спалить плату.
3.3V: Выходной пин от стабилизатора микросхемы FT232R с выходом 3,3 вольта и максимальных током 50 мА. Питать устройство через вывод 3V3 не рекомендуется — вы рискуете спалить плату.
GND: Выводы земли.
AREF: Пин для подключения внешнего опорного напряжения АЦП относительно которого происходят аналоговые измерения при использовании функции analogReference() с параметром «EXTERNAL».
Порты ввода/вывода
Цифровые входы/выходы: пины 0 – 13
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
ШИМ: пины 3 , 5 , 6 , 9 , 10 и 11
Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ не меняется и установлена в 8 бит.
АЦП: пины A0 – A7
Позволяет представить аналоговое напряжение в цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В. При подаче большего напряжения — вы убьёте микроконтроллер.
TWI/I²C: пины A4(SDA) и A5(SCL)
Для общения с периферией по интерфейсу I²C. Для работы используйте библиотеку Wire.
SPI: пины 11(MOSI) , 12(MISO) , 13(SCK) и 10(SS)
Для общения с периферией по интерфейсу SPI. Для работы — используйте библиотеку SPI.
UART: пины 0(RX) и 1(TX)
Используется для коммуникации платы Arduino с компьютером или другими устройствами по последовательному интерфейсу. Выводы 0(RX) и 1(TX) соединены с соответствующими USB-UART преобразователя FT232R. Для работы с последовательным интерфейсом — используйте методы библиотеки Serial.
Arduino ICSP
- Using ICSP Pins to Program AVR and Arduino
- Using ICSP Pins for Communication Between Two or More Arduino Boards
In this tutorial, we will discuss the use of ICSP pins present in Arduino. ICSP stands for in-circuit serial programmer , also known as ISP .
Using ICSP Pins to Program AVR and Arduino
Arduino is a board that has a microcontroller, a programmer, and some safety components. There is a bootloader in every Arduino provided by the Arduino team itself, which communicates with the PC and gives instructions to the microcontroller to perform some task like BIOS present in a motherboard. The bootloader is preprogrammed and is inside the microcontroller’s flash memory. When you connect the Arduino with your PC, the bootloader waits for a sketch to be uploaded to the microcontroller, and if no sketch is provided, the bootloader will run the already present sketch inside the microcontroller flash memory. Sometimes this bootloader gets crashed, and the Arduino cannot communicate with the PC. If this is the case, or you want to program the bootloader or program another microcontroller, you can use another Arduino board to do this. First, you need to check where the ICSP pins are on your Arduino board. You can check the pin configuration of your Arduino board for that. For example, if you want to program the bootloader of an Arduino UNO with another Arduino UNO. Connect the two Arduino UNOs as shown in the figure.
The first step is to set the programmer Arduino as ISP . To do this, go to the tools tab in Arduino IDE and set the programmer as Arduino as ISP . The next step to use an example code present in the Arduino examples section as ArduinoISP . In this example code, you can see many comments which will guide you through setting out different parameters. This code also supports three LEDs which are used to check the operation of the process. For example, the middle LED indicated if there is an error in programming. The next step is to burn the bootloader . To do this, you can go to the Tools tab and select burn bootloader . You can set different parameters of bootloader like how much memory is reserved for the bootloader and disabling reset. So make sure to read the documentation of your Arduino board before doing this. You can also use this method to program other AVR microcontrollers because, in some projects, you don’t need a board; instead, you only need a microcontroller like a PIC microcontroller.
Using ICSP Pins for Communication Between Two or More Arduino Boards
If you are making a project where you need more than one Arduino board, and you need them to communicate with each other or if you want to control some Arduino boards with a master Arduino board. In these cases, you can use the ICSP pins for communication.
Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.
Copyright © 2024. All right reserved
What is the use of ISP and ICSP in Arduino?
i hav a module of sim900a and someone advised me to connect it to ard uno using isp or spi. now i m having queries like can we program using isp? why cant i use spi or i2c? how are they different? xcept i2c which uses uart, right?
Oct 5, 2014 at 19:06
1 Answer 1
ISP/ICSP has no role when utilizing a typical, properly functioning Arduino, as the program code compiled from sketches is instead downloaded via a bootloader (either serial, often behind an on-board USB-serial converter, or else directly USB).
The role of ISP in the Arduino ecosystem is mostly limited to:
- Loading a bootloader into new chips which do not have one, or have somehow lost theirs (note however that you can buy pre-loaded ATmega328’s from many sources at a small premium)
- As an alternative program loading scheme when the tiny amount of program memory used by the bootloader must be re-claimed for a particularly large sketch
- Programing alternate targets to which the Arduino libraries have been partially ported, especially resource-constrained ones where the bootloader takes up a larger fraction of the total memory, such as the the ATtiny25/45/85
- Replacing or modifying the firmware of an on-board USB-serial micro such as the 16u2 on an Uno to perform a different function, such as emulate a keyboard or mouse. However, this chip can also be programmed over its USB interface in DFU mode.
- Programming other non-Arduino devices used in a project (though these often have a different ISP scheme than the ATmega series).
But a typical project using purchased board(s) will involve none of these.
As jfpoilpret points out, a very popular way of interfacing chips to a microcontroller is the Serial Peripheral Inteface, or SPI. Like ISP, this is a synchronous (has a distinct clock line) serial interface with a master and a slave, a mode or enable pin, and a distinct data line in each direction. Some Arduinos use MCUs like the ATmega328p which re-use their SPI pins for ISP (with the reset functioning as the mode pin).
In effect, ISP is a sort of special «SPI-like» interface mode for programming an ATmega — often using the master-mode SPI engine of the programer to do the actual transfers. But «ISP» applies only when programming an ATmega — the more generic case of communicating with a peripheral would be «SPI».
It’s my impression that most GSM modules use asynchronous serial interfaces (ie, utilizing a UART engine), but there may be some which use SPI or other synchronous schemes, at least as an option.