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) контактов, которые могут быть подключены к различным платам расширения («щитам») или макетным платам (для прототипирования) и другим схемам. Платы оснащены интерфейсами последовательной связи, включая Universal Serial Bus (USB) на некоторых моделях, которые также используются для загрузки программ. Микроконтроллеры можно программировать с использованием языков программирования C и C++ (Embedded C), используя стандартный API, который также известен как язык программирования Arduino , вдохновленный языком Processing и используемый с модифицированной версией Processing IDE. В дополнение к использованию традиционных цепочек инструментов компилятора , проект Arduino предоставляет интегрированную среду разработки (IDE) и инструмент командной строки, разработанный на Go .
Проект Arduino начался в 2005 году как инструмент для студентов в Interaction Design Institute Ivrea , Италия, [3] с целью предоставить новичкам и профессионалам недорогой и простой способ создания устройств, взаимодействующих с окружающей средой с помощью датчиков и приводов . Распространенными примерами таких устройств, предназначенных для начинающих любителей, являются простые роботы , термостаты и датчики движения .
Название Arduino происходит от кафе в Ивреа , Италия, где встречались некоторые основатели проекта. Бар был назван в честь Ардуина Ивреа , который был маркграфом Ивреа и королем Италии с 1002 по 1014 год. [ 4]
Проект Arduino был начат в Институте дизайна взаимодействия Ивреа (IDII) в Ивреа , Италия. [3] В то время студенты использовали микроконтроллер BASIC Stamp стоимостью 50 долларов. В 2004 году Эрнандо Барраган создал платформу разработки Wiring в качестве магистерской диссертации в IDII под руководством Массимо Банци и Кейси Реаса . Кейси Реас известен тем, что совместно с Беном Фраем создал платформу разработки Processing . Целью проекта было создание простых и недорогих инструментов для создания цифровых проектов неинженерами. Платформа Wiring состояла из печатной платы (PCB) с микроконтроллером ATmega 128, IDE на основе Processing и библиотечных функций для легкого программирования микроконтроллера. [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 LLC получала бы от них роялти. В уставе Arduino LLC указывалось, что каждый из пяти основателей передает право собственности на бренд Arduino вновь созданной компании. [ необходима цитата ]
В конце 2008 года компания Джанлуки Мартино, Smart Projects, зарегистрировала торговую марку Arduino в Италии и держала это в секрете от других соучредителей около двух лет. Это выяснилось, когда компания Arduino попыталась зарегистрировать торговую марку в других регионах мира (первоначально они зарегистрировали ее только в США) и обнаружила, что она уже зарегистрирована в Италии. Переговоры с Мартино и его фирмой о передаче торговой марки под контроль оригинальной компании Arduino провалились. В 2014 году Smart Projects начала отказываться платить роялти. Затем они назначили нового генерального директора Федерико Мусто, который переименовал компанию в Arduino SRL и создал веб-сайт arduino.org , скопировав графику и макет оригинального arduino.cc . Это привело к расколу в команде разработчиков Arduino. [9] [10] [11]
В январе 2015 года компания Arduino LLC подала иск против Arduino SRL. [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 Cloud как расширение онлайн-среды Create. [24]
По состоянию на февраль 2020 года сообщество Arduino включало около 30 миллионов активных пользователей, исходя из загрузок IDE. [25]
Arduino — это аппаратное обеспечение с открытым исходным кодом . Справочные чертежи оборудования распространяются по лицензии Creative Commons Attribution Share-Alike 2.5 и доступны на веб-сайте Arduino. Также доступны файлы макетов и производства для некоторых версий оборудования.
Хотя аппаратные и программные разработки находятся в свободном доступе по лицензиям copyleft , разработчики запросили, чтобы название 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-to-serial, таких как FTDI FT232. Некоторые платы, такие как платы Uno более поздней модели, заменяют микросхему FTDI отдельной микросхемой AVR, содержащей прошивку USB-to-serial, которая перепрограммируется через собственный заголовок ICSP . Другие варианты, такие как Arduino Mini и неофициальный Boarduino, используют съемную плату адаптера USB-to-serial или кабель, Bluetooth или другие методы. При использовании с традиционными инструментами микроконтроллера вместо Arduino IDE используется стандартное внутрисистемное программирование AVR (ISP).
Плата Arduino предоставляет большую часть контактов ввода-вывода микроконтроллера для использования другими схемами. Diecimila , [a] Duemilanove , [b] и текущий Uno [c] предоставляют 14 цифровых контактов ввода-вывода, шесть из которых могут выдавать сигналы с широтно-импульсной модуляцией , и шесть аналоговых входов, которые также могут использоваться как шесть цифровых контактов ввода-вывода. Эти контакты находятся на верхней части платы, через гнездовые разъемы 0,1 дюйма (2,54 мм). Несколько подключаемых прикладных щитов также доступны в продаже. Платы Arduino Nano и совместимые с Arduino платы Bare Bones Board [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 . Оно использует API Wiring в качестве стиля программирования и HAL . Оно включает в себя редактор кода с такими функциями, как вырезание и вставка текста, поиск и замена текста, автоматический отступ, сопоставление фигурных скобок и подсветка синтаксиса , а также предоставляет простые механизмы для компиляции и загрузки программ в один клик на плату Arduino. Оно также содержит область сообщений, текстовую консоль, панель инструментов с кнопками для общих функций и иерархию меню операций. Исходный код IDE выпущен под лицензией GNU General Public License , версия 2. [63]
Arduino IDE поддерживает языки C и C++, используя специальные правила структурирования кода. Arduino IDE предоставляет библиотеку программного обеспечения из проекта Wiring , которая обеспечивает множество общих процедур ввода и вывода. Код, написанный пользователем, требует только двух основных функций, для запуска эскиза и основного цикла программы, которые компилируются и связываются с программной заглушкой main() в исполняемую циклическую исполнительную программу с помощью GNU toolchain , также включенного в дистрибутив IDE. Arduino IDE использует программу avrdude для преобразования исполняемого кода в текстовый файл в шестнадцатеричной кодировке, который загружается в плату Arduino программой-загрузчиком в прошивке платы. Традиционно Arduino IDE использовалась для программирования официальных плат Arduino на базе микроконтроллеров Atmel AVR, но со временем, когда популярность Arduino выросла и появились компиляторы с открытым исходным кодом, многие другие платформы от PIC , STM32 , TI MSP430 , ESP32 можно было кодировать с помощью Arduino IDE. [64]
Начиная с версии 1.8.12, компилятор Arduino IDE для Windows поддерживает только 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 Open Source IDE. Его основные новые функции: [69]
Одной из важных функций, предоставляемых Arduino IDE 2.0, является функция отладки. [70] Она позволяет пользователям выполнять пошаговую настройку, вставлять точки останова или просматривать память. Для отладки требуется целевой чип с отладочным портом и отладочным зондом. Официальная плата Arduino Zero может быть отлажена «из коробки». Другие официальные платы Arduino SAMD21 требуют отдельного SEGGER J-Link или Atmel-ICE.
Для сторонней платы отладка в Arduino IDE 2.0 также возможна, если такая плата поддерживает GDB, OPENOCD и имеет отладочный зонд. Сообщество внесло вклад в отладку для Arduino на базе ATMega328P [71] или плат CH32 RiscV [72] и т. д.
Эскиз — это программа, написанная с помощью Arduino IDE. [ 73] Эскизы сохраняются на компьютере разработчика в виде текстовых файлов с расширением .ino . Arduino Software (IDE) до версии 1.0 сохраняла эскизы с расширением .pde .
Минимальная программа Arduino C/C++ состоит всего из двух функций: [74]
setup()
: Эта функция вызывается один раз при запуске эскиза после включения питания или сброса. Она используется для инициализации переменных, режимов входных и выходных контактов и других библиотек, необходимых в эскизе. Она аналогична функции main()
. [75]loop()
: После setup()
выхода (завершения) функции loop()
функция выполняется повторно в основной программе. Она управляет платой до тех пор, пока плата не будет выключена или не будет сброшена. Она аналогична функции while(1)
. [76]Большинство плат Arduino содержат светодиод (LED) и токоограничивающий резистор, подключенные между контактом 13 и землей, что является удобной функцией для многих тестов и программных функций. [77] Типичная программа, используемая новичками, похожая на Hello, World!, — это «blink», которая многократно мигает встроенным в плату Arduino светодиодом. Эта программа использует функции pinMode()
, digitalWrite()
, и delay()
, которые предоставляются внутренними библиотеками, включенными в среду IDE. [78] [79] [80] Эта программа обычно загружается в новую плату Arduino производителем.
const int LED_PIN = 13 ; // Номер контакта, прикрепленного к светодиоду. void setup () { pinMode ( LED_PIN , OUTPUT ); // Настройте вывод 13 как цифровой выход. } void loop () { digitalWrite ( LED_PIN , HIGH ); // Включить светодиод. delay ( 1000 ); // Подождать 1 секунду (1000 миллисекунд). digitalWrite ( LED_PIN , LOW ); // Выключить светодиод. delay ( 1000 ); // Подождать 1 секунду. }
Открытый исходный код проекта Arduino способствовал публикации множества бесплатных программных библиотек, которые другие разработчики используют для расширения своих проектов.
Существует порт Xinu OS для ATmega328P (Arduino Uno и другие с таким же чипом), который включает в себя большинство основных функций. [81] Исходный код этой версии находится в свободном доступе. [82]
Также существует инструмент потоковой обработки, называемый Protothreads. Protothreads описываются как «чрезвычайно легкие потоки без стека, разработанные для систем с жесткими ограничениями памяти, таких как небольшие встроенные системы или беспроводные сенсорные сетевые узлы». [83]
Существует порт FreeRTOS для Arduino. [84] Он доступен в Arduino Library Manager. Он совместим с рядом плат, включая Uno.
Проект Arduino получил почетное упоминание в категории «Цифровые сообщества» на конкурсе Prix Ars Electronica 2006 года . [89]
В 2020 году комплект Arduino Engineering Kit получил премию Bett Award в номинации «Цифровые услуги в сфере высшего и дополнительного образования». [90]