Arduino ( / ɑː r ˈ d w iː n oʊ / ) — итальянская компания, проект и сообщество пользователей с открытым исходным кодом, занимающаяся аппаратным и программным обеспечением , которая разрабатывает и производит одноплатные микроконтроллеры и комплекты микроконтроллеров для создания цифровых устройств. Его аппаратные продукты лицензируются по лицензии CC BY-SA , а программное обеспечение лицензируется по GNU Lesser General Public License (LGPL) или GNU General Public License (GPL), [1] разрешая производство плат Arduino и распространение программного обеспечения. кем угодно. Платы Arduino можно приобрести на официальном сайте или у официальных дистрибьюторов. [2]
В конструкциях плат Arduino используются различные микропроцессоры и контроллеры. Платы оснащены наборами контактов цифрового и аналогового ввода-вывода (I/O), которые могут быть подключены к различным платам расширения («экранам») или макетам (для прототипирования) и другим схемам. Платы оснащены интерфейсами последовательной связи, включая универсальную последовательную шину (USB) на некоторых моделях, которая также используется для загрузки программ. Микроконтроллеры можно программировать с использованием языков программирования C и C++ (Embedded C), используя стандартный API, который также известен как язык программирования Arduino , созданный на основе языка Processing и используемый с модифицированной версией Processing IDE. Помимо использования традиционных инструментальных средств компилятора , проект Arduino предоставляет интегрированную среду разработки (IDE) и инструмент командной строки, разработанный на Go .
Проект Arduino начался в 2005 году как инструмент для студентов Института интерактивного проектирования Ивреа , Италия, [3] с целью предоставить новичкам и профессионалам недорогой и простой способ создания устройств, которые взаимодействуют с окружающей средой с помощью датчиков и исполнительных механизмов . Типичными примерами таких устройств, предназначенных для начинающих любителей, являются простые роботы , термостаты и детекторы движения .
Название Arduino происходит от бара в Ивреа , Италия, где встречались некоторые из основателей проекта. Бар был назван в честь Ардуина Иврейского , который был маркграфом Иврейского марша и королём Италии с 1002 по 1014 год. [4]
Проект Arduino был начат в Институте интерактивного дизайна Ivrea (IDII) в Ивреа , Италия. [3] В то время студенты использовали микроконтроллер BASIC Stamp стоимостью 50 долларов. В 2004 году Эрнандо Барраган создал платформу разработки Wiring в качестве магистерского проекта в IDII под руководством Массимо Банзи и Кейси Риса . Кейси Рис известен тем, что вместе с Беном Фраем создал платформу разработки Processing . Целью проекта было создание простых и недорогих инструментов для создания цифровых проектов неинженерами. Платформа проводки состояла из печатной платы (PCB) с микроконтроллером ATmega 128, IDE на основе обработки и библиотечных функций для простого программирования микроконтроллера. [5] В 2005 году Массимо Банзи вместе с Дэвидом Меллисом, еще одним студентом IDII, и Дэвидом Куартьелесом расширили Wiring, добавив поддержку более дешевого микроконтроллера ATmega8. Новый проект, ответвленный от Wiring, получил название Arduino . [5]
Первоначальная основная команда Arduino состояла из Массимо Банзи, Дэвида Куартиелеса, Тома Иго, Джанлуки Мартино и Дэвида Меллиса. [3]
После завершения разработки платформы более легкие и менее дорогие версии были распространены среди сообщества разработчиков программного обеспечения с открытым исходным кодом. По оценкам, в середине 2011 года было коммерчески выпущено более 300 000 официальных плат Arduino, [6] а в 2013 году в руках пользователей находилось 700 000 официальных плат. [7]
В начале 2008 года пять соучредителей проекта Arduino создали компанию Arduino LLC [8] для владения торговыми марками, связанными с Arduino. Производством и продажей плат должны были заниматься сторонние компании, а ООО «Ардуино» получало от них гонорар. В уставе ООО «Ардуино» указано, что каждый из пяти учредителей передает право собственности на бренд Arduino вновь образованной компании. [ нужна цитата ]
В конце 2008 года компания Джанлуки Мартино Smart Projects зарегистрировала торговую марку Arduino в Италии и около двух лет держала это в секрете от остальных соучредителей. Это выяснилось, когда компания Arduino попыталась зарегистрировать товарный знак в других регионах мира (изначально они были зарегистрированы только в США) и обнаружила, что он уже зарегистрирован в Италии. Переговоры с Мартино и его фирмой о передаче торговой марки под контроль первоначальной компании Arduino провалились. В 2014 году Smart Projects начала отказываться платить роялти. Затем они назначили нового генерального директора Федерико Мусто, который переименовал компанию Arduino SRL и создал сайт arduino.org , скопировав графику и макет оригинального arduino.cc . Это привело к расколу в команде разработчиков Arduino. [9] [10] [11]
В январе 2015 года ООО «Ардуино» подала иск против ООО «Ардуино». [12]
В мае 2015 года компания Arduino LLC создала всемирную торговую марку Genuino , которая используется в качестве торговой марки за пределами США. [13]
На выставке World Maker Faire в Нью-Йорке 1 октября 2016 года соучредитель и генеральный директор Arduino LLC Массимо Банзи и генеральный директор Arduino SRL Федерико Мусто объявили о слиянии двух компаний и образовании Arduino AG. [14] Примерно в то же время Массимо Банзи объявил, что в дополнение к компании будет запущен новый Arduino Foundation как «новое начало для Arduino», но это решение было позже отозвано. [15] [16] [17]
В апреле 2017 года журнал Wired сообщил, что Мусто «сфабриковал свою академическую успеваемость... На веб-сайте своей компании, в личных учетных записях LinkedIn и даже в итальянских деловых документах Мусто до недавнего времени значился как имеющий докторскую степень из Массачусетса. Технологического института. В некоторых случаях в его биографии указывалось также степень магистра делового администрирования Нью-Йоркского университета». Wired сообщил, что ни в одном университете не было никаких записей о посещаемости Мусто, и позже Мусто признался в интервью Wired, что он никогда не получал этих степеней. [18] Споры вокруг Мусто продолжились, когда в июле 2017 года он, как сообщается, удалил множество лицензий с открытым исходным кодом, схем и кода с веб-сайта Arduino, что вызвало пристальное внимание и протесты. [19]
К 2017 году Arduino AG владела многими товарными знаками Arduino. В июле 2017 года компания BCMI, основанная Массимо Банзи, Дэвидом Куартиелесом, Дэвидом Меллисом и Томом Айго, приобрела Arduino AG и все товарные знаки Arduino. Фабио Виоланте — новый генеральный директор, заменивший Федерико Мусто, который больше не работает в Arduino AG. [20] [21]
В октябре 2017 года Arduino объявила о своем партнерстве с Arm Holdings (ARM). В объявлении, в частности, говорилось, что «ARM признала независимость основной ценностью Arduino... без какой-либо привязки к архитектуре ARM ». Arduino намерена продолжать работать со всеми поставщиками технологий и архитектур. [22] Под руководством Виоланте компания снова начала расти и выпускать новые модели. Торговая марка Genuino была упразднена, и все продукты снова получили название Arduino.
В августе 2018 года Arduino анонсировала свой новый инструмент командной строки с открытым исходным кодом (arduino-cli), который можно использовать в качестве замены IDE для программирования плат из оболочки. [23]
В феврале 2019 года Arduino анонсировала свой облачный сервис IoT как расширение онлайн-среды Create. [24]
По состоянию на февраль 2020 года сообщество Arduino насчитывало около 30 миллионов активных пользователей, судя по загрузкам IDE. [25]
Arduino — это аппаратное обеспечение с открытым исходным кодом . Эталонные проекты аппаратного обеспечения распространяются по лицензии Creative Commons Attribution Share-Alike 2.5 и доступны на веб-сайте Arduino. Также доступны макеты и производственные файлы для некоторых версий оборудования.
Хотя конструкции аппаратного и программного обеспечения доступны бесплатно по лицензиям с авторским левом , разработчики попросили, чтобы название Arduino было эксклюзивным для официального продукта и не использовалось в производных работах без разрешения. В официальном политическом документе по использованию названия Arduino подчеркивается, что проект открыт для включения работ других лиц в официальный продукт. [26] В некоторых коммерческих продуктах, совместимых с Arduino, название проекта избегалось, используя различные имена, оканчивающиеся на -duino . [27]
Большинство плат Arduino состоят из 8-битного микроконтроллера AVR Atmel (ATmega8, [29] ATmega168, ATmega328 , ATmega1280 или ATmega2560) с различным объемом флэш-памяти, выводов и функций. [30] 32-битная плата Arduino Due , основанная на Atmel SAM3X8E , была представлена в 2012 году. [31] На платах используются одно- или двухрядные контакты или гнездовые разъемы, которые облегчают соединения для программирования и включения в другие схемы. Они могут подключаться к дополнительным модулям, называемым щитами . Множественные и, возможно, расположенные друг над другом экраны могут иметь индивидуальную адресацию через последовательную шину I²C . Большинство плат включают в себя линейный стабилизатор на 5 В и кварцевый генератор или керамический резонатор на 16 МГц . Некоторые конструкции, такие как LilyPad [32] , работают на частоте 8 МГц и не требуют встроенного стабилизатора напряжения из-за ограничений форм-фактора .
Микроконтроллеры Arduino предварительно запрограммированы загрузчиком, который упрощает загрузку программ во встроенную флэш-память . Загрузчиком по умолчанию для Arduino Uno является загрузчик Optiboot. [33] Платы загружаются с программным кодом через последовательное соединение с другим компьютером. Некоторые последовательные платы Arduino содержат схему сдвига уровня для преобразования между логическими уровнями RS-232 и сигналами уровня транзисторно-транзисторной логики ( последовательный TTL ). Современные платы Arduino программируются через универсальную последовательную шину (USB), реализованную с использованием микросхем адаптера USB-последовательный порт, таких как FTDI FT232. Некоторые платы, такие как платы Uno более поздних моделей, заменяют чип FTDI отдельным чипом AVR, содержащим прошивку USB-последовательный порт, которую можно перепрограммировать через собственный разъем ICSP . В других вариантах, таких как Arduino Mini и неофициальный Boarduino, используется съемная плата или кабель адаптера USB-последовательный порт, Bluetooth или другие методы. При использовании с традиционными инструментами микроконтроллера вместо Arduino IDE используется стандартное программирование внутрисистемного программирования (ISP) AVR.
Плата Arduino предоставляет большинство контактов ввода-вывода микроконтроллера для использования другими схемами. Diecimila , [a] Duemilanove , [b] и текущий Uno [c] имеют 14 цифровых выводов ввода-вывода, шесть из которых могут генерировать сигналы с широтно-импульсной модуляцией , и шесть аналоговых входов, которые также можно использовать в качестве шести цифровых входов I/O. /О контакты. Эти контакты находятся в верхней части платы через гнездовые разъемы диаметром 0,1 дюйма (2,54 мм). В продаже также имеется несколько сменных прикладных щитов. Платы Arduino Nano и Arduino-совместимые платы Bare Bones [34] и Boarduino [35] могут иметь штыревые разъемы на нижней стороне платы, которые можно подключать к беспаечным макетам .
Существует множество плат, совместимых с Arduino и основанных на Arduino. Некоторые из них функционально эквивалентны Arduino и могут использоваться как взаимозаменяемые. Многие расширяют базовую версию Arduino, добавляя драйверы вывода, часто для использования в школьном образовании, [36] чтобы упростить создание багги и небольших роботов. Другие электрически эквивалентны, но меняют форм-фактор, иногда сохраняя совместимость с экранами, иногда нет. В некоторых вариантах используются разные процессоры с разной совместимостью.
Оригинальное оборудование Arduino было произведено итальянской компанией Smart Projects. [37] Некоторые платы под маркой Arduino были разработаны американскими компаниями SparkFun Electronics и Adafruit Industries . [38] По состоянию на 2016 год [обновлять]коммерчески выпускалось 17 версий аппаратного обеспечения Arduino.
В Arduino и платах, совместимых с Arduino, используются платы расширения печатных плат, называемые шилдами , которые подключаются к обычно поставляемым разъемам контактов Arduino. [55] Щиты могут обеспечивать управление двигателем для 3D-печати и других приложений, GNSS (спутниковой навигации), Ethernet, жидкокристаллического дисплея (ЖК-дисплея) или макетирования ( прототипирования ). Несколько щитов также можно сделать своими руками (DIY). [56] [57] [58]
Программа для оборудования Arduino может быть написана на любом языке программирования с использованием компиляторов, которые создают двоичный машинный код для целевого процессора. Atmel предоставляет среду разработки для своих 8-битных микроконтроллеров AVR и 32-битных ARM Cortex-M : AVR Studio (более старая версия) и Atmel Studio (новая версия). [59] [60] [61]
Интегрированная среда разработки (IDE) Arduino — это кроссплатформенное приложение (для Microsoft Windows , macOS и Linux ), основанное на Processing IDE , написанное на Java . В качестве стиля программирования он использует Wiring API. Он включает в себя редактор кода с такими функциями, как вырезание и вставка текста, поиск и замена текста, автоматическое отступы, сопоставление фигурных скобок и подсветку синтаксиса , а также предоставляет простые механизмы одним щелчком мыши для компиляции и загрузки программ на плату Arduino. Он также содержит область сообщений, текстовую консоль, панель инструментов с кнопками для общих функций и иерархию рабочих меню. Исходный код IDE распространяется под лицензией GNU General Public License , версия 2. [63]
Arduino IDE поддерживает языки C и C++, используя специальные правила структурирования кода. Arduino IDE предоставляет библиотеку программного обеспечения из проекта Wiring , которая обеспечивает множество общих процедур ввода и вывода. Написанный пользователем код требует только двух основных функций: для запуска эскиза и основного цикла программы, которые компилируются и связываются с программной заглушкой main() в исполняемую циклическую исполнительную программу с помощью инструментальной цепочки GNU , также включенной в дистрибутив IDE. Arduino IDE использует программу avrdude для преобразования исполняемого кода в текстовый файл в шестнадцатеричной кодировке, который загружается в плату Arduino с помощью программы-загрузчика, встроенной в прошивку платы. Традиционно Arduino IDE использовалась для программирования официальных плат Arduino на базе микроконтроллеров Atmel AVR, но со временем, когда популярность Arduino выросла и появились компиляторы с открытым исходным кодом, многие другие платформы от PIC , STM32 , TI MSP430 , ESP32 могут кодироваться с использованием Arduino IDE. [64]
Начиная с версии 1.8.12, Windows-компилятор Arduino IDE поддерживает только Windows 7 или более позднюю версию ОС. В Windows Vista или более ранней версии при попытке проверить/загрузить программу возникает ошибка «Неопознанное приложение Win32». Чтобы запустить IDE на старых машинах, пользователи могут либо использовать версию 1.8.11, либо скопировать исполняемый файл «arduino-builder» из версии 11 в свою текущую папку установки, поскольку он не зависит от IDE. [65]
Первоначальная альфа-превью новой среды разработки Arduino была выпущена 18 октября 2019 года под названием Arduino Pro IDE. Предварительная бета-версия была выпущена 1 марта 2021 года и переименована в IDE 2.0. 14 сентября 2022 года Arduino IDE 2.0 была официально выпущена как стабильная. [67]
Система по-прежнему использует Arduino CLI (интерфейс командной строки), но улучшения включают более профессиональную среду разработки и поддержку автозаполнения. [68] Интерфейс приложения основан на среде разработки с открытым исходным кодом Eclipse Theia . Его основные новые функции: [69]
Скетч — это программа , написанная с помощью Arduino IDE. [70] Эскизы сохраняются на компьютере разработчика в виде текстовых файлов с расширением .ino . Программное обеспечение Arduino (IDE) до версии 1.0 сохраняло эскизы с расширением .pde .
Минимальная программа Arduino C/C++ состоит всего из двух функций: [71]
setup()
: Эта функция вызывается один раз, когда скетч запускается после включения питания или перезагрузки. Он используется для инициализации переменных, режимов входных и выходных контактов и других библиотек, необходимых в эскизе. Это аналог функции main()
. [72]loop()
: После setup()
выхода из функции (завершения) loop()
функция повторно выполняется в основной программе. Он управляет платой до тех пор, пока плата не будет выключена или перезагружена. Это аналог функции while(1)
. [73]Большинство плат Arduino содержат светодиод (LED) и токоограничивающий резистор, подключенный между выводом 13 и землей, что является удобной функцией для многих тестов и функций программы. [74] Типичная программа, используемая новичками, похожая на Hello, World! , — это «мигание», которое многократно мигает встроенным светодиодом, встроенным в плату Arduino. Эта программа использует функции pinMode()
, digitalWrite()
и delay()
, которые предоставляются внутренними библиотеками, включенными в среду IDE. [75] [76] [77] Эта программа обычно загружается производителем в новую плату Arduino.
const int LED_PIN = 13 ; // Номер контакта, подключенного к светодиоду. недействительная настройка () { pinMode ( LED_PIN , OUTPUT ); // Настройте контакт 13 как цифровой выход. } void цикл () { digitalWrite ( LED_PIN , HIGH ); // Включаем светодиод. задержка ( 1000 ); // Подождите 1 секунду (1000 миллисекунд). цифровая запись ( LED_PIN , LOW ); // Выключаем светодиод. задержка ( 1000 ); // Подождите 1 секунду. }
Открытый исходный код проекта Arduino облегчил публикацию множества библиотек бесплатного программного обеспечения, которые другие разработчики используют для расширения своих проектов.
Существует порт ОС Xinu для ATmega328P (Arduino Uno и другие с тем же чипом), который включает в себя большинство основных функций. [78] Исходный код этой версии находится в свободном доступе. [79]
Существует также инструмент для создания потоков под названием Protothreads. Протопотоки описываются как «чрезвычайно легкие потоки без стека, предназначенные для систем с жесткими ограничениями памяти, таких как небольшие встроенные системы или узлы беспроводной сенсорной сети». [80]
Существует порт FreeRTOS для Arduino. [81] Это доступно в диспетчере библиотек Arduino. Он совместим с рядом плат, включая Uno.
Проект Arduino получил почетное упоминание в категории «Цифровые сообщества» на конкурсе Prix Ars Electronica 2006 года . [86]
Инженерный комплект Arduino получил премию Bett Award в категории «Цифровые услуги высшего или дальнейшего образования» в 2020 году. [87]