Для чего применяют ARDUINO.
Arduino — это платформа для разработки электронных устройств. Она подходит для изучения программирования, электроники, сборки прототипов реальных гаджетов и хобби-проектов. Платформа включает в себя:
· аппаратную часть — плату с микроконтроллером, например Arduino Uno;
· программную часть — бесплатную среду разработки Arduino IDE и встроенные библиотеки, которые упрощают работу с оборудованием.
Главное в Arduino — доступность и простота. Для начала работы достаточно самой платы, USB-кабеля и компьютера. Благодаря множеству готовых библиотек и простому языку программирования даже новичок может за вечер собрать рабочее устройство — например, колесного робота.
В начале 2000-х компании Telecom Italia и Olivetti открыли в итальянском городе Ивреа курсы по дизайну взаимодействия. Студентов учили проектировать устройства с удобными интерфейсами, опираясь на поведение пользователей.
На курсах студенты работали с платформой BASIC Stamp. Код приходилось писать на PBASIC — диалекте языка программирования BASIC, что было довольно сложно для людей, которые по складу ума больше дизайнеры, чем программисты.
Выпускник курса Эрнандо Барраган решил изменить ситуацию: в 2004 году он разработал альтернативную платформу Wiring — плату с прошивкой и поддержку программирования на упрощённом C++. Разработка гаджетов стала проще и быстрее.
Важно, что Wiring и последовавшая за ним Arduino распространялись с открытым исходным кодом. Это позволило сообществу адаптировать и развивать проект, а также стало основой для десятков совместимых платформ.
Платы Wiring за короткий период стали очень популярны на курсе, но оставались дорогими — около 60 долларов за плату. Тогда научный руководитель Баррагана Массимо Банци сделал форк проекта: использовал более дешёвый микроконтроллер ATmega8, но оставил программную часть Wiring. Так появился прототип Arduino, сначала называвшийся Wiring Lite.
Wiring и последовавшая за ним Arduino распространялись с открытым исходным кодом. Это позволило сообществу адаптировать и развивать проект, а также стало основой для десятков совместимых платформ.
Arduino выпускает платы и готовые наборы для энтузиастов, университетов и школ программирования. У компании есть линейка промышленных контроллеров, которые используют для автоматизации складов и заводов. Один из главных принципов Arduino — разрабатывать недорогие платы, чтобы создание умных устройств было доступным увлечением.
Рассмотрим, какие пины, интерфейсы и кнопки есть на плате Arduino. Покажем всё на примере третьего поколения Uno. Более детально устройство платы можно изучить в официальной документации.
Кнопка перезагрузки (1) — кнопка для перезапуска загруженного кода, если, например, плата перестала корректно реагировать на команды.
Цифровые пины (2) — универсальные пины, которые могут генерировать и считывать сигналы. К ним можно подключать датчики, моторы, кнопки и другие элементы управления.
Коннектор USB-B (3) — порт, с помощью которого плату можно подключить к компьютеру и прошить.
Контроллер ATmega328P (4) — «мозг» Arduino Uno, который выполняет все вычисления и операции. Можно сказать, что он здесь вместо процессора и памяти, — как центральный блок у обычного компьютера, только компактнее и проще.
Коннектор питания (5) — порт для подключения платы к аккумулятору или розетки.
Пины питания (6) — пины, с помощью которых можно запитать датчики, моторы и другие элементы, подключённые к Uno.
Аналоговые пины (7) — пины, которые могут только считывать сигналы. Подходят для подключения датчиков.
Каждый цифровой и аналоговый пин имеет свои ограничения по току и напряжению, поэтому перед подключением внешних устройств стоит свериться с технической документацией.
Платы Arduino могут различаться по количеству пинов, форм-фактору и мощности.
В интернет-магазине компании доступно несколько десятков плат для разработки роботов, умных устройств, компактных гаджетов и промышленного оборудования.
Uno: идеальна для новичков
Микроконтроллер: ATmega328P
Память: 32 КБ флеш-памяти и 2 КБ SRAM
Для проектов : для роботов и любых умных устройств
Цена: 27–55 долларов
Arduino Uno — одна из самых популярных и универсальных плат. На ней достаточно портов для подключения большого количества датчиков, моторов, сервоприводов и контроллеров. Если изучать программирование для Arduino, покупайте Uno. Этой платы хватит как для учебных экспериментов, так и для полноценных проектов.
Сервопривод — умный двигатель, который с высокой точностью проворачивает вал по команде.
Nano: для компактных проектов
Микроконтроллер: ATmega328
Память: 32 КБ флеш-памяти и 2 КБ SRAM
Для проектов : для компактных устройств
Цена: 15–40 долларов
Arduino Nano — компактная версия Uno. У неё меньше портов и меньше памяти, зато она без проблем поместится в корпусе практически любого устройства. Ещё один плюс платы в том, что её можно разместить на макетной плате.
Mega: больше портов и памяти
Микроконтроллер: ATmega2560
Память: 256 КБ флеш-памяти и 8 КБ SRAM
Подходит для устройств с большим количеством датчиков
Цена: 50–70 долларов
Arduino Mega — плата с большим количеством пинов, более мощным микроконтроллером и увеличенным объёмом памяти. Она подходит для сложных проектов, в которых нужно много датчиков и ресурсоёмких вычислений, например для шагающих роботов с парой десятков сервоприводов. Плата дорогая. На первых порах хватит возможностей Uno.
Micro: со встроенным USB-контроллером
Микроконтроллер: ATmega32U4
Память: 32 КБ флеш-памяти и 2,5 КБ SRAM
Подходит: для клавиатур, мышек и контроллеров
Цена: 22 доллара
Arduino Micro — компактная плата с поддержкой режима работы HID (human interface device — устройство человеческого интерфейса). На базе Micro можно собрать собственную клавиатуру, мышку, руль для симулятора гонок или контроллер для игровой консоли.
Платы для профессионалов
Arduino разрабатывает платы не только для обучения и хобби-проектов. У компании есть профессиональная линейка Arduino Pro для промышленных устройств. Их используют для автоматизации процессов на заводах и складах. Устройства с приставкой Pro обычно выпускают в чёрном цвете, а обычные — в синем.
В линейку Arduino Pro входят следующие семейства:
Portenta — набор высокопроизводительных плат и модулей для промышленных проектов. Они могут одновременно выполнять низкоуровневый код и скрипты на MicroPython или JavaScript.
Nicla — компактные платы для ИИ-проектов с низким энергопотреблением. Например, на базе платы Nicla Vision можно собрать систему для автоматической сортировки заказов на складе.
Opta — серия программируемых логических контроллеров в форм-факторе microPLC. У них есть Ethernet, Wi-Fi, Bluetooth и крепление для DIN-рейки, позволяющее устанавливать устройство в электротехнические шкафы.
Аналоги
На маркетплейсах можно встретить множество плат, которые очень похожи на Arduino, но называются по-другому. Это вполне легальные и рабочие устройства.
Все платы компании и прошивки выпускаются под открытой лицензией Creative Commons Attribution ShareAlike. Это значит, что любой желающий может создавать собственные платы Arduino — в помощь разработчикам компания публикует на официальном сайте схемы, чертежи и документацию. В компании не против того, чтобы крупные производители запускали серийное производство аналогов. Главное условие: не использовать название Arduino, его производные и логотип. Все эти атрибуты защищены авторским правом.
Например, российская компания «Амперка» выпускает платы Iskra — это аналоги Arduino с небольшими доработками, которые изготовлены по официальным чертежам. Arduino не против таких решений на рынке.
Вот список проверенных аналогов Arduino помимо платформы Iskra от «Амперки»:
В проектах лучше использовать оригинальные платы или аналоги компаний, которые дорожат своей репутацией. Платы китайских «ноунеймов» практически всегда оказываются некачественными, но стоят в 5–10 раз меньше. С другой стороны, если ваша цель — просто попробовать себя в разработке на Arduino, то можно сэкономить.
Одной платы не хватит для того, чтобы создавать интересные проекты. Плата — это мозг, которому нужны другие органы. Далее список инструментов и устройств, без которых нельзя обойтись.
Модули, датчики и сенсоры
К платам Arduino можно подключать сторонние модули, датчики и сенсоры.Если хотите собрать метеостанцию, то надо будет докупить термометр, барометр и анемометр. А для робота нужна будет камера, дальномер и моторы.
Сенсоры и модули подбирают под конкретное устройство на этапе проектирования. Не стоит сразу покупать всё, что только можно подключить к плате. Со временем накопится большая коллекция электронных полезностей.
Макетная плата
Модули и датчики можно подключать сразу к плате, но это не всегда удобно. Например, сенсор может перекрывать собой соседние пины. Для решения этой проблемы используют макетные платы — универсальные пластины для быстрого монтажа компонентов и создания прототипов.
Для экспериментов удобнее использовать макетные платы без пайки — их ещё называют бредбордами (от англ. breadboard). На этой плате контакты разведены так, чтобы к ней можно было подключить несколько модулей.
Если собирать собственный модуль, можно использовать макетную плату с пайкой. Она представляет собой обычную печатную плату со свободными пинами, на которой можно смонтировать любые электронные компоненты.
Соединительные провода
Модули и сенсоры надо соединять между собой на макетной плате и подключать к Arduino. Для этого используют кабели типа Dupont трёх видов: «папа — папа», «мама — мама» и «мама — папа».
Dupont — это не официальное название коннектора. В начале XXI века китайские производители начали осваивать массовое производство соединительных кабелей и для изоляции использовали материалы американской химической компании DuPont. В итоге название прижилось на бытовом уровне, и сейчас любые коннекторы с шагом 2,54 мм называют кабелями Dupont.
Шилд (от англ. shield — щит) — плата расширения, которая подключается к Arduino и даёт новые возможности. Например, с помощью шилда можно добавить поддержку Wi-Fi или GPS, если изначально их не было.
Как правило, связка из нескольких модулей может заменить собой шилд, но такая конструкция будет не очень аккуратной и компактной. Платы расширения чаще используют в образовательных целях — например, на курсах по разработке для Arduino. Простой способ крепления шилдов позволяет сосредоточиться на коде.
Инструменты
Для монтажа электронных компонентов и сборки финального устройства могут понадобиться дополнительные инструменты:
Паяльник. После экспериментов на бредборде электрическую схему проекта можно перенести на печатную макетную плату. Для этого понадобится паяльник, припой, канифоль и флюс.
«Третья рука». Во время пайки не всегда удобно одновременно держать раскалённый паяльник, припой, плату и элемент, который вы собираетесь припаять. На помощь в таких случаях приходит «третья рука» — штатив, который позволяет закрепить все необходимые элементы и работать с ними.
Набор пинцетов. Электронные компоненты могут быть очень мелкими, и брать их руками не всегда удобно. Лучше использовать пинцеты, чтобы случайно ничего не сломать.
IDE для Arduino
Arduino IDE — официальная среда разработки от команды Arduino. В ней есть все необходимые инструменты для удобной работы с одноимёнными платами. Можно писать код, отлаживать его, оптимизировать, загружать на платы и запускать.
Важно отметить, что есть две версии официальной среды разработки: обновлённая Arduino IDE 2 и устаревшая Arduino IDE Legacy. Обе работают, но во второй доступны не все современные функции — например, нет поддержки автоматического завершения кода и синхронизации файлов с облачным хранилищем.
Arduino Cloud — облачная платформа для удалённого управления подключёнными платами. В основном её используют для развёртывания самодельных IoT‑устройств, но на платформе есть и встроенный редактор кода. С его помощью можно также писать скетчи, отлаживать . Программировать Arduino можно в любом редакторе кода, но удобнее делать это в специальных средах. В них есть и загружать на платы прямо в браузере. Одно из преимуществ Arduino Cloud в том, что редактор можно открыть даже на смартфоне.
Platform IO — плагин, который превращает редактор кода, например VS Code, в IDE для работы с Arduino. Благодаря Platform IO в редакторе появляется дебагер, анализатор кода, функции для тестирования и возможность прошивать плату.
Плагин бесплатный и доступен для всех популярных IDE и редакторов кода. Есть даже версия для Vim, которая запускается в терминале.
Как программировать Arduino.
Код для Arduino пишут на языке программирования Arduino C — это сочетание C++ и фреймворка Wiring. Файлы с кодом разработчики называют скетчами (от англ. sketch — набросок).
Рассмотрим только основы программирования Arduino. Если стать гуру разработки, то добавьте в закладки гайд по C++ в пяти частях:
С++ для новичков — что это за язык программирования, как писать программы: 1-я часть гайда
Переменные, константы в С++ и операции с ними: 2-я часть гайда по языку программирования
If-else в С++, ветвление и логические операции: 3-я часть гайда по языку программирования
Ввод данных и обработка исключений в С++: 4-я часть гайда по языку программирования
Функции, процедуры, рекурсия в С++: 5-я часть гайда по языку программирования
Структура скетча
Программы для Arduino пишут по шаблону, который выглядит так:
#include <Example.h> — директива для подключения сторонних библиотек или связывания нескольких файлов одного проекта.
void setup() — функция, в которой инициализируют пины платы и указывают режимы их работы.
void loop() — цикл с основным кодом программы. В нём разработчики описывают логику прошивки и используют пины, которые инициализировали в функции setup().
Функции setup и loop — обязательная часть каждого скетча. Без них компилятор не сможет собрать проект.
Переменные
В Arduino C, как и в любом другом языке программирования, есть переменные. В них можно хранить данные с датчиков, промежуточные вычисления или параметры пинов. Чаще всего разработчики используют следующие типы переменных:
· int — целые числа в диапазоне от −32768 до 32767.
· long — целые числа в диапазоне от −2147483648 до 2147483647.
· float — числа с плавающей точкой, в которых можно хранить значения с точностью до семи знаков после запятой.
· byte — отдельные символы из ASCII-таблицы.
· String() — строки из нескольких символов.
· bool — логические значения true или false.
Математические операторы
В языке Arduino C есть все привычные математические операторы. С их помощью можно вычислять значения и присваивать результаты переменным:
Оператор
Описание
Пример
=
Присваивание значения переменной
a = 256
+
Сложение
100 + 83
-
Вычитание
45 - 2
*
Умножение
5 * 12
/
Целочисленное деление
100 / 10
%
Остаток от деления
43% 4
Для сравнения значений используют операторы сравнения. Они возвращают true (истина) или false (ложь):
Оператор
Описание
Пример
==
Равно
a == b
!=
Не равно
a != b
<
Меньше
a < b
>
Больше
a > b
<=
Меньше или равно
a <= b
>=
Больше или равно
a >= b
Условные операторы и циклы
Для управления потоками программы в Arduino C предусмотрены условные операторы и циклы:
· if-else — оператор «если», с помощью которого можно реализовать несколько сценариев и запускать их в зависимости от условий. Если условие оператора if соблюдается, то система выполняет его. В остальных случаях выполнится условие else if.
- for — цикл для повторного выполнения одного и того же действия. Например, с его помощью можно пройтись по массиву светодиодов и поморгать каждым.
- while — цикл, который выполняется до тех пор, пока его условие истинно.
- do-while — цикл, который сначала выполняет действие, а потом проверяет условие завершения.
Функции
Для удобства программы можно разделять на функции — блоки кода, которые выполняют определённое действие, возвращают результат и доступны в любом месте программы. Представьте, что вы собираете лазерный прибор для измерения расстояния. Датчик передаёт значения в метрах, но на экран надо ещё выводить километры и футы. Операции перевода значений можно вынести в отдельную функцию и вызывать в любом месте кода.
Как загрузить прошивку на плату
Перед тем как начать писать код, разберёмся как этот код загрузить на плату:
· Шаг 1. Подключите плату к компьютеру с помощью USB-кабеля.
· Шаг 2. В Arduino IDE откройте выпадающий список Select board и выберите в нём вашу плату.
- Шаг 3. Нажмите на кнопку со стрелкой, которая расположена слева от выпадающего списка.
- Шаг 4. Если всё прошло успешно, то в терминале появится сообщение «Done uploading» и сведения о том, сколько памяти занял скетч.
Мигаем светодиодом: первый проект на Arduino
Многие разработчики в качестве своей первой программы пишут код, который выводит на экран фразу «Hello, world!». У микроконтроллеров нет экранов, поэтому выводить приветствие некуда. При этом в сообществе разработчиков есть аналог «Hello, world!» — программа Blink, которая мигает одним из светодиодов на плате.
С помощью такой простой программы можно проверить сразу три вещи. Если светодиод мигает:
· плата точно работает, а электронные компоненты не повреждены;
· компилятор правильно настроен и собирает код под нужную платформу;
· компьютер без ошибок загружает прошивку на плату.
Напишем код программы Blink и загрузим его на Arduino, чтобы убедиться, что всё работает.
Собираем устройство
Для сборки понадобится:
· любая плата Arduino (у нас Uno R3);
· светодиод;
· резистор номиналом 220 Ом;
· провода типа «папа — папа»;
· макетная плата.
В коде мы используем три функции, не считая setup() и loop(), без которых компилятор не сможет собрать скетч:
· pinMode(pin, mode) — функция для настройки режима работы цифрового пина. На вход она принимает два аргумента: pin и mode. В первом надо указать номер пина, во втором — режим работы. Мы выбрали пин под номером 13 и сделали его выходным (OUTPUT).
· digitalWrite(pin, value) — функция для подачи напряжения на пин, указанный в аргументе pin. Во втором аргументе надо выбрать значение, которое подаётся на пин: HIGH или LOW.
· delay() — с помощью этой функции можно на время приостановить выполнение кода. Для этого в скобках надо указать длительность паузы в миллисекундах. Максимальное значение — 4 294 967 295 мс, что составляет 49 дней, но на практике никто не ставит паузу больше нескольких секунд .
Запускаем код
Если всё сделали правильно, то при подключении питания к плате должен мигать светодиод:
Усложняем проект: добавляем управление.
Теперь усложним проект: сделаем так, чтобы светодиод горел постоянно, а с помощью кнопки его можно было бы выключать.
Элементы платы Arduino Uno Рис.2