====== 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}}