====== Arduino Uno: распиновка, схема подключения и программирование ======
[[amp>product/arduino-uno?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|Arduino Uno]] — флагманская платформа для разработки на языке программирования С++.
{{ :products:arduino-uno:arduino-uno-overview.png?nolink |}}
Uno выполнена на микроконтроллере ATmega328P с тактовой частотой 16 МГц. На плате предусмотрены 20 портов входа-выхода для подключения внешних устройств, например плат расширения или датчиков.
===== Видеообзор =====
{{youtube>-M_L0HWBLAE?large}}
===== Подключение и настройка =====
==== Шаг 1 ====
Подключите плату к компьютеру по USB. Для коммуникации используйте [[amp>product/usb-cable?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|кабель USB (A — B)]].{{:products:arduino-uno:arduino-uno-hardware.png?nolink|}}
==== Шаг 2 ====
Установите и настройте интегрированную среду разработки [[:articles:arduino-ide-install|Arduino IDE]].
==== Что-то пошло не так? ====
* [[установка-и-настройка-arduino-ide:arduino-uno-restore|У меня не появляется новых устройств при подключении Uno]]
* [[установка-и-настройка-arduino-ide:arduino-unknown-device|У меня «Неизвестное устройство» вместо Uno]]
* [[установка-и-настройка-arduino-ide:arduino-uno-update-16u2#прошивка_микроконтроллера_atmega16u2|У меня появилось устройство «ATmega16U2» вместо Uno]]
===== Пример работы =====
В качестве примера повторим первый эксперимент [[:конспект-arduino:светильник-с-управляемой-яркостью|«Маячок»]] из набора [[amp>product/matryoshka-z?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|Матрёшка]]. На плате уже есть встроенный пользовательский светодиод ''L'', подключенный к ''13'' пину микроконтроллера.
void setup() {
// Устанавливаем пин светодиода в режим выхода.
// Используем определение LED_BUILTIN,
// которое содержит в себе пин светодиода
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// Включаем светодиод
digitalWrite(LED_BUILTIN, HIGH);
// Ждём пол секунды
delay(500);
// Выключаем светодиод
digitalWrite(LED_BUILTIN, LOW);
// Ждём пол секунды
delay(1000);
}
После загрузки программы встроенный светодиод ''L'' начнёт мигать раз в секунду.
{{ :products:arduino-uno:arduino-uno-blink.gif?nolink |}}
Это значит, всё получилось, и можно смело переходить к [[мини-проекты-arduino-breadboard:оглавление|другим экспериментам на Ардуино]].
===== Элементы платы =====
{{ :products:arduino-uno:arduino-uno-annotation.png?nolink |}}
==== Микроконтроллер ATmega328P ====
Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — {{ :products:arduino-uno:atmega328p-datasheet.pdf |ATmega328P}} на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:
* 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
* 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
* 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.
==== Микроконтроллер ATmega16U2 ====
Микроконтроллер [[#микроконтроллер_atmega328p|ATmega328P]] не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер {{ :products:arduino-uno:atmega16u2-datasheet.pdf |ATmega16U2}} с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.
[[#микроконтроллер_atmega328p|Микроконтроллер ATmega328P]] общается с ПК через [[#микроконтроллер_atmega16u2|сопроцессор ATmega16U2]] по интерфейсу UART используя сигналы ''RX'' и ''TX'', которые параллельно выведены на контакты ''0'' и ''1'' платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.
==== Светодиодная индикация ====
^ Имя светодиода ^ Назначение ^
| ON |Индикатор питания платформы. |
| L | Пользовательский светодиод на ''13'' пине микроконтроллера. Используйте определение ''LED_BUILTIN'' для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.|
| RX и TX |Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов ''0'' и ''1''.|
==== Порт USB Type-B ====
Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится [[amp>product/usb-cable?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|кабель USB (A — B)]].
==== Разъём питания DC ====
Коннектор DC Barrel Jack для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.
==== Понижающий регулятор 5V ====
Понижающий линейный преобразователь {{ :products:arduino-uno:ncp1117st50t3g-datasheet.pdf |NCP1117ST50T3G}} обеспечивает питание микроконтроллера и другой логики платы при подключении питания через [[#разъём_питания_dc|разъём питания DC]] или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.
==== Понижающий регулятор 3V3 ====
Понижающий линейный преобразователь {{ :products:arduino-uno:lp2985-33dbvr-datasheet.pdf |LP2985-33DBVR}} обеспечивает напряжение на пине ''3V3''. Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.
==== Кнопка сброса ====
Кнопка предназначена для ручного сброса прошивки — аналог кнопки ''RESET'' обычного компьютера.
==== ICSP-разъём ATmega328P ====
ICSP-разъём выполняет две полезные функции:
- Используется для передачи сигнальных пинов интерфейса SPI при подключении [[amp>collection/arduino-shields?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|Arduino Shield]]’ов или других [[amp>collection/boards?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|плат расширения]]. Линии ICSP-разъёма также продублированы на цифровых пинах ''SS/10'', ''MOSI/11'', ''MISO/12'' и ''SCK/13''.
- Предназначен для загрузки прошивки в микроконтроллер [[#микроконтроллер_atmega328p|ATmega328P]] через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет [[#порт_usb_type-b|прошивать платформу по USB]].
А подробности распиновки [[#распиновка|читайте в соответствующем разделе]].
==== ICSP-разъём ATmega16U2 ====
ICSP-разъём предназначен для программирования микроконтроллера [[#микроконтроллер_atmega16u2|ATmega16U2]]. А подробности распиновки [[#распиновка|читайте в соответствующем разделе]].
===== Распиновка =====
[[this>_media/products:arduino-uno:arduino-uno-pinout.pdf|{{:products:arduino-uno:arduino-uno-pinout.png}}]]
==== Пины питания ====
* **VIN:** Входной пин для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.
* **5V:** Выходной пин от [[#понижающий_регулятор_5v|стабилизатора напряжения]] с выходом 5 вольт и максимальным током 1 А. Регулятор обеспечивает питание микроконтроллера и другой обвязки платы.
* **3V3:** Выходной пин от [[#понижающий_регулятор_3v3|стабилизатора напряжения]] с выходом 3,3 вольта и максимальным током 150 мА.
* **IOREF:** Вывод предоставляет [[amp>collection/arduino-shields?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|платам расширения]] информацию о рабочем напряжении микроконтроллера. В нашем случае рабочее напряжение платформы 5 вольт.
* **AREF:** Пин для подключения внешнего опорного напряжения АЦП относительно которого происходят аналоговые измерения при использовании функции [[https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/|analogReference()]] с параметром «EXTERNAL».
* **GND:** Выводы земли.
==== Порты ввода/вывода ====
* **Пины общего назначения:** 20 пинов: ''0''–''19''\\ Логический уровень единицы — 5 В, нуля — 0 В. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
* **АЦП:** 6 пинов: ''14''–''19'' / ''A0''–''A5'' \\ Позволяет представить аналоговое напряжение в виде цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В, при подаче большего напряжения микроконтроллер может выйти из строя.
* **ШИМ:** 6 пинов: ''3'', ''5'', ''6'' и ''9''–''11''\\ Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. Разрядность ШИМ не меняется и установлена в 8 бит.
* **I²C** Для общения контроллера c [[amp>collection/boards?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|сенсорами]] по интерфейсу I²C.
* **I²C**: пины ''SDA/18/A4'' и ''SCL0/19/A5''
* **SPI** Для общения контроллера c [[amp>collection/boards?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|сенсорами]] по интерфейсу SPI.
* **SPI**: пины ''MOSI/11'', ''MISO/12'' и ''SCK/13''
* **Serial/UART** Для общения контроллера c [[amp>collection/boards?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=arduino-uno&utm_medium=wiki|сенсорами]] по интерфейсу UART.
* **Serial**: пины ''TX1/1'' и ''RX1/0''. Контакты также соединены с соответствующими выводами сопроцессора [[#микроконтроллер_atmega16u2|ATmega16U2]] для общения платы по USB. Во время прошивки и отладки программы через ПК, не используйте эти пины в своём проекте.
===== Принципиальная и монтажная схемы =====
{{:products:arduino-uno:arduino-uno-schematic.png?direct&460 }}
{{ :products:arduino-uno:arduino-uno-layout-top.png?direct&210}}
{{ :products:arduino-uno:arduino-uno-layout-bottom.png?direct&210}}
===== Габаритный чертёж =====
[[this>_media/products:arduino-uno:arduino-uno-dimensions.pdf|{{:products:arduino-uno:arduino-uno-dimensions.png}}]]
===== Характеристики =====
* Микроконтроллер: ATmega328P
* Ядро: 8-битный AVR
* Тактовая частота: 16 МГц
* Flash-память: 32 КБ
* RAM-память: 2 КБ
* EEPROM-память: 1 КБ
* Пины ввода-вывода: 20
* Пины с прерыванием: 2
* Пины с АЦП: 6
* Разрядность АЦП: 10 бит
* Пины с ШИМ: 6
* Разрядность ШИМ: 8 бит
* Аппаратные интерфейсы: 1× UART, 1× I²C, 1× SPI
* Напряжение логических уровней: 5 В
* Входное напряжение питания:
* через USB: 5 В
* через DC-разъём или пин Vin: 7,5–12 В
* Максимальный выходной ток пина 3V3: 150 мА
* Максимальный выходной ток пина 5V: 1 А
* Размеры: 69×53 мм
===== Ресурсы =====
* [[amp>product/arduino-uno?utm_source=man&utm_campaign=arduino_uno&utm_medium=wiki|Arduino Uno ]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/arduino-uno.svg|Векторное изображение Arduino Uno]]
* {{ :products:arduino-uno:atmega328p-datasheet.pdf |Datasheet на микроконтроллер Atmega328P}}
* {{ :products:arduino-uno:atmega16u2-datasheet.pdf |Datasheet на микроконтроллер Atmega16U2}}