Международная конференция разработчиков
и пользователей свободного программного обеспечения

Открытая аппаратно-программная платформа Arduino

Валерий Касьяник, Брестский государственный технический университет, val_tut@tut.by

LVEE 2009

Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB/ RS-232, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов.

Arduino представляет собой открытую аппаратную вычислительную платформу, основными компонентам которой являются простая плата ввода/вывода (см. рис. 1, 2) и среда разработки на языке Processing/Wiring.


Рис.1. Arduino промышленного изготовления

Эта платформа интересна именно своей открытостью и простотой. Ключевой особенностью Arduino является тот факт, что под открытой лицензией распространяется не только программное обеспечение контроллеров, но так же и схемотехнические решения. Вся документация и чертежи контроллеров Arduino выпущены под свободной лицензией Creative Commons — Attribution Share-Alike, и доступны для загрузки с сайта компании. Любой желающий может изготовить каждое из представленных на сайте устройств самостоятельно или даже открыть производство, т.к. Выбранная лицензия не устанавливает никаких финансовых отчислений разработчикам.


Рис.2. Самодельный вариант Arduino

Небольшая плата взимается только за использование зарегистрированной торговой марки Arduino, поэтому любители создали ответвление от проекта – Freeduino, которое полностью аппаратно и программно совместимо с Arduino.

Несмотря на то, что плата была создана преподавателем итальянского ВУЗа Ivrea Massimo Banzi для обучения студентов, применение контроллеров Arduino не ограничивается академическими рамками. С их помощью любители и разработчики модернизировали блоки управления двигателями автомобилей, создали модели беспилотных летательных аппаратов и даже кластер из нескольких плат, систему мониторинга состояния почвы комнатных растений.


Рис. 3. Подключение LED-экрана

Стоит отметить, что Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере (например, Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider).

Проект Arduino был удостоен почетного упоминания при вручении призов Prix Ars Electronica 2006 в категории Digital Communities.

Технически Arduino представляет собой небольшую электронную плату, ядром которой является микроконтроллер ATmega168. На плате размещены 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM), 6 аналоговых входов, тактовый генератор на 16 МГц, разъемы питания и USB, ICSP-порт (разработка фирмы Atmel для простой прошивки своих контроллеров), несколько контрольных светодиодов и кнопка сброса. В самодельных вариантах плат разъем USB часто заменяется на RS-232, а подключение платы осуществляется через переходник.

Интегрированная среда разработки Arduino – это кроссплатформенное приложение на Java, включающее в себя редактор кода, компилятор и модуль передачи прошивки в плату. Среда разработки основана на языке программирования Processing и спроектирована с упором на простоту и удобство. Используемый язык программирования микропроцессора аналогичен проекту Wiring. Этот язык совместим с C/C++ и дополнен некоторыми библиотеками. Перед прошивкой, программы обрабатываются препроцессором, а затем компилируются с помощью AVR-GCC. Ключевой особенностью платы является то, что в нее прошита специальная прошивка-bootloader, которая отвечает за связь с компьютером и «горячее» перепрограммирование платы.

Так как изначально в проекте Arduino использовались микроконтроллеры Atmega8, затем был выполнен перевод на Atmega168 и совсем недавно – на ATmega1280, то на данный момент доступно 10 версий плат:

  1. Serial Arduino, программируется через последовательное соединение (разъем DB9), используется ATmega8.
  2. Arduino Extreme, с интерфейсом USB для программирования, используется ATmega8.
  3. Arduino Mini, миниатюрная версия Arduino, использующая поверхностный монтаж ATmega168.
  4. Arduino Nano, еще миниатюрнее, с питанием от USB и поверхностным монтажем ATmega168.
  5. LilyPad Arduino, минималистичный дизайн для носимых применений с поверхностным монтажем ATmega168.
  6. Arduino NG, с интерфейсом USB для программирования, используется ATmega8.
  7. Arduino NG plus, также с программированием через USB, используется ATmega168.
  8. Arduino BT, с интерфейсом программирования Bluetooth, используется ATmega168.
  9. Arduino Diecimila, текущая версия, использует интерфейс USB и Atmega168 в DIL28 корпусе (как на рис.).
  10. Arduino Duemilanove (выпущена в 2009), на основе ATmega168, с автоматическим выбором питания от USB или постоянного тока.
  11. Arduino Mega (2009), на основе ATmega1280.

