Arduino Uno — это плата микроконтроллера с открытым исходным кодом на основе микроконтроллера (MCU) Microchip ATmega328P , разработанная Arduino.cc и первоначально выпущенная в 2010 году. [2] [3] Плата микроконтроллера оснащена наборами цифровых и аналоговых входных/выходных (I/O) контактов, которые могут быть подключены к различным платам расширения (шилдам) и другим схемам. [1] Плата имеет 14 цифровых входных/выходных контактов (шесть из них поддерживают выход ШИМ ), 6 аналоговых входных/выходных контактов и программируется с помощью Arduino IDE (интегрированная среда разработки) через USB-кабель типа B. [4] Она может питаться от USB-кабеля или цилиндрического разъема, который принимает напряжение от 7 до 20 вольт, например, прямоугольную 9-вольтовую батарею . Она имеет тот же микроконтроллер, что и плата Arduino Nano , и те же разъемы, что и плата Leonardo. [5] [6] Эталонный дизайн оборудования распространяется по лицензии Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Также доступны файлы макета и производства для некоторых версий оборудования.
Слово «uno» означает «один» на итальянском языке и было выбрано, чтобы отметить крупную переработку аппаратного и программного обеспечения Arduino. [7] Плата Uno была преемницей выпуска Duemilanove и была 9-й версией в серии плат Arduino на базе USB. [8] Версия 1.0 Arduino IDE для платы Arduino Uno теперь эволюционировала до более новых версий. [4] ATmega328 на плате поставляется с предварительно запрограммированным загрузчиком , который позволяет загружать на него новый код без использования внешнего аппаратного программатора. [3]
Хотя Uno общается с помощью оригинального протокола STK500, [1] он отличается от всех предыдущих плат тем, что не использует последовательный чип FTDI USB-to-UART. Вместо этого он использует Atmega16U2 (Atmega8U2 до версии R2), запрограммированный как преобразователь USB-to-serial . [9]
История
Проект Arduino начался в Interaction Design Institute Ivrea (IDII) в Ивреа , Италия. В то время студенты использовали микроконтроллер BASIC Stamp , стоимость которого была значительной для многих студентов. В 2003 году Эрнандо Барраган создал платформу разработки Wiring в качестве магистерской диссертации в IDII под руководством Массимо Банци и Кейси Реаса, которые известны работой над языком Processing . Целью проекта было создание простых и недорогих инструментов для создания цифровых проектов неинженерами. Платформа Wiring состояла из печатной платы (PCB) с микроконтроллером ATmega 168, IDE на основе Processing и библиотечных функций для легкого программирования микроконтроллера. [10]
В 2003 году Массимо Банци вместе с Дэвидом Меллисом, другим студентом IDII, и Дэвидом Куартиеллесом добавили поддержку более дешевого микроконтроллера ATmega8 в Wiring. Но вместо того, чтобы продолжить работу над Wiring, они разветвили проект и переименовали его в Arduino . Ранние платы Arduino использовали последовательный чип FTDI USB-to-UART и ATmega 168. [10] Uno отличалась от всех предыдущих плат наличием микроконтроллера ATmega328P и ATmega16U2 (Atmega8U2 до версии R2), запрограммированного как преобразователь USB-to-serial.
В июне 2023 года Arduino выпустила две новые версии Uno: R4 Minima и R4 Wifi. Они знаменуют собой отход от предыдущих плат, поскольку они используют микроконтроллер Renesas RA4M1 ARM Cortex M4, а R4 Wifi — сопроцессор Espressif ESP32-S3 -MINI. Эти версии совместимы по форм-фактору, выводам и питанию с версиями R1–R3, поэтому их можно будет в значительной степени заменить. [11]
Разъем USB. Спецификация шины USB имеет диапазон напряжений от 4,75 до 5,25 вольт. Официальные платы Uno имеют разъем USB-B, но платы сторонних производителей могут иметь разъем miniUSB / microUSB / USB-C.
Разъем barrel jack 5.5mm/2.1mm . Официальные платы Uno поддерживают напряжение от 6 до 20 вольт, хотя рекомендуется напряжение от 7 до 12 вольт. Максимальное напряжение для плат Uno сторонних производителей различается в зависимости от производителя, поскольку используются различные регуляторы напряжения, каждый из которых имеет разный максимальный входной номинал. Питание на этот разъем подается через последовательный диод перед подключением к VIN для защиты от случайных ситуаций с обратным напряжением.
Штырь VIN на щитке разъема. Он имеет аналогичный диапазон напряжений гнезда barrel. Поскольку этот штырь не имеет защиты от обратного напряжения, питание может быть введено или извлечено из этого штыря. При подаче питания на штырь VIN требуется внешний последовательный диод в случае использования гнезда barrel. Когда плата питается от гнезда barrel, питание может быть извлечено из этого штыря. [14]
Уно Р4
Доступны две платы Uno R4: Uno R4 Minima и Uno R4 WiFi. Последняя имеет сопроцессор WiFi и светодиодную матрицу, а Minima — нет.
Общие характеристики плат Uno R4 Minima [15] и Uno R4 WiFi [16] :
Разъем типа «цилиндр» и штырь VIN на разъеме щитка поддерживают напряжение до 24 В постоянного тока.
Дополнительные функции, доступные только на плате Uno R4 Minima : [15]
Разъем для программирования SWD . Это 10-контактный разъем 5x2 1,27 мм для подключения микроконтроллера (R7FA4M1AB) к внешнему устройству программирования/отладки SWD (отладка по последовательному проводу).
Дополнительные функции, доступные только на плате Uno R4 WiFi : [16]
Разъем Qwiic I²C . Этот 4-контактный разъем JST SH 1,00 мм обеспечивает внешнее подключение к шине I²C 3,3 В. Не подключайте устройства I²C 5 В напрямую к этому разъему. [18]
Разъем батареи RTC (VRTC). Этот разъем подключает внешнюю батарею к RTC (часам реального времени) внутри микроконтроллера (R7FA4M1AB) для поддержания хода часов при отключении питания платы. Подключите этот разъем к положительному выводу батареи напряжением от 1,6 до 3,6 В, а отрицательный вывод батареи к заземляющему разъему (GND), например, к литиевой батарейке-таблетке напряжением 3 В. [ 17 ]
Контакт разъема Remote-Off (OFF). Этот контакт отключает 5-вольтовый понижающий импульсный регулятор напряжения (SL854102) при питании от гнезда barrel jack или контакта разъема VIN. Подключите этот контакт к контакту разъема Ground (GND), чтобы отключить этот регулятор напряжения.
Заголовки
Общие функции выводов
Светодиод : имеется встроенный светодиод, управляемый цифровым контактом 13. Когда на контакте высокое значение, светодиод горит, когда на контакте низкое значение, он выключен.
VIN : Входное напряжение платы Arduino/Genuino при использовании внешнего источника питания (в отличие от 5 вольт от USB-подключения или другого регулируемого источника питания). Вы можете подать напряжение через этот контакт или, если подача напряжения осуществляется через разъем питания, получить к нему доступ через этот контакт.
5V : Этот вывод выводит регулируемое напряжение 5 В от регулятора на плате. Плата может получать питание либо от разъема питания постоянного тока (7 - 20 В), либо от разъема USB (5 В), либо от контакта VIN платы (7-20 В). Подача напряжения через контакты 5 В или 3,3 В обходит регулятор и может повредить плату.
3V3 : Напряжение питания 3,3 В, генерируемое встроенным регулятором. Максимальный потребляемый ток составляет 50 мА.
GND : Заземляющие контакты.
IOREF : Этот вывод на плате Arduino/Genuino обеспечивает опорное напряжение, с которым работает микроконтроллер. Правильно настроенный шилд может считывать напряжение вывода IOREF и выбирать соответствующий источник питания или включать преобразователи напряжения на выходах для работы с 5 В или 3,3 В.
Сброс : Обычно используется для добавления кнопки сброса к щитам, которые блокируют кнопку на плате. [9]
Специальные функции выводов
Каждый из 14 цифровых выводов и 6 аналоговых выводов на Uno может использоваться как вход или выход под управлением программного обеспечения (используя функции pinMode(), digitalWrite() и digitalRead()). Они работают при напряжении 5 вольт. Каждый вывод может выдавать или получать 20 мА в качестве рекомендуемого рабочего состояния и имеет внутренний подтягивающий резистор (по умолчанию отключен) сопротивлением 20-50 кОм. Максимальный ток 40 мА не должен превышаться на любом выводе ввода-вывода, чтобы избежать необратимого повреждения микроконтроллера. Uno имеет 6 аналоговых входов, обозначенных от A0 до A5; каждый обеспечивает разрешение 10 бит (т. е. 1024 различных значения). По умолчанию они измеряют от земли до 5 вольт, хотя можно изменить верхний предел диапазона с помощью вывода AREF и функции analogReference(). [9]
Кроме того, некоторые контакты имеют специальные функции:
Последовательный / UART : контакты 0 (RX) и 1 (TX). Используются для приема (RX) и передачи (TX) последовательных данных TTL . Эти контакты подключены к соответствующим контактам микросхемы последовательного интерфейса USB-TTL ATmega8U2.
Внешние прерывания : контакты 2 и 3. Эти контакты можно настроить на запуск прерывания по низкому значению, нарастающему или спадающему фронту или изменению значения.
ШИМ (широтно-импульсная модуляция): контакты 3, 5, 6, 9, 10 и 11. Может обеспечивать 8-битный выход ШИМ с функцией analogWrite().
SPI (Serial Peripheral Interface): контакты 10 (SS), 11 (MOSI), 12 (MISO) и 13 (SCK). Эти контакты поддерживают связь SPI с использованием библиотеки SPI.
TWI (двухпроводной интерфейс) / I²C : контакт SDA (A4) и контакт SCL (A5). Поддержка связи TWI с использованием библиотеки Wire.
AREF (аналоговый опорный сигнал): Опорное напряжение для аналоговых входов. [9]
Коммуникация
Arduino/Genuino Uno имеет ряд возможностей для связи с компьютером, другой платой Arduino/Genuino или другими микроконтроллерами. ATmega328 обеспечивает последовательную связь UART TTL (5 В), которая доступна на цифровых контактах 0 (RX) и 1 (TX). ATmega16U2 на плате направляет эту последовательную связь через USB и отображается как виртуальный COM-порт для программного обеспечения на компьютере. Прошивка 16U2 использует стандартные драйверы USB COM, и внешний драйвер не требуется. Однако в Windows требуется файл .inf. Программное обеспечение Arduino (IDE) включает в себя последовательный монитор, который позволяет отправлять простые текстовые данные на плату и с нее. Светодиоды RX и TX на плате будут мигать, когда данные передаются через чип USB-to-serial и USB-подключение к компьютеру (но не для последовательной связи на контактах 0 и 1). Библиотека SoftwareSerial позволяет осуществлять последовательную связь на любом из цифровых контактов Uno. [9]
Автоматический (программный) сброс
Вместо того, чтобы требовать физического нажатия кнопки сброса перед загрузкой, плата Arduino/Genuino Uno разработана таким образом, что позволяет сбрасывать ее с помощью программного обеспечения, работающего на подключенном компьютере. Одна из линий управления аппаратным потоком (DTR) ATmega8U2/16U2 подключена к линии сброса ATmega328 через конденсатор емкостью 100 нанофарад. Когда эта линия активируется (становится низкой), линия сброса падает достаточно долго, чтобы сбросить чип. [9]
Эта настройка имеет и другие последствия. Когда Uno подключен к компьютеру под управлением Mac OS X или Linux , он сбрасывается каждый раз, когда к нему подключается программное обеспечение (через USB). В течение следующих полусекунды или около того загрузчик работает на Uno. Хотя он запрограммирован игнорировать некорректные данные (т. е. все, кроме загрузки нового кода), он перехватит первые несколько байтов данных, отправленных на плату после открытия соединения. [9]
Сравнение плат Arduino
В следующей таблице сравниваются официальные платы Arduino, и она имеет такую же компоновку, как таблица в статье Arduino Nano . Таблица разделена темной полосой на две группы микроконтроллеров высокого уровня: 8-битные ядра AVR (верхняя группа) и 32-битные ядра ARM Cortex-M (нижняя группа). Хотя сторонние платы имеют похожие названия плат, это не означает, что они автоматически на 100% идентичны официальным платам Arduino. Сторонние платы часто имеют другой регулятор напряжения / другой чип USB-UART / другую цветную паяльную маску , а некоторые имеют другой разъем USB или дополнительные функции. [19]
Заметки к таблице
Столбец Board Size Group — упрощенная группировка размеров плат: Uno означает схожий размер с платами Arduino Uno R3 и Duemilanove (предшествующая версия), Mega означает схожий размер с более длинными платами Arduino Mega 2560 R3 и Mega (предшествующая версия). Эта таблица имеет такую же компоновку, как таблица в статье Arduino Nano .
Столбец MCU Part# / Pins — MCU означает микроконтроллер . Вся информация о MCU в этой таблице была получена из официальных технических описаний в этом столбце. Количество выводов полезно для определения количества доступных внутренних функций MCU. Все аппаратные функции MCU могут быть недоступны на выводах разъема шилда, поскольку корпус микросхемы MCU имеет больше выводов, чем выводы разъема шилда на плате Arduino (*).
Столбец MCU I/O Voltage - Микроконтроллеры на официальных платах Arduino питаются от фиксированного напряжения 3,3 или 5 вольт , хотя некоторые платы сторонних производителей имеют переключатель выбора напряжения. Номинальное напряжение микроконтроллера указано в скобках, хотя платы Arduino не поддерживают весь этот диапазон.
Столбец MCU Clock - МГц означает 10 6 Герц . ATmega328P MPU и ATmega4809 MCU рассчитаны на максимальную частоту 20 МГц, но платы Uno R3 и Uno WiFi R2 работают на частоте 16 МГц. Следующие платы Arduino также имеют кристалл 32,768 кГц: Uno WiFi R2, Uno R4 (TBD), Zero, Due, GIGA R1 WiFi.
Столбцы памяти микроконтроллера - КБ означает 1024 байта , МБ означает 1024 2 байта. Микроконтроллер R7FA4M1AB (платы Uno R4) содержит флэш -память данных вместо памяти EEPROM.
Столбец MCU SRAM — размер SRAM не включает кэши или периферийные буферы. ECC означает, что SRAM имеет проверку кода исправления ошибок, Par означает, что SRAM имеет проверку четности.
Столбец MCU USART/UART - USART программно настраиваются для работы в качестве: UART / SPI / других периферийных устройств (зависит от MCU).
Столбец MCU Other Bus Peripherals - Для шины USB "FS" означает Full Speed (макс. 12 Мбит/с), "HS" означает High Speed (макс. 480 Мбит/с). Для шины CAN "A" означает CAN 2.0A, "B" означает CAN 2.0B, "FD" означает CAN-FD. Для работы некоторых шин требуются дополнительные внешние цепи.
Столбец таймеров MCU — числа в этом столбце представляют собой общее число разрядов каждого таймера , например, ATmega328P имеет один 16-битный таймер и два 8-битных таймера. «WD» означает сторожевой таймер , «RT» означает счетчик/таймер реального времени, «RC» означает часы реального времени (сек/мин/ч). 24-битный таймер(ы) SysTick внутри ядер ARM не включены в 24-битное общее число в этом столбце. Функции ШИМ не документированы в этой таблице.