Top.Mail.Ru

Arduino. Введение в программирование Ардуино, обзор платформы.

Всем доброго времени суток! Эта статья положит начало новому разделу нашего сайта, посвященному программированию Arduino. С течением времени эта платформа становится все более популярной среди любителей электроники, поэтому, несмотря на существование разнообразных курсов, было принято решение создать свой, самый лучший 🙂 И в этой конкретной статье разберем некоторые основополагающие понятия, которыми будем оперировать в дальнейшем. Так что сегодня будет своего рода введение, к которому плавно и переходим.

Физическая составляющая платформы Ардуино.

Что же из себя представляет Arduino? Физически - это обычная отладочная плата на базе микроконтроллера AVR. И тут логичным образом переходим к вопросу, что такое отладочная плата в целом.

Итак, непосредственно микроконтроллер может выглядеть так:

Микроконтроллер

Для его работы требуется как минимум подать напряжение питания, что сделать с «голым» контроллером проблематично как минимум из-за его небольших размеров (на то он и микроконтроллер). Плюс смысл применения контроллера заключается в том, что он, например, принимает некоторые сигналы (от неких датчиков) и выдает, в свою очередь, обработанные данные или сигналы во внешний мир. Из чего вытекает еще и необходимость дополнительных подключений, помимо подачи питания и другой минимально необходимой обвязки (конденсаторов и им подобных элементов). Все это, мягко говоря, неудобно, и решением данной проблемы является использование отладочных плат.

Таким образом, отладочная плата представляет из себя микроконтроллер, а также все необходимое для его функционирования, смонтированное в виде единого законченного девайса:

Программирование arduino

У меня здесь показано на примере платы Arduino Uno, а вот в этой статье можно подробнее ознакомиться с другими вариантами. В итоге для подключения Ардуино и начала работы достаточно только обзавестись USB-кабелем, а для управления или получения данных с внешних устройств используются предусмотрительно установленные разъемы, на которые выведены порты ввода-вывода контроллера:

Ардуино

Таких плат полно для любых микроконтроллеров, к примеру, одна из наиболее популярных плат на базе STM32:

Отладочная плата Bluepill

Как видите, идея точно такая же. Содержимое платы, виды разъемов, а также количество доступных сигналов контроллера могут быть абсолютно разными, сути это не меняет, отладочная плата NUCLEO-H743ZI на базе STM32H743:

STM32

Подключение Ардуино.

Что из себя физически представляет плата Arduino понятно, но причина популярности платформы кроется совсем в другом, а именно в способе взаимодействия с ней.

В целом, задачей микроконтроллера является выполнения программы, помещенной (прошитой) в него разработчиком. И для осуществления процесса прошивки используются специальные устройства под названием "программатор". Для микроконтроллера AVR, который и установлен на платах Ардуино, один из наиболее распространенных программаторов выглядит так:

Программатор AVR ISP

У него имеется 6 сигналов на выходе, которые необходимо подключить к определенным ножкам МК (микроконтроллера). На плате Arduino такой разъем присутствует, вот он:

Программирование ардуино через разъем ICSP

Но! На практике он почти никогда не используется, почему, сейчас разберем, в этом и кроется основная идея.

Итак, разобьем процесс программирования Ардуино на несколько этапов. Обычный путь создания прошивки для микроконтроллера можно описать следующим образом:

  1. Написание текста программы.
  2. Компиляция и сборка программы - результатом будет файл, который загружается в МК.
  3. Прошивка - непосредственно загрузка файла из шага 2 в память контроллера.

Для выполнения операции под номером 3 и требуется программатор. Но Arduino дает возможность обойтись без него, а выполнять прошивку, просто подключив плату по USB. Работает это все так… Память микроконтроллера разбивается на две части:

Bootloader arduino

Первая часть используется исключительно для пользовательской программы (application), а вот вторая зарезервирована под специальный загрузчик (bootloader). Работа этого загрузчика заключается в том, что он принимает данные (пользовательскую программу) извне (от компьютера или другого МК, в случае Arduino байты проникают в плату посредством USB) и сам записывает эти данные во внутреннюю память контроллера, в соответствующую часть.

Что это нам дает? А то, что не требуется покупать отдельный программатор и, по сути, для работы платы нужен только компьютер и USB-кабель 👍

Программирование Ардуино.

Переходим к программной части, и тут еще одна отличительная особенность Arduino. Опять же, в целом, взаимодействие с микроконтроллером заключается в записи определенных значений в его регистры. Для облегчения и ускорения данной деятельности существуют дополнительные библиотеки, которые упрощают процесс. Например, позволяют вызывать некие функции с понятным названием вместо того, чтобы взаимодействовать с регистрами напрямую. Конечно же пример, как без него, вариант с использованием библиотеки:

// Настройка порта на работу в режиме входа
int inputPin = 4;
pinMode(inputPin, INPUT_PULLUP);

// Проверка состояния на входе
if (digitalRead(inputPin) == HIGH) 
{
    // Высокий уровень
} else 
{
    // Низкий уровень
}

Те же самые действия, но с регистрами напрямую:

// Настройка порта на работу в режиме входа
DDRB &= ~(1 << PINB4);

// Проверка состояния на входе
if ((PINB & (1 << PINB4)) == (1 << PINB4)) 
{
    // Высокий уровень
} else 
{
    // Низкий уровень
}

Собственно, разница налицо. Таким образом, при разработке нужно те или иные библиотеки подключать к проекту, настраивать и т. д. Arduino же имеет свою собственную среду разработки – Arduino IDE – то есть редактор, непосредственно в котором нужно писать свою программу, которая затем (вспоминаем предыдущий раздел) отправляется в память микроконтроллера. При этом Arduino IDE уже включает в себя и необходимые библиотеки и механизм для загрузки программы в микроконтроллер, подключенный к компьютеру по USB.

Собираем озвученное воедино и на практике имеем тот факт, что для полноценного использования платы Ардуино необходимы только:

  1. Компьютер с Arduino IDE.
  2. USB-кабель.
  3. Сама плата.

Все, на этом точка, минимальный набор инструментов:

Прошивка программы ардуино

А учитывая тот факт, что Arduino IDE еще и процесс разработки делает максимально простым, то имеем по итогу платформу, начать работу с которой можно с минимальным порогом вхождения, то есть максимально просто. Это и делает Arduino настолько популярной среди абсолютно разных категорий пользователей. Кроме того, среда разработки абсолютно бесплатна.

Конечно же есть и ложка/половник дегтя. Практически за всякое удобство и упрощение нужно чем-то платить, в частности, оптимальностью и производительностью. Тот же bootloader занимает часть памяти контроллера, делая ее недоступной для пользователя. Программа, использующая готовые библиотеки Ардуино, становится зачастую менее оптимальной, как с точки зрения производительности, так и с точки зрения быстродействия.

Но при всем при этом плюсы порой перевешивают минусы, все зависит от конкретного проекта и от конкретной задачи. Поэтому Arduino полностью заслуженно занимает свою нишу и является в ней невероятно популярной и распространенной.

Вообще-то, в вводной статье я планировал охватить еще пару тем, чтобы затем сразу перейти к делу, но получилось довольно объемно, значит будет несколько вводных статей, не проблема. А на сегодня заканчиваем, всех благодарю за внимание 🤝

Подписаться
Уведомить о
guest

2 комментариев
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей
Алексей
5 месяцев назад

Спасибо за Ваши материалы! Знайте, Вас читают и Вам очень благодарны!

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x