Несмотря на большое разнообразие плат, все они совместимы с предыдущими версиями, что является одним из главных достоинств проекта. Кроме обратной совместимости есть и другие плюсы:

  • Кроссплатформенность. Программное обеспечение Arduino работает на Windows, Macintosh OS X, Linux и других операционных системах, поскольку является открытым и работает на Java.
  • Простая среда программирования. Программная проста в использовании для новичков, но достаточно гибкая для продвинутых пользователей, что позволяет быстро достигать нужного результата. Особенно это удобно в образовательной среде, где студенты могут с легкостью разобраться с платформой, а преподаватели — разработать учебный курс и задания.
  • Открытый исходный код. Язык может быть расширен с помощью библиотек на C++, а более продвинутые специалисты могут создать свой собственный инструментарий для Arduino на основе компилятора AVR C.
  • Открытые спецификации и схемы оборудования. Так как Arduino основан на широко распространенных микроконтроллерах Atmel, а схемы модулей опубликованы под лицензией Creative Commons, опытные схемотехники могут создать собственную версию модуля для своих нужд. Даже сравнительно неопытные пользователи могут сделать макетную версию модуля, чтобы понять, каким образом он работает.
  • Цена. Покупка платы в непосредственно Беларуси пока невозможна, однако ее можно заказать в России на Linuxcenter или в Польше. Один из самых популярных вариантов Decimlia стоит до 40 долларов. В случае собственноручной сборки платы стоимость составит всего 30 – 40 тысяч бел.руб (менее 15 долларов).

Недостатки платформы частично вытекают из спецификации используемого микроконтроллера. Малый объем ПЗУ, низкая частота накладывают ограничения на использование платы. Однако в этом есть и свои плюсы, а именно – низкая стоимость и низкое энергопотребление. Также, несмотря на простоту платформы, для ее использования необходимы знания основ электроники.

Так как проект Arduino открыт, то за время его существования сторонними разработчиками и просто любителями были сделаны различные варианты похожих плат. Ниже приведены платы, полностью или почти полностью совместимые как с аппаратной, так и с программной частью Arduino, включая возможность присоединения дочерних плат.

  • Freeduino SB, производится и продается в виде мини-набора для сборки компанией Solarbotics.
  • Freeduino MaxSerial, плата со стандартным последовательным портом (разъем DB9), производится и продается в собранном виде или в виде набора для сборки компанией Fundamental Logic.
  • Freeduino Through-Hole, плата, в которой не используется поверхностный монтаж, производится и продается в виде набора фирмой NKC Electronics.
  • Illuminato, вместо ATMega168 используется ATMega645, что дает 64K флеш-памяти, 4K ОЗУ и 32 канала ввода-вывода. Аппаратная и программная части выпущены как open source. Плата выглядит тонкой и имеет 10 светодиодов, которыми можно управлять, используя «скрытые» инструкции. Разработана компанией Liquidware.
  • «Metaboard» — в основном Arduino-совместимая плата, целью проектирования которой была минимизация сложности и, как следствие, стоимости. Аппаратное и программное обеспечение — open source. Разработана в Metalab, хакспейсе в Вене.
    Seeeduino, производная от Arduino Diecimila.
  • MRC28 – Универсальный робо-контроллер MRC28 v1.4.1

Сообщество Arduino быстро развивается: разработчики с завидной частотой выпускают новые версии среды разработки и прошивок, появляется все большее количество разработок на базе Arduino, платформа усложняет свою аппаратную и программную часть, а также увеличивается количество библиотек для разработки программ микроконтроллера. Наибольшую часть работы проделывают создатели проекта. Ядро команды разработчиков Arduino сейчас составляют Массимо Банци (Massimo Banzi), Девид Куартиллье (David Cuartielles), Том Иго (Tom Igoe), Жанлюка Мартино (Gianluca Martino), Девид Меллис (David Mellis) и Николас Замбетти (Nicholas Zambetti). Однако наиболее интересные решения и применения платформы придуманы и реализованы радиолюбителями и фанатами. Сообщество Arduino на сегодняшний день в области электроники одно из самых быстрорастущих.

литература

  1. Статья в Википедии, посвященная Arduino
  2. Официальный сайт проекта
  3. Getting Started with Arduino, M. Bianzi ,2008 ,128.
  4. Русскоязычное сообщество на http://freeduino.ru/