Arduino — торговая марка аппаратно-программных средств построения и прототипирования простых систем, моделей и экспериментов в области электроники, автоматики, автоматизации процессов и робототехники.
Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры. Аппаратная часть представляет собой набор смонтированных печатных плат, продающихся как официальным производителем, так и сторонними производителями. Полностью открытая архитектура системы позволяет свободно копировать или дополнять линейку продукции Arduino.
Используется как для создания автономных объектов, так и подключения к программному обеспечению через проводные и беспроводные интерфейсы. Подходит для начинающих пользователей с минимальным входным порогом знаний в области разработки электроники и программирования.
Так же можно сделать средства связи (компьютер, радио или даже телефон) на основе Arduino.
Программная часть Программирование ведется целиком через собственную бесплатную программную оболочку Arduino IDE (распространяется по условиям GPLv2)GNU GENERAL PUBLIC LICENSE Version 2, June 1991 , Arduino (processing/arduino).Arduino — FAQ . В этой оболочке имеется текстовый редактор, менеджер проектов, препроцессор, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java на основе проекта Processing, работает под Windows, Mac OS X и Linux. Используется комплект библиотек Arduino (по лицензии LGPL)LGPL — arduino core, libraries..
Язык программирования
Язык программирования Arduino называется Arduino C и представляет собой язык C++ с фреймворком Wiring, он имеет некоторые отличия по части написания кода, который компилируется и собирается с помощью avr-gcc, с особенностями, облегчающими написание работающей программы — имеется набор библиотек, включающий в себя функции и объекты. При компиляции программы IDE создает временный файл с расширением *.cpp. Программы, написанные программистом Arduino, называются наброски или скетчи (транслитерация от ) и сохраняются в файлах с расширением *.ino. Эти файлы перед компиляцией обрабатываются препроцессором Arduino. Также существует возможность создавать и подключать к проекту стандартные файлы C++. Программисту доступны две рекомендуемые для Arduino функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле. В текст своей программы (скетча) программист может не вставлять заголовочные файлы используемых стандартных библиотек. Эти заголовочные файлы добавит препроцессор Arduino в соответствии с конфигурацией проекта. Однако пользовательские библиотеки нужно указывать. Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки, и они вносятся в список компиляции. Arduino IDE не предлагает никаких настроек компилятора и минимизирует другие настройки, что упрощает начало работы для новичков и уменьшает риск возникновения проблем; но присутствуют директивы препроцессора, такие как #define, #include и много других.
Так выглядит полный текст простейшей программы (скетча) мигания светодиодом, подключенным к 13-му выводу (пину) контроллера Arduino, с периодом 2 секунды (полпериода, то есть 1 секунду светодиод горит, полпериода — не горит). Он доступен в среде разработке в Скетч>примеры>стандартные>Blink.
void setup() { pinMode(13, OUTPUT); // Назначение пина 13 в качестве выходного }
void loop() { digitalWrite(13, HIGH); // Установка пина 13 в состояние "HIGH"(Подача питания на 13 пин), светодиод загорается delay(1000); // Задержка на 1000 миллисекунд digitalWrite(13, LOW); // Установка пина 13 в состояние "LOW", светодиод гаснет delay(1000); }
Все используемые в этом примере функции являются библиотечными. В комплекте Arduino IDE имеется множество встроенных примеров программ. Существует перевод документации по Arduino на русский языкРадиоЛокН Hi-Tech — Arduino Russian.
Загрузка программы в микроконтроллер Загрузка программы в микроконтроллер Arduino происходит через предварительно запрограммированный специальный загрузчик (все микроконтроллеры от Ардуино продаются с этим загрузчиком). Загрузчик создан на основе Atmel AVR Application Note AN109. Загрузчик может работать через интерфейсы RS-232, USB или Ethernet в зависимости от состава периферии конкретной процессорной платы. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется отдельный переходник.
Пользователь может самостоятельно запрограммировать загрузчик в чистый микроконтроллер. Для этого в IDE интегрирована поддержка программатора на основе проекта AVRDude. Поддерживается несколько типов популярных дешёвых программаторов.
Альтернативные IDE Популярность, открытость и простота платформы Arduino вызвала большой вал сторонних программных решений. В основном это решения вокруг интеграции компилятора и бутлоадера (загрузчика) Arduino в имеющиеся оболочки для программистов (IDE). Большой список этих инструментов имеется здесь. Среди них можно выделить как профессиональные инструменты, например:Processing, Eclipse, Microsoft Visual Studio, Atmel Studio, так и инструменты для детей - Scratch for Arduino.
Графические языки программирования
. Scratch for Arduino Snap4Arduino ArduBlock — Программа блочного кодирования для платформ Arduino и ESP. Modkit — платный, среди прочих, поддерживает аппаратуру Arduino. FLProg — бесплатный, позволяет создавать программное обеспечение на промышленных логических языках программирования — FBD и LAD. — графический язык программирования Arduino и Raspberry Pi с открытым исходным кодом.
Схемотехника Fritzing — простая Arduino-ориентированная система проектирования и документирования схемотехники.
Аппаратная часть Под торговой маркой Arduino выпускается несколько плат с микроконтроллером () и платы расширения (так называемые шилды — транслитерация с ). Большинство плат с микроконтроллером снабжено минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.).
В концепцию Arduino не входит предоставление корпусного или монтажного конструктива. Разработчик выбирает метод установки и механической защиты плат самостоятельно либо с помощью сторонних компаний. Сторонними производителями также выпускаются наборы робототехнической электромеханики, ориентированной на работу совместно с платами Arduino. Независимыми производителями также выпускается большая гамма всевозможных датчиков и исполнительных устройств, в той или иной степени совместимых с Ардуино.
Классический конструктив
Классические Arduino и Arduino-совместимые платы спроектированы для монтажа в стопки через штыревые разъёмы. Таким образом базовую микропроцессорную плату дополняют необходимой периферией и внешними подключениями.
Существуют платы Uno, Pro, Leonardo, Mega 2560, Due и платы, например Zero, с расширенным набором штыревых разъёмов для них. Платы расширения стандартной длины могут устанавливаться и в расширенные процессорные платы.
Миниатюрный конструктив
Arduino
Выпускаются отдельные платы уменьшенных габаритов — Nano, Nano Every и Micro — в габарите DIP-корпусов микросхем. Они предназначены для установки в макетные платы. Плат расширения для них нет.
Позже выпущена линейка Arduino MKR в похожем конструктиве. К ним есть небольшой набор плат расширения периферии.
Сторонние проекты Помимо стандартных конструктивов Arduino, сторонние разработчики создали множество миниатюрных клонов, сохранив только архитектурную и программную совместимость. Среди этих клонов выделяется линейка продуктов Microduino. Линейка содержит полноценный набор конструктивно совместимых процессорных модулей, модулей связи, датчиков и исполнительных устройств, практически не уступая ассортименту классических модулей Arduino. Как и Arduino, сборка плат производится в стопки. Линейка оформлена в двух оригинальных конструктивах: бескорпусной с соединениями на миниатюрных цанговых штыревых линейках (торговая марка Microduino Upin27 Series). Габарит плат 25*28 мм. В стиле конструкторов Лего с электрическими соединениями на подпружиненных контактах и механической фиксацией, совместимой с конструкторами Лего (торговая марка Microduino mCookie Series).
Самый миниатюрный клон был выпущен под торговой маркой Femtoduino. Его размеры - всего 15*20 мм, включая разъем micro USB, стабилизатор напряжения и полный комплект ввода-вывода Arduino Uno. Той же компанией выпущен самый «нафаршированный» миниатюрный клон под торговой маркой IMUduino. Это клон Arduino Leonardo с поддержкой USB Host (клавиатура и мышь), Bluetooth 4 Low Energy, шестиосный гироскоп/акселерометр, трехосный магнитометр (компас), барометр. Размер устройства - 16*40 мм. Проект на данный момент не предлагает совместимых по цоколевке плат расширения.
Промышленный конструктив Возможность применения продукции Arduino в ответственной промышленной автоматике является предметом жарких дискуссий. Однако, ничто не мешает оснащать изделиями на основе Arduino объекты малой автоматизации или сбора данных. Для облегчения решения таких задач ряд сторонних компаний выпускает конструктивно законченные модули, оснащенные традиционными для автоматики клеммными колодками, корпусами для монтажа на DIN-рейку, электрически защищенными или гальванически изолированными средствами ввода-вывода.
Сама компания Arduino не выпускает такую продукцию, однако в своем магазине продает изделия компании Industrial Shields. Также известна продукция компании Archiduino. Решения обеих компаний основаны на процессорах AVR. Компании предлагают набор корпусов на DIN-рейку, в которые разработчик может установить ряд периферийных модулей. Компания Industruino предлагает изделия как с AVR, так и с SAMD21. Под торговой маркой CONTROLLINO выпускается линейка клонов Arduino MEGA 2560 в промышленном конструктиве с проводным Ethernet. NORVI предлагает промышленный конструктив как на процессорах AVR, так и на ESP32.
Помимо производителей аппаратуры для хобби, к движению Arduino open source подключаются и крупные компании, специализирующиеся на промышленной автоматике. Так, компания AutomationDirect выпустила линейку промышленных контроллеров и модулей ввода-вывода, совместимых с линейкой Arduino MKR как программно, так и на уровне плат расширения. Также компания выпустила дополнение к Arduino IDE с графическим языком программирования и набором библиотек автоматики.
Микроконтроллер Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов, хотя в некоторых моделях Arduino его нет. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один клик мыши.
На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешёвых программаторов, а большинство плат Arduino имеет штыревой разъём для внутрисхемного программирования (ICSP для AVR, JTAG или для ARM).
В Arduino IDE встроена возможность создания своих программно-аппаратных платформ. Этой возможностью пользуются сторонние компании, добавляющие в Arduino IDE свои наборы плат и компиляторов-загрузчиков к ним.
AVR В классической линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR. Следующие МК можно встретить на указанных распространённых платах: