Arduino представляет собой платформу разработки с открытым исходным кодом, предназначенную для инженеров и начинающих любителей электроники и позволяющую достаточно просто разрабатывать различные электронные проекты. Она состоит из физически программируемой платы (основанной на микроконтроллерах семейства AVR) и специализированного программного обеспечения или интегрированной среды разработки, которую можно запускать на вашем персональном компьютере, чтобы разрабатывать программы и загружать их в микроконтроллер.
Arduino использует системный загрузчик (boot loader), который позволяет новому программному коду записываться внутрь его. В данной статье мы рассмотрим вопрос записи системного загрузчика в микроконтроллер ATmega328 (семейство AVR) и сконструируем на его основе домашнюю систему Arduino на печатной плате. Выбор микроконтроллера ATmega328 IC обусловлен тем, что он используется в платформе Arduino UNO.
О плате
Ардуино Нано – это аналог Arduino Uno, которая также работает на чипе ATmega328P, но отличается формфактором платы, которая в 2-2,5 раза меньше, чем Уно (53 х 69 мм). Размеры подобны пачке сигарет, и позволяют легко собирать сложные схемы навесным монтажом, но после стадии создания макета идёт сборка действующих экземпляров, а для этого лучше подходит как раз Нано.
Размер Arduino Nano: 19 x 43 мм
Сравнение плат Arduino Uno и Arduino Nano
Отличие такой миниатюрной платы, заключается в отсутствии вынесенного гнезда для внешнего питания, но вместо него с легкостью можно подключиться напрямую к пинам. В плате используется чип FTDI FT232RL для USB-Serial преобразования и примененяется mini-USB кабель для связи с ардуино вместо стандартного. Связь с различными устройствами обеспечивают UART, I2C и SPI интерфейсы.
В остальном, способы взаимодействия и характеристики чипов совпадают с базовой моделью Уно, которая больше подходит для экспериментов, чем для реальных проектов. Нет более насущной проблемы для любителя электроники, чем желание красиво и компактно оформить своё устройство.
Платформа имеет контакты в виде пинов, поэтому ее легко устанавливать на макетную плату. Arduino Nano используется там где важна компактность, а возможностей Mini либо не хватает, либо не хочется заниматься пайкой.
Купить макетную плату
Мы традиционно сделали подборку самых популярных плат, которые можно купить в интернет-магазинах и привели ссылки на наиболее надежных поставщиков на Алиэкспрессе.
Набор 3 в одном: макетная плата MB102 с блоком питания 3.3V/5V и комплектов 65 проводов | Макетная плата MB102 Breadboard 830 контактов | Набор из 6 мини макетных плат 170 контактов Mini Breadboard kit for Arduino |
Макетная плата 4 в одном – 700 разъемов от известного бренда WAVGAT | Стандартная макетная плата 8.5CM x 5.5CM 400 разъемов | Starter Kit – набор из макетной платы, Ардуино и проводов |
Характеристики Arduino Nano
МикроконтроллерAtmel ATmega168 или ATmega328
Рабочее напряжение (логическая уровень) | 5 В |
Входное напряжение (рекомендуемое) | 7-12 В |
Входное напряжение (предельное) | 6-20 В |
Цифровые Входы/Выходы | 14 (6 из которых могут использоваться как выходы ШИМ) |
Аналоговые входы | 8 |
Постоянный ток через вход/выход | 40 mAh с одного вывода и 500 mAh со всех выводов |
Флеш-память | 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика |
ОЗУ | 1 Кб (ATmega168) или 2 Кб (ATmega328) |
EEPROM | 512 байт (ATmega168) или 1 Кб (ATmega328) |
Тактовая частота | 16 МГц |
Размеры | 1.85 см x 4.2 см |
В первую очередь в разговоре о характеристиках нужно отметить, что Нано выпускается в различных версиях и самые распространённые:
- Nano v.2;
- Nano v.3.
Главное отличие – в самом микроконтроллере. Младшая версия использует Atmega168, Atmega328. Основные отличия чипов – это объём Flash-памяти:
- mega 328: Flash-память – 32 кб, ПППЗУ – 1024 и ОЗУ – 2 кб;
- mega 168: Flash-память – 16 кб, ПППЗУ – 512 и ОЗУ – 1 кб.
ПППЗУ – это перепрограммируемые запоминающее устройство.
Главный конкурент Arduino Nano по размеру – это Arduino Micro. В целом они похожи, но у «микро» интерфейс SPI разведен на другие пины, как и шина I2C, а также изменено количество выводов прерываний. В целом, платы похожи размерами, но различны соотношения сторон, а также некоторые схемотехнические нюансы.
Будет интересно➡ Что такое arduino nano: особенности и область применения
Arduino Nano имеет 8 аналоговых входов, они могут использоваться как цифровой выход, 14 цифровых из которых 6 могут работать как широтно-импульсный модулятор (ШИМ), еще два задействованы под I2C и 3 под SPI.
В противоположном конце платы от разъёма микро-юсб расположена колодка Arudino ICSP для прошивки микроконтроллера.
ШИМ выходы и транзисторы помогут вам: регулировать обороты двигателя, яркость светодиодов, мощность нагревателей и многое другое. А аналоговые входы позволят читать значения с аналоговых датчиков, таких как:
- фоторезисторы;
- терморезисторы;
- термопары;
- измерители влажности;
- датчики давления и другие.
Выходы Digital 2 и 3 могут быть использованы для внешних прерываний. Это такие сигналы, которые сообщают микроконтроллеру о каком-либо важном событии. По этим сигналам вызывается программа обработки прерывания и выполняются необходимые действия, например, выход из режима энергосбережения и выполнение вычислений.
На базе платы Nano получится отличный миниатюрный программатор Arduino ISP, для прошивки целого ряда контроллеров.
Основные характеристики
Плата Arduino Uno версии R3 обладает следующими характеристиками:
- Максимальная величина выходного тока пина с напряжением 5V: 0,8 А.
- Тактовая частота кварцевого процессора: 16 МГц.
- Количество аналоговых и цифровых портов ввода-вывода: 20.
- Число портов, поддерживающих широтно-импульсную модуляцию: 6.
- Разрядность аналого-цифрового преобразователя: 10 бит.
- Максимально допустимая величина тока с пина ввода-вывода: 0,04 А.
- ОЗУ микроконтроллера: 2 КБ.
- Флэш-память: 32 КБ (0.5 КБ которых отведены под bootloader).
- Размерные параметры устройства: 6,9×5,3 см.
- Допустимое входное напряжение на разъеме питания: 7-12 В.
- Электрически стираемое перепрограммируемое ПЗУ EEPROM: 1 кб.
- Количество встроенных светодиодов: 1 (расположен на 13 порту).
Для платы разрабатываются дополнительные модификации, повышающие ее технические характеристики. Последний пакет обновлений был выпущен 15 марта 2022 г.
Питание модуля
Arduino Nano может работать с разных источников питания, его можно подключить как через Mini-B USB компьютера, или от обычного нерегулируемого 6-20 вольт (pin 30), или регулируемого 5 вольт (pin 27). Плата автоматически выберет питание с самым высоким напряжением.
- Через mini-USB или microUSB при подключении к компьютеру;
- Через внешний источник питания, напряжение 6-20В.
Внешнее питание стабилизируется благодаря LM1117IMPX-5.0 с напряжением 5В. Когда подключение происходит через USB используется диод Шоттки.
Пины «Ардуино»
Пины Arduino Uno подразделяются на 4 группы:
- Power Pins (Vin и GND) — непрограммируемые порты, выдающие стабилизированное напряжение, величиной 5V или 3,3V.
- PWM Pins — порты, поддерживающие широтно-импульсную модуляцию. Пользователь может изменить их режим работы при помощи функции pinMode. К этому виду относятся пины под номерами 2, 5, 6, 9, 10, 11.
- Analog in — аналоговые порты, принимающие входящие сигналы от датчиков. При недостатке портов общего назначения их можно использовать в качестве цифровых пинов. К этой группе относятся контакты A0, A1, A2, A3, A4, A5.
- Digital in — цифровые порты, используемые для принятия сигналов 2 типов: LOW и HIGH. К ним относятся контакты под номерами 2-13. Пины №2 и №3 поддерживают аппаратные прерывания.
На плате присутствуют 2 дополнительных контакта: AREF ил RESET. Порт AREF выдает опорные напряжения аналоговых входов для встроенного АЦП. Пин RESET подает сигналы низкого уровня, производя аппаратную перезагрузку микроконтроллера.
Описание пинов и распиновка платы Arduino Nano
На рисунке указаны номера и назначения выводов Arduino Nano (вид со стороны, на которой расположен микроконтроллер Atmega328):
Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference(). Некоторые выводы имеют дополнительные функции:
- I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire.
Будет интересно➡ Самые популярные проекты на Ардуино
Дополнительная пара выводов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Расшифровка цвета
– серый цвет – физический пин микроконтроллера Atmega328;
– светло серый цвет (PD0, PD1 и т.д.) – номер порта микроконтроллера, который доступен из программ на ассемблере;
– зеленый цвет (ADC0 и т.д.) – номера аналогивых выводов;
– голубой цвет – пины портов UART и SPI.
Назначение и обозначения выводов
USB – USB-порт, предназначенный для подключения ардуины к компьютеру через USB-кабель (нужен Mini-B USB разъем).
VIN – сюда может подается питание от внешнего источника питания на 7-12 В (блок питания покупается отдельно). Напряжение будет подаваться на стабилизатор и понижаться до 5 В. Поэтому оптимально подавать на этот пин около 9 В.
5V – через этот пин также можно запитывать плату от источника питания на 5 вольт, однако напряжение должно быть более-менее стабильным, поскольку оно подается непосредственно на микроконтроллер (стабилизатор не задействован), и поэтому высокое напряжение может убить основной микроконтроллер.
3.3V – на этом пине будет висеть напряжение 3.3 В, которое формируется от внутреннего стабилизатора платы. Этот пин нужен для подключения некоторых внешних устройств, которым для работы требуется 3.3 В – обычно это всякие ЖК-дисплеи. Однако максимальный ток вывода при этом не должны превышать 50 мА.
GND – земля (Ground Pin).
AREF – опорное напряжение для аналоговых входов. Используется по необходимости (настраивается с помощью analogReference()).
IOREF – позволяет узнать рабочее напряжение микроконтроллера. Используется редка. На китайских платах отсутствует вовсе.
Reset – выполняет сброс микроконтроллера, подать низкий уровень на этот вход.
SDA, SCL – пины интерфейса TWI/I2C.
D0…D13 – цифровые входы/выходы. На вывод D13 висит встроенный светодиод, который загорается, если на вывод D13 подан уровень HIGH.
0 (RX), 1 (TX) – выводы порта UART (последовательный порт Serial).
A1…A5 – аналоговые входы (могут использоваться и в качестве цифровых).
Внешний вид платы Arduino Nano с подписанными выводами
Здесь:
RX+TX LEDs – светодиоды – моргают, когда передаются данные через последовательный порт Serial UART (пины RX и TX).
Reset Button – кнопка для перезапуска микроконтроллера;
(остальные обозначения смотри выше)
FTDI USB chip – микросхема FTDI FT323RL, которая используется для связи ардуины с компьютером через USB-кабель. Со стороны ардуины это serial-интерфейс. На компьютер этот интерфейс будет доступен в виде виртуального COM-порта (должны быть установлены драйвера для чипа FTDI – обычно входят в состав IDE Arduino).
Будет интересно➡ Что такое Ардуино: информация для начинающих
Схематически это выглядит так:
Номер пина, имя, тип и описание выводов:
Основные виды макетных плат для Arduino
Макетные платы различаются по количеству выводов, расположенных на панели, числом шин и конфигурацией. Бывают платы, в которых контактные соединения выполняются посредством пайки, однако работать с ними сложнее, чем с беспаечными устройствами и мы их рассмотрим в другой статье.
Большая макетная плата
Цветные макетные платы
Макетная плата с клеймами
В зависимости от характеристик наиболее распространены такие виды:
- Для сборки больших микросхем в основном используются беспаечные платы на 830 или 400 отверстий. Для соединения нескольких компонентов и подвода проводов к необходимым точкам – на 8, 10, 16 отверстий;
- С наличием пазов для сцепления плат, которые позволяют реализовывать достаточно большие проекты;
- С наличием самоклейки на основании для надежного закрепления на устройстве;
- С нанесенными на плату обозначениями для подключения устройств.
В зависимости о стоимости и производителя в комплектацию могут входить и дополнительные аксессуары – провода-джамперы, разнообразные разъемы. Но главным критерием качества всегда остается количество контактных разъемов и их технические характеристики.
Питание Arduino Nano
Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6-20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.
Микросхема FTDI FT232RL (или CH340G) получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI FT232RL (или CH340G), при этом светодиоды RX и TX мигаю только при наличие сигнала высокого уровня на выводах 0 и 1.
Схемы платы
Arduino Uno является открытой платформой, поэтому пользователи могут собрать ее своими руками при помощи принципиальных электронных схем. Они размещены в свободном доступе на официальном сайте компании Arduino Software. На схемах указываются способы подключения устройства к ПК и местоположение всех элементов платы.
Для сборки необходимо приобрести процессор ATmega328, микросхему FT232R, печатную плату, светодиод, резисторы и конденсаторы марки SMD с типоразмером 0805 и номиналом 0,1 мкф. Детали продаются в магазинах электроники или на торговых площадках в интернете. Средняя стоимость комплектующих составляет 160-220 руб.
Для устранения неполадок в работе программного обеспечения Arduino Uno нужно прошивать плату. Для повторной прошивки устройства требуется программатор. Методы подключения «Ардуино Уно» к этому прибору также указаны на официальных электронных схемах платы. Установить новое ПО можно при помощи программ для программирования микроконтроллеров AVR.
Создавать электронные схемы платы можно при помощи программы Proteus. Разработчику предоставляют возможность предварительно смоделировать макет Ардуино Уно, указав местоположение основных компонентов. «Протеус» является платной программой.
Бесплатная ознакомительная версия обладает полным набором функций, но не может сохранять файл проекта.
Установка драйверов
В Windows драйверы будут установлены автоматически, при подключении платы, если вы использовали установщик. Если вы загрузили и распаковали Zip архив или по какой-то причине плата неправильно распознана, выполните приведенную ниже процедуру.
- Нажмите на меню «Пуск» и откройте панель управления.
- Перейдите в раздел «Система и безопасность» (System and Security). Затем нажмите «Система» (System). Затем откройте диспетчер устройств (Device manager).
- Посмотрите под Порты (COM и LPT) (Ports (COM & LPT)). Вы должны увидеть открытый порт с именем «FT232R USB UART». Если раздел COM и LPT отсутствует, просмотрите раздел «Другие устройства», «Неизвестное устройство».
- Щелкните правой кнопкой мыши по порту FT232R USB UART и выберите опцию «Обновить драйверы…».
- Затем выберите опцию «Выполнить поиск драйверов на этом компьютере».
- Наконец, найдите каталог FTDI USB Drivers, который находится в папке «Drivers» программы Arduino.
- После этого Windows завершит установку драйвера.
Сравнение с другими платами
В отличие от Arduino Nano, плата «Ардуино Уно» подключается к ПК при помощи USB-кабеля с портом TYPE-B. «Ардуино Нано» подсоединяется к компьютеру с помощью кабеля с разъемом Mini или Micro USB. В плате Uno присутствует дополнительный порт DC, что обусловлено большими габаритами устройства.
В плате Arduino Mega присутствует 54 цифровых и 16 аналоговых портов. У этой модели больше контактов, поддерживающих аппаратные прерывания. Также данные устройства различаются по объему внутренней памяти. Arduino Uno является одной из самых недорогих плат. Дешевле этого устройства стоит платформа «Ардуино Про Мини». Но она обладает меньшим количеством контактов и дополнительных модулей.
Хейтеры платформы
В мире серьезных программистов и разработчиков очень не любят Ардуино. Почему? Рассмотрим несколько популярных негативных комментариев о платформе.
- В среде Arduino IDE работа с микроконтроллером упрощена настолько, что ардуинщику вообще ничего не нужно знать о его архитектуре и о том, как он вообще программируется и настраивается: все сделано в виде готовых и понятных функций. С каких пор удобство и простота стали плохими? Для новичка это единственный способ познакомиться с миром робототехники без изучения кипы документации и получения соответствующего образования. Также напомню, что Ардуино создана в первую очередь для обучения, и во вторую – для быстрого и удобного создания прототипов электронных устройств, это её фишка.
- Да, стандартные функции имеют кучу защит от дурака новичка, они тяжёлые и медленные. Но новичку не понадобится писать такой код, где скорость и память будут критичны! А если понадобится, то к этому времени он уже будет в состоянии писать код оптимально и найдёт на моём сайте или в другом месте в Интернете быстрые аналоги Ардуино-функций или напишет их сам. А ещё мы переписали стандартное ядро Ардуино и сделали его быстрым и резким. И ещё один момент: ядро Ардуино устроено так, что обеспечивает совместимость кода и библиотек для всех Ардуино-плат. Начали делать проект на Arduino NANO и памяти/ног стало не хватать? Переносим проект на Arduino MEGA и продолжаем работать. NANO оказалась слишком велика для проекта? Переносим на ATTiny85, даже не открывая документацию: большинство библиотек работают на всех Ардуино-совместимых платах, это очень жирный плюс, хоть и в ущерб производительности и памяти.
- А никто и не обещал вам HAL! Возможности МК раскрываются при использовании библиотек (см. список библиотек), благо сообщество у платформы действительно огромное. Также всегда можно научиться работать с даташитом и регистрами и настраивать всё что угодно и как угодно вручную.
- И правильно делает! Одна ошибка – и можно остаться с заблокированным камнем. При желании через Arduino IDE можно и фьюзы прошить, и под другие частоты настроить, об этом мы говорим вот в этом уроке.
- Всё верно, для детей и домохозяек. Плата Ардуино задумана для создания макетов, прототипирования, её можно рассматривать как часть электронного “конструктора” для обучения. На плате есть вся необходимая обвязка, почему не использовать её даже как сердце проекта?
- Верно, но есть небольшой нюанс: Arduino IDE официально бесплатная, после простой установки (Далее, Далее, Далее, Готово) она сразу готова к работе: достаточно выбрать плату из списка и начать писать код. Взрослые среды разработки требуют взрослого подхода и порог вхождения для работы с ними несоизмеримо высок. Помимо непростой установки и настройки вас ждут расширенные настройки самого микроконтроллера в ручном режиме, чтение документации и даташитов, “взрослый” интерфейс и множество нюансов в самом программировании и настройках компилятора. Времени на изучение этого всего уйдёт немеренно.
- Почему? Платформа ничем не ограничивает разработчика…
- Почему же? Arduino IDE ничем не ограничивает разработчика, можно вообще отказаться от Arduino.h и начать кодить с чистого листа при помощи регистров и ассемблерных вставок, т.е. абсолютно так же, как во взрослой среде разработки. “Мощи” не хватит? Почему то её достаточно для создания 3D принтеров и прочих многоосевых ЧПУ станков, прошивка которых состоит из десятков тысяч строк кода.
- Да, да, да. Но не забывайте про порог вхождения и размер сообщества с контентом, библиотеками и примерами “для новичков”, а также о сложности работы с STM в целом. Посмотрите видосы вот на этом канале и сравните происходящее с работой с Arduino. Что касается возможностей и скорости работы – для большинства любительских проектов Arduino (ATmega328/2560) будет более чем достаточно, особенно если уметь писать оптимальный код.
- Да, из-за простых, но понятных стандартных примеров аудитория ардуинщиков выросла очень быстро и буквально завалила интернет своими проектами, завлекая тем самым в это хобби других новичков. 99% учебных примеров, примеров работы с библиотеками и модулями написаны простенько и ужасно не оптимально: int переменные для всего подряд, вездесущий delay, блокирующие циклы и прочее, помимо богомерзких ардуино-функций. Люди берут эти примеры как основу и так и продолжают дальше писать. Но эти люди стоят на пороге очень большой двери под названием робототехника. Перешагнув через этот порог, отбросив все кривые примеры и научившись грамотно выстраивать структуру своего кода, они попадают в мир безграничных возможностей для творчества и исследования, мир бесконечно интересных и разнообразных проектов на Arduino. Для этого я и пишу данные уроки.
Что ещё хочется сказать по поводу негатива от “профессионалов” – в большинстве случаев они просто завидуют: в “их время” для создания даже простенького проекта на базе микроконтроллера нужно было потратить огромное количество времени на изучение документации на английском языке на конкретную модель МК, на все остальные железки и микросхемы в проекте, научиться работать в недружелюбной среде разработки, развести и спаять плату, купить дорогой программатор и прочее прочее. А в наше время можно купить плату за 150р, воткнуть её в USB, запустить программу уровня “блокнот с кнопкой Загрузить” и начать кодить с использованием огромного количества готовых библиотек и примеров для практически любых железок на рынке, а на любой вопрос найти ответ в гугле. Реально, у ребят просто пригорает =)