Arduino Uno
Arduino Uno — это устройство на основе микроконтроллера ATmega328 (datasheet). В его состав входит все необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (из них 6 могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъем USB, разъем питания, разъем для внутрисхемного программирования (ICSP) и кнопка сброса. Для начала работы с уcтройством достаточно просто подать питание от AC/DC-адаптера или батарейки, либо подключить его к компьютеру посредством USB-кабеля.
В отличие от всех предыдущих плат Ардуино, Uno в качестве преобразователя интерфейсов USB-UART использует микроконтроллер ATmega16U2 (ATmega8U2 до версии R2) вместо микросхемы FTDI.
На плате Arduino Uno версии R2 для упрощения процесса обновления прошивки добавлен резистор, подтягивающий к земле линию HWB микроконтроллера 8U2.
Изменения на плате версии R3 перечислены ниже:
- Распиновка 1.0: добавлены выводы SDA и SCL (возле вывода AREF), а также два новых вывода, расположенных возле вывода RESET. Первый — IOREF — позволяет платам расширения подстраиваться под рабочее напряжение Ардуино. Данный вывод предусмотрен для совместимости плат расширения как с 5В-Ардуино на базе микроконтроллеров AVR, так и с 3.3В-платами Arduino Due. Второй вывод ни к чему не подсоединен и зарезервирован для будущих целей.
- Улучшена помехоустойчивость цепи сброса.
- Микроконтроллер ATmega8U2 заменен на ATmega16U2.
"Uno" (в переводе с итальянского — "один") назван по случаю предстоящего выпуска Arduino 1.0. Совместно с Arduino 1.0 данные устройства будут базовыми версиями Ардуино. Uno — эталонная модель платформы Arduino и является последней в серии USB-плат; для сравнения с предыдущими версиями, см. список плат Arduino.
Характеристики
Микроконтроллер | ATmega328 |
Рабочее напряжение | 5В |
Напряжение питания (рекомендуемое) | 7-12В |
Напряжение питания (предельное) | 6-20В |
Цифровые входы/выходы | 14 (из них 6 могут использоваться в качестве ШИМ-выходов) |
Аналоговые входы | 6 |
Максимальный ток одного вывода | 40 мА |
Максимальный выходной ток вывода 3.3V | 50 мА |
Flash-память | 32 КБ (ATmega328) из которых 0.5 КБ используются загрузчиком |
SRAM | 2 КБ (ATmega328) |
EEPROM | 1 КБ (ATmega328) |
Тактовая частота | 16 МГц |
Схема и исходный проект
Файлы EAGLE: arduino-uno-Rev3-reference-design.zip (ПРИМЕЧАНИЕ: совместимо с версиями Eagle не ниже 6.0)
Примечание: В файлах проекта Ардуино могут фигурировать микроконтроллеры ATmega8, 168 или 328. Например, в последних моделях используется микроконтроллер ATmega328, но на схеме может быть указан микроконтроллер ATmega8. Это не является ошибкой, поскольку все три микросхемы полностью совместимы между собой по выводам.
Питание
Arduino Uno может быть запитан от USB либо от внешнего источника питания — тип источника выбирается автоматически.
В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера (диаметр — 2.1мм, центральный контакт — положительный) необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.
Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.
Ниже перечислены выводы питания, расположенные на плате:
- VIN. Напряжение, поступающее в Arduino непосредственно от внешнего источника питания (не связано с 5В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера.
- 5V. На вывод поступает напряжение 5В от стабилизатора напряжения на плате, вне независимости от того, как запитано устройство: от адаптера (7 — 12В), от USB (5В) или через вывод VIN (7 — 12В). Запитывать устройство через выводы 5V или 3V3 не рекомендуется, поскольку в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
- 3V3. 3.3В, поступающие от стабилизатора напряжения на плате. Максимальный ток, потребляемый от этого вывода, составляет 50 мА.
- GND. Выводы земли.
- IOREF. Этот вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера Ардуино. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5В, так и с 3.3В-устройствами.
Память
Объем флеш-памяти ATmega328 составляет 32 КБ (из которых 0.5 КБ используются загрузчиком). Микроконтроллер также имеет 2 КБ памяти SRAM и 1 КБ EEPROM (из которой можно считывать или записывать информацию с помощью библиотеки EEPROM).
Входы и выходы
С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов может работать в качестве входа или выхода. Уровень напряжения на выводах ограничен 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо этого, некоторые выводы Ардуино могут выполнять дополнительные функции:
- Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Эти выводы соединены с соответствующими выводами микросхемы ATmega8U2, выполняющей роль преобразователя USB-UART.
- Внешние прерывания: выводы 2 и 3. Могут служить источниками прерываний, возникающих при фронте, спаде или при низком уровне сигнала на этих выводах. Для получения дополнительной информации см. функцию attachInterrupt().
- ШИМ: выводы 3, 5, 6, 9, 10 и 11. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
- Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). С применением библиотеки SPI данные выводы могут осуществлять связь по интерфейсу SPI.
- Светодиод: 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW — выключается.
В Arduino Uno есть 6 аналоговых входов (A0 — A5), каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Тем не менее, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference(). Помимо этого, некоторые из аналоговых входов имеют дополнительные функции:
- TWI: вывод A4 или SDA и вывод A5 или SCL. С использованием библиотеки Wire данные выводы могут осуществлять связь по интерфейсу TWI.
Помимо перечисленных на плате существует еще несколько выводов:
- AREF. Опорное напряжение для аналоговых входов. Может задействоваться функцией analogReference().
- Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения
Смотрите также соответствие выводов Arduino и ATmega328. Распиновка для микроконтроллеров ATmega8, 168 и 328 идентична.
Связь
Arduino Uno предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega328 имеется приемопередатчик UART, позволяющий осуществлять последовательную связь посредством цифровых выводов 0 (RX) и 1 (TX). Микроконтроллер ATmega16U2 на плате обеспечивает связь этого приемопередатчика с USB-портом компьютера, и при подключении к ПК позволяет Ардуино определяться как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется. На платформе Windows необходим только соответствующий .inf-файл. В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных через микросхему-преобразователь USB-UART во время USB-соединения с компьютером, на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1, без использования USB-преобразователя, данные светодиоды не задействуются).
Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Arduino Uno.
В микроконтроллере ATmega328 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.
Программирование
Arduino Uno программируется с помощью программного обеспечения Ардуино (скачать). Для этого из меню Tools > Board необходимо выбрать "Arduino Uno" с микроконтроллером, соответствующим вашей плате. Для получения более подробной информации см. справку и примеры.
ATmega328 в Arduino Uno выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 (описание, заголовочные файлы C).
Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.
Исходный код прошивки микроконтроллера ATmega16U2 (или 8U2 на платах версии R1 и R2) находится в свободном доступе. Прошивка ATmega16U2/8U2 включает в себя DFU-загрузчик (Device Firmware Update), позволяющий обновлять прошивку микроконтроллера. Для активации режима DFU необходимо:
- На платах версии R1: замкнуть перемычку на обратной стороне платы (возле изображения Италии), после чего сбросить 8U2.
- На платах версий R2 и выше — для упрощения перехода в режим DFU присутствует резистор, подтягивающий к земле линию HWB микроконтроллера 8U2/16U2.
После перехода в DFU-режим для загрузки новой прошивки можно использовать программное обеспечение Atmel's FLIP (для Windows) или DFU programmer (для Mac OS X и Linux). Альтернативный вариант — прошить микроконтроллер через разъем для внутрисхемного программирования ISP с помощью внешнего программатора, однако в этом случае DFU-загрузчик затрется. Для получения более подробной информации см. эти инструкции, составленные пользователями.
Автоматический (программный) сброс
Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Uno спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов ATmega8U2/16U2, участвующий в управлении потоком данных (DTR), соединен с выводом RESET микроконтроллера ATmega328 через конденсатор номиналом 100 нФ. Когда на линии DTR появляется ноль, вывод RESET также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR.
Однако эта система может приводить и к другим последствиям. При подключении Uno к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой. После сброса на Arduino Uno активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.
На плате Uno существует дорожка (отмеченная как "RESET-EN"), разомкнув которую, можно отключить автоматический сброс микроконтроллера. Для повторного восстановления функции автоматического сброса необходимо спаять между собой выводы, расположенные по краям этой дорожки. Автоматический сброс также можно выключить, подключив резистор номиналом 110 Ом между выводом RESET и 5В; для получения более подробной информации см. соответствующую ветку форума.
Защита USB от перегрузок
В Arduino Uno есть восстанавливаемые предохранители, защищающие USB-порт компьютера от коротких замыканий и перегрузок. Несмотря на то, что большинство компьютеров имеют собственную защиту, такие предохранители обеспечивают дополнительный уровень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.
Физические характеристики
Максимальная длина и ширина печатной платы Uno составляет 6.9 см и 5.4 см соответственно, с учетом разъема USB и разъема питания, выступающих за пределы платы. Четыре крепежных отверстия позволяют прикреплять плату к поверхности или корпусу. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.
Arduino Uno: распиновка, схема подключения и программирование
Arduino Uno — флагманская платформа для разработки на языке программирования С++.
Uno выполнена на микроконтроллере ATmega328P с тактовой частотой 16 МГц. На плате предусмотрены 20 портов входа-выхода для подключения внешних устройств, например плат расширения или датчиков.
Видеообзор
Подключение и настройка
Шаг 1
Подключите плату к компьютеру по USB. Для коммуникации используйте кабель USB (A — B).
Шаг 2
Установите и настройте интегрированную среду разработки Arduino IDE.
Что-то пошло не так?
Пример работы
В качестве примера повторим первый эксперимент «Маячок» из набора Матрёшка. На плате уже есть встроенный пользовательский светодиод L , подключенный к 13 пину микроконтроллера.
После загрузки программы встроенный светодиод L начнёт мигать раз в секунду.
Это значит, всё получилось, и можно смело переходить к другим экспериментам на Ардуино.
Элементы платы
Микроконтроллер ATmega328P
Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц. Контроллер обладает тремя видами памяти:
Микроконтроллер ATmega16U2
Микроконтроллер ATmega328P не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.
Микроконтроллер ATmega328P общается с ПК через сопроцессор ATmega16U2 по интерфейсу UART используя сигналы RX и TX , которые параллельно выведены на контакты 0 и 1 платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
ON | Индикатор питания платформы. |
L | Пользовательский светодиод на 13 пине микроконтроллера. Используйте определение LED_BUILTIN для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается. |
RX и TX | Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов 0 и 1 . |
Порт USB Type-B
Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).
Разъём питания DC
Коннектор DC Barrel Jack для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.
Понижающий регулятор 5V
Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через разъём питания DC или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.
Понижающий регулятор 3V3
Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине 3V3 . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.
Кнопка сброса
Кнопка предназначена для ручного сброса прошивки — аналог кнопки RESET обычного компьютера.
ICSP-разъём ATmega328P
ICSP-разъём выполняет две полезные функции:
ICSP-разъём ATmega16U2
ICSP-разъём предназначен для программирования микроконтроллера ATmega16U2. А подробности распиновки читайте в соответствующем разделе.
UNO R3
The Arduino UNO is the best board to get started with electronics and coding. If this is your first experience tinkering with the platform, the UNO is the most robust board you can start playing with. The UNO is the most used and documented board of the whole Arduino family.
Arduino UNO is a microcontroller board based on the ATmega328P. It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz ceramic resonator, a USB connection, a power jack, an ICSP header and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started. You can tinker with your UNO without worrying too much about doing something wrong, worst case scenario you can replace the chip for a few dollars and start over again.
The classic high-performance, low-power AVR® microcontroller.
The ATmega328P can easily be replaced, as it is not soldered to the board.
The ATmega328P also features 1kb of EEPROM, a memory which is not erased when powered off.
The Arduino UNO features a barrel plug connector, that works great with a standard 9V battery.
Here you will find the technical specifications for the Arduino UNO R3.
Board | Name | Arduino UNO R3 |
---|---|---|
SKU | A000066 | |
Microcontroller | ATmega328P | |
USB connector | USB-B | |
Pins | Built-in LED Pin | 13 |
Digital I/O Pins | 14 | |
Analog input pins | 6 | |
PWM pins | 6 | |
Communication | UART | Yes |
I2C | Yes | |
SPI | Yes | |
Power | I/O Voltage | 5V |
Input voltage (nominal) | 7-12V | |
DC Current per I/O Pin | 20 mA | |
Power Supply Connector | Barrel Plug | |
Clock speed | Main Processor | ATmega328P 16 MHz |
USB-Serial Processor | ATmega16U2 16 MHz | |
Memory | ATmega328P | 2KB SRAM, 32KB FLASH, 1KB EEPROM |
Dimensions | Weight | 25 g |
Width | 53.4 mm | |
Length | 68.6 mm |
Software & Cloud
The following software tools allow you to program your board both online and offline.
Быстрый старт с Ардуино — отладочная плата Arduino UNO R3
Не являясь будучи программистом, радиолюбителю трудно использовать в своей практике микроконтроллеры, создавать для них платы и самостоятельно писать программы. И тут на помощь приходит всем уже известная и популярная платформа итальянских разработчиков «Ардуино» со всем разнообразием поддерживаемых ею отладочных плат и подключаемых различных модулей в виде датчиков, органов ввода-вывода и управления, и исполняемых устройств. Среда для разработки программ «Arduino IDE» так же является очень простой и удобной, а «Скетч» — так называется исходный текст программ, пишется на языке «Wiring-Processing». Имеется множество библиотек и примеров, и для начала можно совсем не знать язык программирования C/C++, на котором чаще всего пишутся программы для микроконтроллеров. Не обязательно вручную настраивать таймер-счётчик микроконтроллера для генерации ШИМ-сигнала или задавать режим аналого-цифрового преобразователя для считывания значений на аналоговых входах. Так же не надо напрямую работать с регистрами и запоминать, или всегда иметь под рукой все их названия. Для управления выводами микроконтроллера не нужно использовать битовые маски и совершать побитовые операции, так как в среде разработки каждый регистр порта ввода-вывода ассоциирован с определённым номером вывода отладочной платы. Большинство параметров уже задано по умолчанию и скрыто от пользователя, так что не придётся часами искать ошибку от неправильной установки какого-либо значения. При написании «скетча» можно копировать и соединять в одном проекте несколько примеров из разных библиотек, и изменяя номера выводов и значения задаваемых констант подстраивать всю программу под свои нужды. И что самое интересное, при всём этом написанную для одной платы программу можно использовать для другой, просто выбрав соответствующую плату в меню и заново скомпилировав проект.
Приобретение
На сайте уже есть статья с обзором отладочной платы «Arduino Pro Mini» и здесь мы рассмотрим самую распространённую из всех отладочных плат, поддерживаемых платформой Ардуино — это плата под названием «Arduino UNO». Плата была куплена на сайте Aliexpress и не является подлинной оригинальной итальянской платой, хотя это самый похожий и максимально приближённый образец, подобранный в интернет-магазине. Заказ делался в 2018 году и обошёлся в 12$ вместе с доставкой. Хотя этот вариант и стоит немного дороже остальных, но у него имеются преимущества по сравнению с дешёвыми подделками, о которых будет идти речь при сравнении разных плат:
Arduino UNO является самым подходящим вариантом для начала работы с платформой, так как она имеет средний размер, достаточное количество выводов микроконтроллера для большинства проектов и удобно организованные контакты портов ввода-вывода. И самое важное для быстрого старта работы с микроконтроллером — наличие встроенного программатора и интерфейса USB для прямого подключения к компьютеру. Arduino Uno — это аппаратное обеспечение со свободно распространяемыми файлами схем и чертежей. Каждый может изготовить подобную плату используя эти файлы с официального сайта проекта Ардуино. За невысокую цену в Китае можно найти как простые похожие изделия, так и почти подлинные платы на базе оригинальных микроконтроллеров. В конце будет произведено сравнение разных вариантов плат, а для начала рассмотрим характеристики отладочной платы Arduino UNO третьей ревизии.
Технические характеристики
Основные параметры платы Arduino UNO версии 3 приведены в таблице. Для более детального ознакомления с характеристиками платы следует посетить официальный сайт https://store.arduino.cc/usa/arduino-uno-rev3
Параметр | Значение |
---|---|
Рабочее напряжение | 5 Вольт |
Напряжение питания | 7 — 12 Вольт |
Установленный микроконтроллер | ATmega328P |
Количество цифровых выводов | 14 |
Число аналоговых входов | 6 |
Допустимый ток одного вывода | 20 мА |
Тактовая частота | 16 МГц |
- 5V – выход напряжения 5 В для питания внешних устройств;
- 3.3V – маломощный выход стабилизированного напряжения 3.3 В;
- GND – общий вывод;
- VIN – вывод для подачи внешнего напряжения питания для всей платы и подключённых модулей;
- IOREF – вывод, информирующий о значении напряжения высокого уровня портов ввода/вывода платы.
- AREF. Опорное напряжение для аналого-цифрового преобразователя микроконтроллера. Используется совместно с функцией analogReference () при написании скетчей.
- Reset. Подача низкого уровня на вывод Reset приводит к перезагрузке микроконтроллера. Обычно используется для добавления кнопки сброса к дополнительно устанавливаемым и подключаемым модулям.
Принципиальная схема отладочной платы Arduino UNO Rev3:
Распаковка — комплектация
Во время заказа платы был так же куплен сетевой адаптер для питания и кабель USB для подключения к компьютеру. Они были помещены в обычный полиэтиленовый пакет, находящийся в основной упаковке:
Сама плата находилась в жёстком антистатическом пакете и была герметично запечатана в нём:
Ознакомление
Блок питания имеет сетевую вилку европейского типа и разъём 2,1 мм с положительным центральным контактом:
Адаптер преобразует сетевое напряжение переменного тока 100-240 В частотой 50/60 Гц в постоянное стабилизированное напряжение 9 В с допустимым током нагрузки 0,85 А:
Пожалуй это самое оптимальное напряжение питания. При подаваемом напряжении ниже 7 Вольт плата может работать нестабильно, а при напряжении более 12 Вольт будет увеличиваться нагрев интегрального стабилизатора. При необходимости, для питания платы можно использовать любой другой адаптер с близкими характеристиками.
В комплекте так же довольно качественный USB-кабель, который имеет длину 1,8 м и разъём типа «B» для подключения к плате:
Хотя плата и изготовлена в Китае, уровень производства довольно высокий, монтаж выполнен ровно и красиво без каких-либо видимых дефектов. На плате синего цвета установлен оригинальный микроконтроллер ATmega16U2 преобразователя USB-UART и основной микроконтроллер ATmega328P в DIP-корпусе, вставленный в панельку::
С передней стороны платы расположены разъём для подачи питания и разъём USB-B, возле которого в самом углу находится кнопка сброса:
Рядом находится шести-контактный ICSP-разъём внутрисхемного программирования микроконтроллера ATmega16U2 преобразователя интерфейса, три индикаторных светодиода обозначенные как «L», «TX», «RX», перемычка «RESET-ON», кварцевый резонатор на 16 МГц, само-восстанавливающийся предохранитель на 500 мА и интегральные стабилизаторы питания:
Плата Arduino Uno может питаться через USB-соединение или от внешнего источника питания. Источник питания выбирается автоматически. Внешнее (не USB) питание может подаваться либо от адаптера, либо от аккумулятора. Адаптер можно подключить, вставив штекер 2,1 мм в разъем питания платы. Выводы от батареи могут быть подключены к контактам GND и Vin разъема POWER. На контакт «5 В» выводится напряжение +5 В от установленного на плате интегрального стабилизатора.
Выводы платы с номерами от 0 до 13 являются цифровыми. Это означает, что с них можно считывать и подавать на них только два вида сигналов: HIGH и LOW, нуль или единицу. Некоторые цифровые выводы поддерживают ШИМ и на плате они обозначены знаком «
«. Все цифровые выводы расположены сбоку в один ряд:
Следуя далее по периметру, с задней стороны платы находится индикаторный светодиод наличия питания и ещё один шести-контактный разъём внутрисхемного программирования, уже для основного микроконтроллера ATmega328P. С его помощью можно записать загрузчик в пустой микроконтроллер в обход установленного программатора:
Аналоговые входы Arduino Uno обозначены как A0-A5 и являются входами для встроенного аналого-цифрового преобразователя (АЦП) микроконтроллера, обеспечивающего 10-битную разрядность. По умолчанию измеряемое значение должно быть в пределах от 0 до 5 вольт, хотя возможно изменить верхний предел диапазона, используя вывод AREF и функцию analogReference (). Выводы с аналоговыми входами так же можно использовать как цифровые. Они расположены с другого боку от цифровых выводов рядом с выводами питания:
Некоторые выводы совмещают дополнительные функции и могут быть использованы различными модулями для связи с микроконтроллером:
- Последовательный порт: 0 (RX) и 1 (TX). Используется для приема (RX) и передачи (TX) последовательных данных. Эти контакты внутренне подключены к соответствующим контактам микросхемы ATmega16U2 преобразователя интерфейса USB-to-TTL.
- Внешние прерывания: 2 и 3. Эти выводы могут быть сконфигурированы для запуска прерывания по низкому уровню, нарастающему или спадающему фронту, или по изменению значения.
- ШИМ: 3, 5, 6, 9, 10 и 11. Обеспечивает 8-битную ШИМ на этих выводах.
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Эти выводы используются для связи по SPI протоколу.
- Светодиод: 13. На плате имеется встроенный светодиод, подключённый между общим проводом и цифровым выводом 13.
- TWI: вывод A4 или SDA и вывод A5 или SCL. Поддержка TWI связи по двухпроводному соединению.
Соответствие выводов отладочной платы Arduino UNO выводам микроконтроллера ATmega328P можно посмотреть на следующем чертеже:
Снизу плата закрашена белым цветом и оставлены только синие надписи и логотип «Arduino». На плате написано что она изготовлена в Италии и является оригинальной, хотя в конце будет произведено сравнение подделок и станет понятно что это не подлинная плата из Италии:
Подключение к компьютеру
Плата Uno версии R3 отличается от других плат тем, что не использует микросхему конвертера FTDI USB-to-serial. Вместо этого она оснащена микроконтроллером ATmega16U2, запрограммированным как преобразователь USB-последовательный порт. Arduino/Genuino Uno имеет ряд средств для связи с компьютером, другой платой Arduino или другими микроконтроллерами. ATmega328 обеспечивает последовательную связь UART TTL (5 В), которая доступна на цифровых выводах 0 (RX) и 1 (TX). ATmega16U2 на плате преобразовывает эту последовательную связь в USB соединение и выглядит как виртуальный COM-порт для программного обеспечения на компьютере. Прошивка ATmega16U2 использует стандартные драйверы USB COM, и дополнительный драйвер не требуется.
Плату можно запустить, подключив к ней адаптер питания, но при таком включении она будет работать автономно, без связи с компьютером, выполняя записанную в основной микроконтроллер программу:
После подключения USB-кабеля плата получает питание от компьютера, зажигается зелёный светодиод и запускаются микроконтроллеры:
В компьютере сразу определяется USB-устройство и опознаётся, что это Arduino UNO:
Создаётся точка восстановления системы и начинается установка стандартного драйвера для последовательного порта:
После успешной установки драйвера плата Arduino UNO появляется в списке портов диспетчера устройств. В данном случае был добавлен виртуальный последовательный порт под номером COM3:
Открыв свойства порта можно детально посмотреть характеристики установленного драйвера и соответствующего ему оборудования:
После того как драйвер установлен и плата опознана, можно запустить среду разработки и начать писать программы или использовать готовые примеры, которые имеются на большинство случаев. Среду разработки можно бесплатно скачать с официального сайта проекта Ардуино по ссылке https://www.arduino.cc/en/main/software где имеются версии для Windows, Mac OS X и Linux. Для Windows можно скачать установщик, аппликацию или ZIP-файл для портативной работы. При запуске показывается логотип Arduino и краткая информация:
Программное обеспечение Arduino IDE включает в себя монитор последовательного порта, который позволяет отправлять и принимать простые текстовые данные. Индикаторы RX и TX на плате будут мигать, когда данные передаются через USB-Serial чип и USB-соединение с компьютером, но не при последовательной связи на контактах 0 и 1. Для программирования платы Uno в Arduino Software IDE на вкладке «Tools» > «Board» нужно выбрать «Arduino/Genuino Uno». В данном случае использовалась версия программы 1.8.5:
Далее на вкладке «Tools» > «Port» следует выбрать порт, к которому физически подключена плата:
Можно проверить правильность выбора и соединений нажав на пункт «Tools» > «Get Board Info» при подключённой и работающей плате:
При правильном подключении и корректной установке будет показана информация о плате в виде названия, VID, PID и серийного номера:
Первая программа
Микроконтроллер ATmega328P на Arduino Uno поставляется с запрограммированным загрузчиком, который позволяет загружать в него новый код без использования внешнего аппаратного программатора. Плата Arduino Uno имеет возможность программного сброса. Вместо того, чтобы требовать физического нажатия кнопки сброса перед загрузкой скетча, плата Arduino/Genuino Uno разработана таким образом, чтобы можно было произвести сброс с помощью программного обеспечения, работающего на подключенном компьютере. Одна из аппаратных линий управления потоком (DTR) ATmega16U2 подключена к линии сброса ATmega328P через конденсатор на 100 нанофарад. Когда на этой линии появляется низкий уровень сигнала, происходит сброс чипа и его перезагрузка. Программное обеспечение Arduino IDE использует эту возможность, чтобы можно было загружать скетч, просто нажимая кнопку загрузки на панели инструментов интерфейса. Плата Uno содержит перемычку, которую можно обрезать, чтобы отключить программный сброс. Она помечена как «RESET-ON». Можно также обойти загрузчик и запрограммировать микроконтроллер через разъём ICSP (In-Circuit Serial Programming), установленный на плате, используя Arduino ISP или другой аналогичный внутрисхемный ISP-программатор.
Для примера будет показано как очень просто можно мигать установленным на плате светодиодом с заданным в тексте программы полупериодом в миллисекундах. Вначале текста объявляется переменная для хранения состояния светодиода. Сама программа Ардуино как правило состоит из двух основных и обязательных частей — процедур:
Первая процедура называется setup() и в ней происходит настройка и инициализация микроконтроллера. Вторая процедура loop() основной цикл, в котором циклически происходят все действия во время работы микроконтроллера. Обе процедуры могут быть пустыми, но они обязательно должны присутствовать, так как при их вызове происходят невидимые, скрытые от пользователя-программиста действия, необходимые для работы на платформе Ардуино. В данном случае для мигания светодиодом в процедуре setup() назначается вывод для подключения светодиода, как цифровой выход, а в процедуре loop() происходит циклическая установка на этом выходе низкого и высокого уровня с задержкой между переключениями в 1000 миллисекунд, что в итоге даёт период мигания в две секунды:
Перед загрузкой программы прямо из среды разработки, следует подключить отладочную плату к компьютеру с помощью кабеля USB:
После нажатия в левом верхнем углу кнопки со стрелкой и названием «Upload» происходит компиляция и загрузка написанного скетча, с последующим информированием об используемом для успешной работы программы, объёме оперативной и программной памяти микроконтроллера:
При успешном завершение всех операций микроконтроллер сразу же начинает выполнять программу и установленный на плате светодиод мигает с периодом в две секунды:
Тот же самый эффект наблюдается при питании платы от сетевого адаптера, без подключения кабеля к USB-порту. Светодиод мигает, а программа, загруженная в микроконтроллер будет выполнятся автономно, без связи с компьютером и возможности считывать или отправлять данные по последовательному порту:
Программы так же можно писать на чистом языке программирования «C» без использования предопределённых функций и процедур Ардуино, но рассмотренные ранее обязательные процедуры настройки и бесконечного цикла должны присутствовать во всех написанных скетчах. Рассмотренная выше простая программа мигания светодиодом будет выглядеть следующим образом:
При компиляции такого варианта исполняемый код получается меньшего размера, да и сама программа будет выполнятся быстрее при прямом обращении к регистрам порта, но при этом теряется удобство написания и универсальность исходного текста для разных вариантов плат Ардуино:
Замена/Установка нового микроконтроллера
Платы Arduino, кроме использования в конечных разработках, являются в первую очередь отладочными платами для удобного процесса отладки и доработки программ, с уже подключёнными датчиками и модулями. Arduino UNO выделяется тем, что имеет DIP-панельку для установки микроконтроллера, который после отладки в случае необходимости можно перенести на готовое устройство, а на отладочную плату установить новый микроконтроллер и дальше работать уже с ним. Но при установке нового микроконтроллера, он не будет работать и взаимодействовать со средой Arduino по USB-подключению. Для того, что бы можно было загружать скетчи по USB, в микроконтроллере должна быть записана программа-загрузчик bootloader, которая может программировать микроконтроллер по UART-интерфейсу. В среде разработки имеется возможность записать bootloader в чистый микроконтроллер, но при обычном подключении платы через USB-кабель это не сработает и будет выдана ошибка:
Для того, что бы записать загрузчик и установить необходимые надстроечные FUSE-биты можно использовать любой ICSP-программатор внутрисхемного программирования. Подойдёт даже самодельный пассивный COM-ISP программатор, схема и возможность добавления в среду Arduino IDE которого описаны в ранней статье «Arduino Pro Mini и UniProf». Программатор подключается к плате UNO через шести-контактный ICSP-разъём, находящийся возле светодиода индикатора питания. При этом если на программаторе предусмотрено наличие питания для программируемого микроконтроллера, то нет надобности подключать USB-кабель или дополнительное питание и микроконтроллер будет питаться от программатора:
В среде разработки на вкладке «Tools» > «Programmer» нужно выбрать используемый программатор и на этой же вкладке «Tools» > «Port» указать порт, к которому он подключён:
После завершения этих действий можно записать bootloader. При этом всё так же должна быть выбрана плата «Arduino/Genuino Uno» а на вкладке «Tools» нужно нажать на пункт «Burn Bootloader»:
После этого начнётся процесс записи программы-загрузчика в память микроконтроллера и будут установлены необходимые для корректное работы FUSE-биты. В строке состояния можно видеть текущую задачу, а по завершении будет показано уведомление об успешной записи bootloader-а:
Запустив программу UniProf и прочитав значения установочных ячеек, можно видеть запрограммированные FUSE и LOCK-биты:
После этого новый микроконтроллер можно использовать в составе отладочной платы Arduino UNO и программировать его через USB-интерфейс, одним нажатием, прямо из среды Arduino IDE.
Заключение-сравнение
Для подведения итога и лучшего понимания стоит ли приобретать отладочную плату в Китае было произведено сравнение оригинальной, приобретённой и дешёвой подделки. Между рассматриваемой в данной статье и оригинальной платой существенных различий нет. С верхней стороны видно, что расположение и обозначение радиоэлементов совпадает, немного отличается маркировка и цвет самой платы, а самое главное отличие это разъёмы GPIO и качество монтажа:
На подлинной итальянской плате GPIO-разъёмы с каждой стороны представляет из себя единое целое без разрывов, и маркировка выводов кроме платы продублирована и на самих разъёмах:
С нижней стороны разница в расцветке и маркировке платы более заметна и ярко выражена. На купленной плате заметны так же следы пайки и остатки флюса:
В Китае кроме схожих с оригинальными и полностью совместимыми с платформой Arduino, по очень низкой цене встречаются разнообразные клоны и подделки. Основное их отличие от оригинальной и рассматриваемой здесь платы является отсутствие второго микроконтроллера преобразователя интерфейса, и его роль выполняет микросхема CH340, что иногда требует установку в операционную систему дополнительных драйверов. Второе главное отличие это отсутствие DIP-панельки для основного микроконтроллера и его использование в корпусе поверхностного монтажа. Это сводит на нет основное достоинство большой по размерам платы Arduino UNO с возможностью изъятия и замены микроконтроллера:
Самым близким родственником платы Arduino UNO по сходству и функционалу является плата Arduino Nano. Она так же имеет стабилизатор напряжения питания и может программироваться по USB. Основные отличия заключаются в размерах самих плат, в типе корпуса установленного микроконтроллера, в типе USB-разъёма и разъёмов GPIO. Плата Ардуино Нано имеет гораздо меньшие габариты и может пригодиться там, где важен конечный размер устройства. В связи с меньшими размерами разъём для подключения к компьютеру установлен USB Mini-B. Разъёмы GPIO так же имеют тип «папа» и установлены в виде ряда штырьков в отличие от разъёмов типа «мама» на плате UNO. Так же из за меньшего размера на плате Nano установлен микроконтроллер поверхностного монтажа с двумя дополнительными аналоговыми входами, но отсутствует возможность его быстрой замены путём вытаскивания из панельки. На плате Nano нет в наличии стабилизатора напряжения на 3,3 Вольт: