Плата Arduino Uno – центр большой империи Arduino, самое популярное и самое доступное устройство. В ее основе лежит чип ATmega – в последней ревизии Ардуино Уно R3 – это ATmega328 (хотя на рынке можно еще встретить варианты платы UNO с ATmega168). Большинство ардуинщиков начинают именно с платы UNO. В этой статье мы рассмотрим основные особенности, характеристики и устройство платы Arduino Uno ревизии R3, требования к питанию, возможности подключения внешних устройств, отличия от других плат (Mega, Nano).
Плата Arduino Uno
Контроллер Uno является самым подходящим вариантом для начала работы с платформой: она имеет удобный размер (не слишком большой, как у Mega и не такой маленький, как у Nano), достаточно доступна из-за массового выпуска всевозможных клонов, под нее написано огромное количество бесплатных уроков и скетчей.
Характеристики Arduino Uno
Микроконтроллер | 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 МГц |
Изображения плат Ардуино Уно
Оригинальная плата выглядит следующим образом:
Многочисленные китайские варианты выглядят вот так:
Еще примеры плат:
Где купить Arduino Uno
Минимальные цены на платы UNO можно найти в китайских электронных магазинах. Если у вас есть несколько недель на ожидание, вы можете существенно сэкономить, купив дешево (в районе 200-300 рублей) с бесплатной доставкой. Причем можно найти как самые простые варианты, так и официальные или “почти оригинальные” платы на базе оригинального микроконтроллера. Еще одна группа товаров – необычные платы со встроенными WiFi (на базе ESP8266 или ESP32), дополнительными разъемами для более удобного подключения периферии. Вот некоторые варианты, которые можно купить у проверенных поставщиков на Алиэкспрессе:
Arduino UNO R3 (CH340G) MEGA328P. Типичный представитель плат Ардуино на Aliexpress с ценой ниже 250 рублей | Качественная плата Arduino UNO R3 на CH340G. Комплект без кабеля с минимальной ценой около 220 рублей | Arduino оптом – 10 плат контроллера UNO R3 с MEGA328P ATMEGA16U2 на борту |
Официальный Arduino UNO R3 MEGA328P на базе ATMEGA16U2 – максимальное качество | Плата MegaPower Uno на базе оригинальных ATmega328 R3, FTDI FT232RL | Оригинальный Arduino UNO R3 (плата на базе оригинальных микросхем MEGA и ATMEGA16U2) с USB кабелем в картонной коробке |
Два в одном! Arduino UNO со встроенным Sensor Shield (Atmega328P Atmega16U2 плюс Sensor I/O Shield) | Arduino Uno и WiFi под одной крышей: R3 ATmega328P+ESP8266 (32Mb memory) | Отличный вариант от KeyeStudio – UNO R3 MEGA328P ATMEGA16U2 с совмещенным Sensor Shield |
AliExpress.com Product — high quality One set UNO R3 (CH340G) MEGA328P for Arduino UNO R3 (NO USB CABLE)</td>Один из лучших вариантов. Очень качественные и надежные платы от RobotDyn. Приятно держать в руках. Купить можно и в российском интернет-магазине </td></tr>Еще один популярный вариант платы UNO R3 с MEGA328P CH340 CH340G на борту</td>Весьма качественная плата UNO R3 (CH340G) MEGA328P в комплекте с кабелем</td></tr></tbody> Если вы интересуетесь наборами Ардуино, то более подробный обзор доступных вариантов вы можете найти на нашем сайте.
Схема и распиновка платы
Ардуино – это открытая платформа. По сути, любой желающий может скачать схему с официального сайта или одного из популярных форумов, а затем собрать плату на основе контроллера ATmega. Необходимые электронные компоненты можно весьма не дорого купить во множестве интернет-магазинов.
Распиновка платы на базе ATMEGA 328
Принципиальная схема:
Описание элементов платы Arduino Uno R3
Распиновка микроконтроллера ATMega 328
Описание пинов Ардуино
Пины Ардуино используются для подключения внешних устройств и могут работать как в режиме входа (INPUT), так и в режиме выхода (OUTPUT). К каждому входу может быть подключен встроенный резистор 20-50 кОм с помощью выполнения команды pinMode () в режиме INPUT_PULLUP. Допустимый ток на каждом из выходов – 20 мА, не более 40 мА в пике. Для удобства работы некоторые пины совмещают в себе несколько функций:
- Пины 0 и 1 – контакты UART (RХ и TX соответственно) .
- Пины c 10 по 13 – контакты SPI (SS, MOSI, MISO и SCK соответственно)
- Пины A4 и A5 – контакты I2C (SDA и SCL соответственно).
Цифровые пины платы Uno
Пины с номерами от 0 до 13 являются цифровыми. Это означает, что вы можете считывать и подавать на них только два вида сигналов: HIGH и LOW. С помощью ШИМ также можно использовать цифровые порты для управления мощностью подключенных устройств.
Пин ардуино | Адресация в скетче | Специальное назначение | ШИМ |
Цифровой пин 0 | RX | ||
Цифровой пин 1 | 1 | TX | |
Цифровой пин 2 | 2 | Вход для прерываний | |
Цифровой пин 3 | 3 | Вход для прерываний | ШИМ |
Цифровой пин 4 | 4 | ||
Цифровой пин 5 | 5 | ШИМ | |
Цифровой пин 6 | 6 | ШИМ | |
Цифровой пин 7 | 7 | ||
Цифровой пин 8 | 8 | ||
Цифровой пин 9 | 9 | ШИМ | |
Цифровой пин 10 | 10 | SPI (SS) | ШИМ |
Цифровой пин 11 | 11 | SPI (MOSI) | ШИМ |
Цифровой пин 12 | 12 | SPI (MISO) | |
Цифровой пин 13 | 13 | SPI (SCK)
К выходу также подсоединен встроенный светодиод (есть в большинстве плат Arduino) |
Аналоговые пины Arduino Uno
Аналоговые пины Arduino Uno предназначены для подключения аналоговых устройств и являются входами для встроенного аналого-цифрового преобразователя (АЦП), который в ардуино уно десятиразрядный.
Пин | Адресация в скетче | Специальное назначение |
Аналоговый пин A0 | A0 или 14 | |
Аналоговый пин A1 | A1 или 15 | |
Аналоговый пин A2 | A2 или 16 | |
Аналоговый пин A3 | A3 или 17 | |
Аналоговый пин A4 | A4 или 18 | I2C (SCA) |
Аналоговый пин A5 | A5 или 19 | I2C (SCL) |
Дополнительные пины на плате
- AREF – выдает опорное напряжения для встроенного АЦП. Может управляться функцией analogReference().
- RESET – подача низкого сигнала на этом входе приведет к перезагрузке устройства.
Подключение устройств
Подключение любых устройств к плате осуществляется путем присоединения к контактам, расположенным на плате контроллера: одному из цифровых или аналоговых пинов или пинам питания. Простой светодиод можно присоединить, используя два контакта: землю (GND) и сигнальный (или контакт питания).
Самый простой датчик потребует задействовать минимум три контакта: два для питания, один для сигнала.
При любом варианте подключения внешнего устройства следует помнить, что использование платы в качестве источника питания возможно только в том случае, если устройство не потребляет больше разрешенного предельного тока контроллера.
Видео с инструкциями:
Варианты питания Ардуино Уно
Рабочее напряжение платы Ардуино Уно – 5 В. На плате установлен стабилизатор напряжения, поэтому на вход можно подавать питание с разных источников. Кроме этого, плату можно запитывать с USB – устройств. Источник питания выбирается автоматически.
- Питание от внешнего адаптера, рекомендуемое напряжение от 7 до 12 В. Максимальное напряжение 20 В, но значение выше 12 В с высокой долей вероятности быстро выведет плату из строя. Напряжение менее 7 В может привести к нестабильной работе, т.к. на входном каскаде может запросто теряться 1-2 В. Для подключения питания может использоваться встроенный разъем DC 2.1 мм или напрямую вход VIN для подключения источника с помощью проводов.
- Питание от USB-порта компьютера.
- Подача 5 В напрямую на пин 5V. В этом случае обходится стороной входной стабилизатор и даже малейшее превышение напряжения может привести к поломке устройства.
Пины питания
- 5V – на этот пин ардуино подает 5 В, его можно использовать для питания внешних устройств.
- 3.3V – на этот пин от внутреннего стабилизатора подается напряжение 3.3 В
- GND – вывод земли.
- VIN – пин для подачи внешнего напряжения.
- IREF – пин для информирования внешних устройств о рабочем напряжении платы.
Память Arduino Uno R3
Плата Uno по умолчанию поддерживает три типа памяти:
- Flash – память объемом 32 кБ. Это основное хранилище для команд. Когда вы прошиваете контроллер своим скетчем, он записывается именно сюда. 2кБ из данного пула памяти отводится на bootloader- программу, которая занимается инициализацией системы, загрузки через USB и запуска скетча.
- Оперативная SRAM память объемом 2 кБ. Здесь по-умолчанию хранятся переменные и объекты, создаваемые в ходе работы программы. Память эта энерго-зависимая, при выключении питания все данные, разумеется, сотрутся.
- Энергонезависимая память (EEPROM) объемом 1кБ. Здесь можно хранить данные, которые не сотрутся при выключении контроллера. Но процедура записи и считывания EEPROM требует использования дополнительной библиотеки, которая доступна в Arduino IDE по-умолчанию. Также нежно помнить об ограничении циклов перезаписи, присущих технологии EEPROM.
Некоторые модификации стандартной платы Uno могут поддерживать память с большими значениями, чем в стандартном варианте. Но следует понимать, что для работы с ними потребуются и дополнительные библиотеки.
Программирование для платы Uno
Для написания программ (скетчей) для контроллер Ардуино вам нужно установить среду программирования. Самым простым вариантом будет установка бесплатной Arduino IDE, скачать ее можно с официального сайта.
После установки IDE вам нужно убедиться, что выбрана нужная плата. Для этого у Arduino IDE в меню “Инструменты” и подпункте “Плата” следует выбрать нашу плату (Arduino/Genuino Uno). После выбора платы автоматически изменятся параметры сборки проекта и итоговый скетч будет скомпилирован в формат, который поддерживает плата. Подключив контроллер к компьютеру через USB, вы сможете в одно касание заливать на него вашу программу,используя команду “Загрузить”.
Сам скетч чаще всего представляет собой бесконечный цикл, в котором регулярно опрашиваются пины с присоединенными датчиками и с помощью специальных команд формируется управляющее воздействие на внешние устройства (они включаются или выключаются). У программиста Ардуино есть возможность подключить готовые библиотеки, как встроенные в IDE, так и доступные на многочисленных сайтах и форумах.
Написанная и скомпилированная программа загружается через USB-соединение (UART- Serial). Со стороны контролера за этот процесс отвечает bootloader.
Более подробную информацию о том, как устроены программы для платы Ардуино можно найти в нашем разделе, посвященном программированию.
Отличие от других плат
Сегодня на рынке можно встретить множество вариантов плат ардуино. Самыми популярными конкурентами Уно являются платы Nano и Mega. Первая пойдет для проектов, в которых важен размер. Вторая – для проектов, где у схема довольно сложна и требуется множество выходов.
Отличия Arduino Uno от Arduino Nano
Современные платы Arduino Uno и Arduino Nano версии R3 имеют, как правило, на борту общий микроконтроллер: ATmega328. Ключевым отличием является размер платы и тип контактных площадок. Габариты Arduino Uno: 6,8 см x 5,3 см. Габариты Arduino Nano: 4,2 см x 1,85 см. В Arduino UNO используются коннекторы типа «мама», в Nano – «гребень» из ножек, причем у некоторых моделей контактные площадки вообще не припаяны. Естественно, больший размер UNO по сравнению с Nano в некоторых случаях является преимуществом, а в некоторых – недостатком. С платой большого размера гораздо удобнее производить монтаж, но она неудобна в реальных проектах, т.к. сильно увеличивает габариты конечного устройства.
На платах Arduino Uno традиционно используется разъем TYPE-B (широко применяется также для подключения принтеров и МФУ). В некоторых случаях можно встретить вариант с разъемом Micro USB. В платах Arduino Nano стандартом является Mini или Micro USB.
Естественно, различия есть и в разъеме питания. В плате Uno есть встроенный разъем DC, в Nano ему просто не нашлось места.
Кроме аппаратных, существуют еще небольшие отличия в процессе загрузки скетча в плату. Перед загрузкой следует убедиться, что вы выбрали верную плату в меню «Инструменты-Плата».
Отличия от Arduino Mega
Плата Mega в полном соответствии со своим названием является на сегодняшний день самым большим по размеру и количеству пинов контроллеров Arduino. По сравнению с ней в Uno гораздо меньше пинов и памяти. Вот список основных отличий:
- Плата Mega использует иной микроконтроллер: ATMega 2560. Но тактовая частота его равна 16МГц, так же как и в Уно.
- В плате Mega большее количество цифровых пинов – 54 вместо 14 у платы Uno. И аналоговых – 16 / 6.
- У платы Mega больше контактов, поддерживающих аппаратные прерывания: 6 против 2. Больше Serial портов – 4 против 1.
- По объему памяти Uno тоже существенно уступает Megа. Flash -память 32/256, SRAM – 2/8, EEPROM – 4/1.
Исходя из всего этого можно сделать вывод, что для больших сложных проектов с программами большого размера и активным использованием различных коммуникационных портов лучше выбирать Mega. Но эти платы дороже Uno и занимают больше места, поэтому для небольших проектов, не использующих все дополнительные возможности Mega, вполне сойдет Uno – существенного прироста скорости при переходе на “старшего” брата вы не получите.
Краткие выводы
Arduino Uno – отличный вариант платы для создания своих первых проектов и умных устройств. 14 цифровых и 6 аналоговых пинов позволяют подключать разнообразные датчики, светодиоды, двигатели и другие внешние устройства. USB-разъем поможет подключиться к компьютеру для перепрошивки скетча без дополнительных внешних устройств. Встроенный стабилизатор позволяет использовать различные элементы питания с широким диапазоном напряжения, от 6-7 до 12-14 В. В Arduino Uno достаточно удобно реализована работа с популярными протоколами: UART, SPI, I2C. Есть даже встроенный светодиод, которым можно помигать в своем первом скетче. Чего еще желать начинающему ардуинщику?
Содержание
</span></span>
- Обзор
- Программирование и связь с ПК
- Система питания
- Порты ввода/вывода
- Память
- Подведение итогов
- Часто Задаваемые вопросы
Обзор
Arduino UNO представляет из себя отладочный комплекс, выполненный на базе микроконтроллера ATMega328. Проще говоря – это обычная плата, которая является «посредником» между пользователем и микроконтроллером, позволяя удобно цепляться к его ножкам и загружать в него прошивку прямо из среды программирования. Помимо всего прочего, плата наделена некоторыми дополнительными функциями, которые будут подробно рассмотрены в данной статье. Продуманное исполнение, небольшой размер, множество библиотек и примеров кода, позволили Arduino UNO завоевать симпатии миллионов разработчиков электронных устройств. На сегодняшний день в Интернете можно найти огромное количество проектов, в которых данная плата взята за основу.
Arduino UNO была разработана итальянскими инженерами как одна из основных плат, имеющих открытую архитектуру. По мере увеличения популярности, у платы появилось множество «клонов», полностью совместимых по программной и аппаратной части. На рисунке №1 показан внешний вид платы Arduino UNO с обеих сторон.
Рисунок №1 – плата Arduino Uno
Как видно из рисунка, подключение к пинам микроконтроллера выполняется через штыревые линейки, распаянные по обе стороны платы. Таким образом разработчик может связать ATMega328 с внешними устройствами при помощи макетных проводов. Также под топологию Arduino Uno создано огромное количество шилдов, обеспечивающих дополнительный функционал путём их каскадного включения. Пример такого включения показан на рисунке №2.
Рисунок №2 – Arduino Uno и шилд для ЧПУ
Такой подход позволяет значительно ускорить процесс создания прототипов тех или иных устройств, превращая рутинную работу в непринуждённую сборку электронного конструктора. Существуют шилды с набором датчиков, шилды-клавиатуры, шилды-экраны, шилды-расширители портов, радио-шилды и многое другое, что только может прийти в голову самому изощренному ардуинщику.
Удобно организованный доступ к портам микроконтроллера – это хорошо, но что ещё содержит Arduino Uno на своём борту? Разобраться в дополнительных деталях поможет рисунок №3, на котором обведены и подписаны все основные элементы платы и дана общая характеристика для штыревых контактов.
Те, кто хочет дополнительно расширить свой кругозор, может ознакомиться с принципиальной схемой платы перейдя по этой ссылке.
Рисунок №3 – распиновка платы Arduino Uno
Программирование и связь с ПК
В левом верхнем углу (рисунок №3) расположен USB-разъём. Он выполняет две функции. Первая – организация канала обмена данными между микроконтроллером и ПК и вторая – запись прошивки в ATMega328.
На аппаратном уровне за связь с компьютером отвечает модуль последовательного интерфейса передачи данных (UART), который встроен в ATMega328 и выведен на контактах 0(RX) и 1(TX) платы Arduino Uno. Однако просто передавать данные на компьютер не получиться. Посредником между ATmega328 и компьютером выступает отдельно установленный микроконтроллер ATMega16. Его специальная прошивка позволяет определять плату Arduino Uno как виртуальный СОМ-порт, когда та подключается к ПК. Обмен данными будет сопровождаться миганием соответствующих светодиодов RX и TX, расположенных справа от ATMega16.
Что касается записи прошивки, то этот процесс максимально упрощён и сводится к нажатию всего одной кнопки в среде Arduino IDE. Такая простота обусловлена тем, что Arduino Uno выпускается со встроенным прошитым загрузчиком, работающем по протоколу STK500. Следовательно, во внешнем программаторе нет никакой необходимости. Тем не менее, для любителей прошить контроллер напрямую, на плате предусмотрена колодка ICSP (справа посередине) для внутрисхемного программирования в обход загрузчика. Сам DFU-загрузчик находиться в ATMega16 и также может быть переписан путём внутрисхемного программирования через аналогичную колодку в верхней левой части платы.
Система питания
Для того, чтобы плата Arduino Uno могла функционировать, на неё необходимо подать питание. Сделать это можно несколькими способами, а именно:
-
Запитать непосредственно через USB-разъём с помощью шнура для программирования или связи с ПК;
-
Запитать от AC/DC адаптера с выходным напряжением 7-12В, подключившись через специальный разъём внешнего питания.
-
Подать напряжение 7-12В напрямую на вход Vin, который расположен на штыревой колодке питающей группы. При этом минусовой контакт источника питания следует соединить с одним из контактов GND платы.
Также, плата Arduino Uno, предоставляет пользователю два контакта, на которых присутствуют напряжения 5В и 3,3В. Эти напряжения формируются встроенными линейными стабилизаторами при любом из вышеперечисленных способов питания. Максимальный ток, который способен обеспечить вывод 3,3В равен 50мА. Некоторые «умельцы» питают плату через один из этих выводов, однако это чревато выходом последней из строя, так как входное напряжение идёт в обход стабилизатора и любой скачок просто-напросто спалит микроконтроллер.
Вывод GND говорит сам за себя и является общим минусом. Все выводы GND на плате соединены между собой. Следует обратить внимание, что большинство странных глюков в работе с платой Arduino Uno связаны с тем, что разработчик проекта забывает соединить вывод GND платы Arduino с соответствующими выводами других модулей и датчиков, которые используются в проекте.
Вывод IOREF, служит для информирования подключаемых к Arduino Uno модулей или шилдов об уровне бортового напряжения. Если подключаемый модуль имеет возможность работать как с 5В, так и с 3,3В, то прочитав значение на выводе IOREF, он может выбрать для себя соответствующий режим работы.
Порты ввода/вывода
Arduino Uno предоставляет пользователю 14 цифровых и 6 аналоговых выводов. Цифровые выводы имеют нумерацию от 0 до 13 и способны работать в двух направлениях, т.е. каждый из них может быть как входом, так и выходом. Направление определяется функцией pinMode(). Помимо этого, для каждого цифрового пина имеется возможность программно включить подтягивающий резистор, соединённый с плюсом питания микроконтроллера. Номинал подтягивающего резистора лежит в диапазоне 20-50кОм. Следует учитывать, что максимальное выходное напряжение одного вывода составляет 5В, а максимальный ток — 40мА. Превышение допустимой нагрузки способно вывести микроконтроллер из строя.
Аналоговые выводы имеют обозначения А0-А5. Каждый из них соединён со встроенным 10-битным АЦП микроконтроллера ATMega328. Это означает, что мы можем одновременно измерять 6 напряжений и получать по 1024 значения для каждого канала. По умолчанию диапазон измеряемого напряжения равен 0-5В, т.е. при 0В значение АЦП будет равно 0, а при 5В значение АЦП станет равным 1023. Этот диапазон можно изменить подачей на вывод AREF своего опорного напряжения, которое станет верхней границей измерения. Если в аналоговых выводах нет необходимости, они без проблем могут использоваться как цифровые.
Помимо первичных функций, некоторые выводы Arduino Uno имеют дополнительные. Например:
-
выводы 3, 5, 6, 9, 10 и 11 способны формировать широтно-импульсную модуляцию (ШИМ) с помощью функции analogWrite().
-
выводы A4(SDA) и A5(SCL) представляют интерфейс связи по протоколу I2C.
-
выводы 10(SS), 11(MOSI), 12(MISO), 13(SCK) обеспечивают связь по SPI-интерфейсу.
-
выводы 0(RX) и 1(TX) — обеспечивают последовательный интерфейс передачи данных.
-
к выводу 13 подключен smd-светодиод, расположенный на плате.
-
RESET – подача низкого уровня на этот вывод приведёт к сбросу микроконтроллера.
Для удобства восприятия целесообразно всё свести в таблицу, которую можно использовать как «шпаргалку» при создании собственных проектов:
Пин Arduino Uno |
Название пина в скетче |
Альтернативная функция |
Генерация ШИМ |
Цифровой пин №0 |
Serial (RX) |
||
Цифровой пин №1 |
1 |
Serial (TX) |
|
Цифровой пин №2 |
2 |
Вход для внешних прерываний |
|
Цифровой пин №3 |
3 |
Вход для внешних прерываний |
есть |
Цифровой пин №4 |
4 |
||
Цифровой пин №5 |
5 |
есть |
|
Цифровой пин №6 |
6 |
есть |
|
Цифровой пин №7 |
7 |
||
Цифровой пин №8 |
8 |
||
Цифровой пин №9 |
9 |
есть |
|
Цифровой пин №10 |
10 |
SPI (SS) |
есть |
Цифровой пин №11 |
11 |
SPI (MOSI) |
есть |
Цифровой пин №12 |
12 |
SPI (MISO) |
|
Цифровой пин №13 |
13 |
SPI (SCK) + светодиод |
|
Аналоговый пин №А0 |
А0 |
||
Аналоговый пин №А1 |
А1 |
||
Аналоговый пин №А2 |
А2 |
||
Аналоговый пин №А3 |
А3 |
||
Аналоговый пин №А4 |
А4 |
I2C (SDA) |
|
Аналоговый пин №А5 |
А5 |
I2C (SCL) |
Полная карта выводов Arduino Uno показана на рисунке №4. На ней отражены все основные и альтернативные функции для каждого пина в отдельности, а также приведено соответствие физическим выводам ATMega328.
Рисунок №4 – карта выводов Arduino Uno
Память
Так как основой платы Arduino Uno является микроконтроллер ATMega328, пользователь получает в своё распоряжение три типа памяти, которые присущи всей линейке микроконтроллеров AVR, а именно:
-
FLASH-память. Данная память используется для хранения прошивок, создаваемых программистом. Именно сюда будут записываться скомпилированные скетчи из среды программирования. Для Arduino Uno объём flash-памяти равен 32кб, два из которых отведены на специальную программу-загрузчик (bootloader). Bootloader нужен для упрощения процесса записи кода в микроконтроллер.
-
Энергонезависимая память EEPROM. Данный вид память даёт возможность сохранять данные, которые не будут удалены при отключении питания Arduino Uno. Для данной модификации платы, объём памяти EEPROM равен 1кБ. Зачастую эту память используют для сохранения всевозможных настроек. Следует помнить, что ресурс перезаписи EEPROM ограничен, поэтому следует грамотно оформлять код, чтобы увеличить срок службы памяти. Не стоит беспорядочно писать в ячейки новые данные. Делать это нужно как можно реже и только при необходимости. Для работы с энергонезависимой памятью в среде программирования Arduino IDE есть удобная библиотека, которая называется EEPROM.h.
-
Оперативная память SRAM. Эта память предназначена для хранения переменных и объектов, созданных во время выполнения программы. В распоряжении программиста имеется 2кБ памяти SRAM. В отличие от EEPROM, здесь все данные будут полностью удалены при отключении питания. На практике, особенно у неопытных программистов, эта память быстро заканчивается, и разработчик не может дальше развивать свой проект. Следует с самого начала грамотно планировать расход оперативной памяти, например, поменьше использовать глобальных переменных, следить за типами данных, а также хранить большие однотипные объёмы данных в памяти программ.
Подведение итогов
На основании вышеизложенного можно сделать вывод, что плата Arduino Uno является оптимальным вариантом как для начинающего, так и для опытного разработчика. Имея скромные размеры 7см на 5,5см, пользователь получает довольно широкий функционал, который может удовлетворить требования большинства проектов. Также огромным плюсом является бесчисленное множество библиотек с примерами, документации и обучающих материалов, что позволит в кратчайшие сроки реализовать задуманное на практике.
Часто задаваемые вопросы FAQ
Вопрос: Есть ли на плате Arduino Uno какая-нибудь встроенная защита от перегрузок?
Ответ: Да, некоторая защита имеется. Например, на плате установлены восстанавливаемые предохранители, предназначенные для защиты USB-порта персонального компьютера от перегрузок и замыканий. Порог срабатывания предохранителей равен 500мА. Если уровень потребления становиться выше – предохранители размыкаются.
Вопрос: Существует ли способ программно перезагрузить Arduino Uno, не используя кнопку или вывод RESET?.
Ответ: Существует. В начале программы прописываем следующую функцию:
void(*resetFunc) (void) = 0;
и в нужном месте программы вызываем строку:
resetFunc();
Вопрос: Посоветуйте альтернативную среду разработки, вместо стандартной Arduino IDE.
Ответ: Как один из вариантов можно использовать PlatformIO.
Вопрос: Какой ресурс у памяти EEPROM.
Ответ: Производитель заявляет 100000 циклов перезаписи, которые должна гарантированно выдержать каждая ячейка.
Вопрос: почему нестабильно работает реле, подключенное к 13-му выводу Arduino UNO? Остальные выводы работают без сбоев.
Ответ: 13-й вывод соединён со светодиодом на плате через резистор 220 Ом, поэтому использовать этот вывод для питания нагрузок не стоит.
Arduino UNO плата построена на микроконтроллере Atmega AVR для обучения, разработки, создания рабочих макетов устройств.
Размеры Уно
Arduino Uno R3 – самая популярная плата, построенная на базе процессора ATmega328. В зависимости от конкретной модели платы этой линейки используются различные микроконтроллеры, на момент написания статьи самой распространённой является версия именно R3.
Плату используют для обучения, разработки, создания рабочих макетов устройств. Ардуино, по своей сути, – это AVR микроконтроллер с возможностью упрощенного программирования и разработки. Это достигнуто с помощью специально подготовленного загрузчика, прошитого в память МК, и фирменной среды разработки.
Размеры платы представлены на схеме ниже. Общие размеры Уно составляют 53,4 мм на 68,6 мм.
Характеристики
В основе платы лежит процессор ATmega 328. Кроме него на плате находится модуль USB для связи с компьютером и прошивки. Этот модуль называется «USB-TTL преобразователь». На фирменных платах Arduino Uno для этой целей используется дополнительный микроконтроллер ATmega16U2.
Характеристики | Arduino Uno R3 |
---|---|
Микроконтроллер | 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 МГц |
Особенность этого чипа заключается в аппаратной поддержке USB, что позволяет организовывать связь без дополнительных преобразователей. В то время как ATmega328 не поддерживает такой функции, поэтому 16u2 выступает в роли преобразователя данных из USB в последовательный порт для МК AVR. В него залита программа для выполнения этой задачи.
Однако так происходит не всегда: в более мелких платах, таких как Arduino Nano, используют преобразователи уровней на базе различных микросхем, например FT232, CP21XX, Ch340g и подобных. Это решение является более дешевым и не требует прошивки дополнительного связывающего контроллера, как описано выше.
Внимание! Не всё так однозначно с DCcduino UNO r3 на ch340g. В ней как раз и использован более дешевый, чем в оригинале, вариант преобразователя USB-TTL.
На плате есть выход 3.3 В, он нужен для подключения периферии и некоторых датчиков, его пропускная способность по току равна 50 мА.
ATmega328 работает на частоте 16 МГц. Она фиксирована кварцевым резонатором, который вы можете, по желанию, заменить, тем самым ускорив работу Uno r3.
Важно! После замены кварцевого резонатора функции, связанные со временем, такие как Delay, не будут соответствовать введенным значениям. Это функция задержки времени, по умолчанию её аргументом является требуемое время задержки в мс. Функция прописана в библиотеках Ардуино, с учетом стандартной тактовой частоты в 16 МГц. Поэтому после замены кварца заданное время не будет соответствовать написанному. Для этого нужно либо подбирать опытным путем и устанавливать зависимости, либо править файлы библиотек.
Память Ардуино Уно
Микроконтроллер Arduino Uno содержит 32 кб флэш-памяти, из которой пользователю доступно 31.5 кб, потому как 0.5 занимает загрузчик.
- ОЗУ – 2 кб памяти.
- EEPROM — 1 кб памяти.
Как осуществляется питание платы?
Чтобы включить плату, нужно на неё подать питание либо от USB порта, можно прямо от ПК, либо от внешнего источника питания – от 7 до 15 Вольт. На плате установлен линейный стабилизатор, типа L7805, или же LDO. Он нужен для того, чтобы на микроконтроллер подавалось стабилизированное напряжение 5 В.
При этом приоритетно выбирается внешний источник питания, а не ЮСБ-порт. Внешнее питание подключается к выводу с пометкой «Vin» в разделе Power на плате.
Расположение выводов, распиновка
Разработчики платы Arduino очень удобно и логично расположили выводы платы. Дело в том, что при разработке на «чистых» МК АВР приходилось обращаться к выводу порта, для этого нужно было запомнить название каждой ножки на чипе. Здесь это гораздо проще. На самой плате указано название каждого из пинов. Удобства добавляет и то, что пины разбиты на 3 группы:
- Digital – блок цифровых пинов.
- Analog – блок аналоговых пинов.
- Power – блок пинов, которые связаны с питанием и работой микросхемы.
При этом в разделе Digital пины, которые могут выдавать ШИМ-сигнал (PWM), помечены тильдой «~». Для служебных целей и проверки работоспособности контроллера на плате установлен светодиод, который подключен к 13-му выводу, а из среды разработки Arduino IDE к нему можно обращаться через встроенную директиву LED_BUILTIN. Такие схемы расположения пинов называются «Arduino UNO pinout», при этом, вместо UNO, может быть указано название другой платы, которая вас интересует.
Описание пинов платы
Микроконтроллер имеет 14 цифровых пинов, они могут быть использованы, как вход или выход. Из них 6 могут выдавать ШИМ-сигнал. Они нужны для регулировки мощности в нагрузке и других функций.
Пин ардуино | Адресация в скетче | Специальное назначение | ШИМ |
---|---|---|---|
Цифровой пин 0 | RX | ||
Цифровой пин 1 | 1 | TX | |
Цифровой пин 2 | 2 | Вход для прерываний | |
Цифровой пин 3 | 3 | Вход для прерываний | ШИМ |
Цифровой пин 4 | 4 | ||
Цифровой пин 5 | 5 | ШИМ | |
Цифровой пин 6 | 6 | ШИМ | |
Цифровой пин 7 | 7 | ||
Цифровой пин 8 | 8 | ||
Цифровой пин 9 | 9 | ШИМ | |
Цифровой пин 10 | 10 | SPI (SS) | ШИМ |
Цифровой пин 11 | 11 | SPI (MOSI) | ШИМ |
Цифровой пин 12 | 12 | SPI (MISO) | |
Цифровой пин 13 | 13 |
Вызов ШИМ-сигнала осуществляется через команду AnalogWrite (номер ножки, значение от 0 до 255). Для работы с аналоговыми датчиками присутствует 6 аналоговых входов/выходов.
Пин | Адресация в скетче | Специальное назначение |
---|---|---|
Аналоговый пин A0 | A0 или 14 | |
Аналоговый пин A1 | A1 или 15 | |
Аналоговый пин A2 | A2 или 16 | |
Аналоговый пин A3 | A3 или 17 | |
Аналоговый пин A4 | A4 или 18 | I2C (SCA) |
Аналоговый пин A5 | A5 или 19 | I2C (SCL) |
Их тоже можно использовать, как цифровые.
Аналоговый сигнал обрабатывается 10 битным аналогово-цифровым преобразователем (АЦП), а при чтении микроконтроллер выдаёт численное значение от 0 до 1024. Это равно максимальному значению, которое можно записать в 10 битах. Каждый из выводов способен выдать постоянный ток до 40 мА.
Принципиальная схема платы выглядит так (нажмите для увеличения):
Микроконтроллер ATMega 328
Как мы написали выше, ATmega328 работает на частоте 16 МГц. Распиновка микроконтроллера ниже (нажмите на изображение для увеличения):
Работа в комплексе с другими системами
Самое первое, с чем вы можете познакомиться, даже без приобретения дополнительных устройств для разработки – это связь по последовательному порту. Он активируется по команде Serial.begin
(скорость, например 9600). Подробно о каждой команде вы можете прочитать в обучающем разделе на официальном сайте проекта Arduino.ru. Вы можете обмениваться с компьютером информацией. Плата, в зависимости от программного кода, может вам присылать данные, а вы их, через монитор портов в Arduino IDE, можете читать.
Кроме последовательного порта, в ардуино UNO реализована поддержка таких интерфейсов:
- I2C;
- SPI.
Через них можно осуществлять «общение» между несколькими платами, а также подключать разную периферию: датчики и дисплеи.
Платы расширения
В магазинах, специализирующихся на робототехнике и микроконтроллерах, можно встретить слово «шилд». Это специальная плата, которая напоминает Arduino Uno. Совпадает она с ней не только по форме, но и по количеству выводов.
Шилд устанавливается в клеммные колодки, при этом часть их них задействуется под функции шилда, а другая часть остаётся свободной для использования в проекте. В результате вы можете получить такой себе многоэтажный «бутерброд» из плат, которые реализуют множество функций.
Одним из самых популярных является Arduino Ethernet Shield. Он нужен для связи с Ардуино по обычному сетевому кабелю, витой паре. На нём расположен разъём rj45.
С подобным шилдом можно управлять вашим микроконтроллером по сети через веб-интерфейс, а также считывать параметры с датчиков, не отрываясь от компьютера. Существуют проекты с использованием такого комплекта в домашнем облачном хранилище, с ограничением по скорости, всё-таки Атмега328 слабовата для таких задач, и для этого лучше подойдут одноплатные компьютеры типа Raspberry pi.
Как преодолеть аппаратные ограничения
Большинство распространённых плат имеют аналогичные характеристики, среди них:
- Uno;
- Nano;
- Pro mini;
- и подобные.
Но с развитием ваших навыков разработки в этой среде появляется проблема нехватки мощности и быстродействия этой платформы. Первым шагом для преодоления ограничений является использование языка C AVR.
С его помощью вы ускорите на порядок скорость обращения к портам, частоту ШИМ и размер кода. Если вам и этого недостаточно, то вы можете воспользоваться мощными моделями с аналогичным подходом к разработке. Для этого подойдёт плата Arduino Mega2560. Еще более мощная – модель Due. В противном случае вам стоит ознакомиться с разновидностями одноплатных компьютеров и STM микроконтроллеров.
Ардуино Uno R3 – отличная плата для большинства проектов, которая служит для изучения устройств цифровой электроники.
Используемые источники:
- https://arduinomaster.ru/platy-arduino/plata-arduino-uno/
- https://3d-diy.ru/wiki/arduino-platy/arduino-uno/
- https://arduinoplus.ru/plata-arduino-uno/