Статья: Что такое Ардуино

Что такое Arduino? Формально это торговая марка, под которой выпускаются официальные платы и программы. Название Arduino идёт от одноименного названия забегаловки в Италии, где создатели любили пропустить по рюмочке. С точки зрения использования, Arduino – это платформа для разработки электронных устройств, точнее их прототипов и макетов. Включает в себя железо (платы) и софт (среда разработки).

Семейство Arduino – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, на которой стоит микроконтроллер (далее МК) – та самая штука, которую мы будем программировать. В младших платах Arduino используются микроконтроллеры AVR (UNO, Nano, Mega, Leonardo), в современных моделях стоят более мощные ARM Cortex для более серьёзных проектов.

Ардуино является открытой платформой, поэтому модельный ряд постоянно пополняется неофициальными платами от других производителей, такие платы называют “Arduino-совместимыми”. С ними можно работать в официальной программе Arduino IDE, писать на том же языке с тем же набором команд и даже использовать те же библиотеки! В качестве примера: это платы Teensy, платы на базе МК esp32 и esp8266 (Wemos, NodeMCU), различных китайских клонов и так далее.

Рассмотрим, из чего состоит платформа и какие задачи она решает.

Железо (аппаратная часть)


Как собрать электронное устройство на базе МК? Нужно:

  • Сделать печатную плату, ибо сам МК очень маленький и паять его неудобно.
  • Обеспечить тактирование МК (те самые мегагерцы, как в обычном компьютере) – подключить тактовый генератор.
  • Добавить необходимую обвязку: фильтры по питанию, кнопку перезагрузки, некоторые МК требуют подключения резисторов к определённым пинам, и так далее.
  • Подключить остальные компоненты проекта: расположить их на плате или предусмотреть штекеры.
  • Обеспечить стабильное питание схемы, возможно даже в широком диапазоне питающего напряжения.
  • Некоторые МК нужно “настроить” при помощи программатора.
  • Загрузить прошивку при помощи программатора.

Звучит сложно, именно поэтому ребята из Arduino решили объединить всё это на одной плате: уже настроенный микроконтроллер и всё необходимое для его работы, стабилизатор напряжения, и самое главное – программатор, он тоже расположен на плате и для загрузки прошивки достаточно просто подключить USB кабель! Ноги МК выведены на рейку с пинами (стандартный шаг 2.54 мм), что позволяет работать с платой на брэдборде (макетная плата) и быстро подключать к ней любые компоненты. Изначально сложную задачу упростили до электронного “конструктора”, именно поэтому Arduino стали настолько популярны.

Софт (программная часть)


Как запрограммировать МК? Нужно:

  • Написать прошивку (при помощи любого текстового редактора).
  • Скомпилировать прошивку (для AVR – при помощи бесплатного консольного компилятора avr-gcc).
  • Загрузить прошивку в МК (для AVR – при помощи консольной утилиты avrdude).

Для этого у Arduino есть своя IDE (Integrated Development Environment) – интегрированная среда разработки Arduino IDE. Она представляет собой текстовый редактор, умеет компилировать и загружать код. А также менеджер библиотек и поддержку неофициальных плат. Таким образом весь процесс прошивки сводится к одному щелчку по кнопке загрузить: никаких настроек, никаких плясок с бубном, ничего лишнего.

Также к программной части можно отнести:

  • “Язык” Arduino, который на самом деле является просто встроенной библиотекой. У всех Arduino-совместимых плат есть одинаковый набор функций, поэтому проект можно практически без изменений перенести с одной платы на другую.
  • Библиотеки, которые в сотни упрощают работу с модулями и прочими железками. Для Arduino-среды существует около 5000 библиотек, которые охватывают все Arduino-модули и некоторые микросхемы. Также среди библиотек можно найти различные интересные алгоритмы обработки данных и прочие полезные штуки.

Простота и удобство разработки в совокупности с огромным множеством плат на разных МК и набором библиотек на все случаи жизни сделало Arduino самой простой и удобной платформой для изучения робототехники и создания прототипов электронных устройств.

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


На каком языке программируется Arduino? Многие называют его “Упрощённый C++”, “язык Ардуино”, сами Arduino называют его “Arduino Wiring”. Но на самом деле язык здесь – обычный C++ (си-плюс-плюс) со всем соответствующим ему синтаксисом и возможностями (версия C++17). Но есть пара моментов:

  • Среда Arduino IDE слегка меняет стандартный вид программы на C++ и действительно упрощает понимание для новичка. В то же время IDE не заставляет писать программу “по-Ардуиновски”, можно оформлять её как обычную программу на Си.
  • Arduino IDE автоматически подключает в код библиотеку Arduino.h, которая содержит базовый набор функций для работы с МК, а также некоторые константы и математические функции.

Дополнительно в Arduino IDE нам доступно:

  • Встроенные библиотеки для работы с интерфейсами связи и памятью.
  • В папке с программой лежит набор стандартных библиотек: для LCD дисплея, шагового мотора, сервопривода и некоторых других железок.
  • [Только для AVR Arduino] Вместе с компилятором идёт набор низкоуровневых библиотек для AVR (сон, progmem, watchdog и многие многие другие).
  • Работа с микроконтроллером “напрямую” при помощи регистров.
  • Можно писать на ассемблере, взяв под контроль каждый такт работы МК.

Если вы научитесь свободно программировать Ардуино и вдруг перейдете к разработке программ на том же C++ в более взрослых средах разработки, вы будете неприятно удивлены большим количеством дополнительного кода, который придется писать руками. И наоборот, если умеющий в C++ человек посмотрит на типичный ардуино-код, он скажет “да как это вообще работает?”. Компилятор в Arduino IDE настроен на максимальную всеядность и прощение ошибок, потому что это обучающая платформа.

Библиотеки


Жизнь рядового ардуинщика неразрывно связана с библиотеками, потому что огромное комьюнити за годы своего существования сделало огромное количество этих самых библиотек на все случаи жизни и для всех продающихся датчиков и модулей. Библиотека это набор файлов с кодом, которым мы можем пользоваться просто ознакомившись с документацией или посмотрев примеры. Такой подход называется “черным ящиком”, мы можем даже не догадываться, насколько сложный код содержится в библиотеке, но будем с лёгкостью пользоваться возможностями, который этот код даёт. Купили модуль – нашли библиотеку – открыли пример – всё, результат достигнут.

(Текст взят с сайта https://alexgyver.ru/lessons/about-arduino/ )