Выпуск #3/2016
Н.Елисеев, И.Шахнович
Arduino – это очень серьезно. Большие возможности маленьких устройств
Arduino – это очень серьезно. Большие возможности маленьких устройств
Просмотры: 4379
Рассмотрена платформа Arduino: история создания, основные модули, примеры применения. Отмечено, что модули Arduino – это дешевый, массовый инструмент, который позволяет существенно ускорить и удешевить процесс создания сложных и ответственных систем, а также является прекрасным средством для начального обучения электронике.
Теги: arduino platform microcontroller open platform микроконтроллер открытые платформы платформа arduino
Открытый код + открытые платформы = успех?
Электроника – одна из тех областей науки и промышленности, которые объективно изменяют мир. При этом неизбежно меняются и сами подходы, используемые внутри электронной отрасли. Один из них – аппаратные решения с "открытым кодом", свободным от лицензионных ограничений. Это направление стало продолжением концепции свободного программного обеспечения с открытым кодом – open source. Речь идет не просто об открытом коде программы, но и о возможности свободно его использовать в своих приложениях, модифицировать и т. п. Яркий пример проекта на принципах open source – операционная система Linux.
Общепризнанный идеолог концепции open source, основатель Фонда свободного программного обеспечения Free Software Foundation Ричард Столлман ввел в оборот тип лицензий copyleft. Их суть – программы, распространяемые под этими лицензиями, полностью свободны от авторских ограничений. А продукты, созданные на основе этих программ, могут распространяться только на основе таких же copyleft-лицензий (последнее положение не всегда обязательно). Иными словами, полная свобода распространения. И это не анархический призыв разрушить институт авторского права, а путь к подлинной массовости. И он никак не препятствует получению прибыли. Инструменты и приложения становятся доступными всем разработчикам, за них не нужно платить, но на их основе можно создавать – и продавать! – собственные продукты.
Аналогичная концепция несколько позднее стала использоваться и в области аппаратуры. Здесь основополагающими принципами стали открытая исходная конструкторская документация и коды встроенного ПО при полной свободе их использования. В одну точку сошлись два подхода – принцип открытых систем и безлицензионное применение.
В свою очередь, открытые системы или открытые платформы (как антитеза закрытым проприетарным решениям) – это концептуальный подход, который, по сути, привел к формированию современного облика ИТ-индустрии. Вспомним, в начале-середине 1980-х, когда персональные компьютеры стали превращаться с массовый товар, своего рода вид бытовой техники, именно открытая архитектура "IBM PC" де-факто стала отраслевым стандартом. А более совершенные и изысканные решения, в том числе компьютеры Apple Macintosh, так и остались, по сути, нишевыми продуктами. И не случайно, яркий сторонник открытых платформ, Билл Гейтс поставил именно на концепцию "IBM PC" – и выиграл.
Причина успеха сегодня очевидна – персональный компьютер с открытой архитектурой превратился в глобальный мировой конструктор, "детали" для которого выпускает множество конкурирующих производителей во всем мире. Фактически родилась новая индустрия – один из доминирующих сегодня сегментов всей электроники. Масштабность производства привела к беспрецедентному снижению цен и все возрастающей массовости. Программисты всего мира по сути работали на Microsoft, создавая свои продукты под ОС Windows, производители – на корпорацию Intel и нескольких ее конкурентов, создавая решения на основе их процессоров и т. д. Сложилась огромная, глобальная саморазвивающаяся система с положительной обратной связью. Которая в итоге привела к новому глобальному качеству – к современному облику IT-индустрии, который, в свою очередь, становится фундаментом для очередных технологических скачков.
Но открытые платформы – это еще не все. Входной билет в мир разработок на их основе зачастую не очень дешев. Платформы открыты, но за право работать с ними нужно платить. Следующий шаг на пути к массовости – отказ от платы. В 1997 году была создана организация Open Source Initiative, лидерами которой выступили Брюс Перенс (автор определяющего документа The Open Source Definition) и Эрик С.Раймонд. Эта организация стала проводником идеологии свободного аппаратного обеспечения. Сегодня эта идея воспринята и поддержана самыми разными организациями, включая Европейский центр ядерных исследований CERN. Проекты в области свободного аппаратного обеспечения охватывают области от микропроцессоров (наиболее известный – процессор LEON c архитектурой SPARC V8, VHDL-описание ряда вариантов которого распространяется под свободной лицензией GNU General Public License) до законченных устройств: 3D-принтеры, телекоммуникационное оборудование, компьютеры, робототехника и т. д.
Одно из направлений в области свободного аппаратного обеспечения связано с областью встраиваемых систем. Именно к этом классу продуктов и принадлежит платформа Arduino – герой нашего рассказа. Но только ли к этому классу?
Arduino – краткая история проекта
Разработка встраиваемых электронных устройств и систем на их основе – это удел высоких профессионалов. Одна из основных сложностей – нужны специалисты, сочетающие знания в области электроники (умение разработать управляющий электронный модуль на основе микроконтроллера, цифровых и аналоговых периферийных схем) и программирования (как прикладного, так и системного). Причем модуль на основе микроконтроллера мало разработать – его еще нужно спаять. А это – не самый простой навык. Вы не пробовали дома паять микросхемы в современных корпусах? Конечно, можно заказать печатную плату, а затем и ее монтаж. Подобные услуги сегодня вполне доступны – но много ли неспециалистов в электронике умеют ими пользоваться и готовы за них платить?
Конечно, за последние 10–15 лет появилось немало решений – и семейства программируемых логически контроллеров, и глобальный конструктор под управлением LabVIEW компании National Instruments, множество оценочных плат, различные среды разработки и т. п. Все это – очень эффективные, но профессиональные, дорогие инструменты. Со стартовыми ценами в тысячи долларов (оценочные платы стоят дешевле – порядка сотен долларов – но общей картины это не меняет).
Конечно, цены на эти продукты совершенно адекватны в случае сложных проектов (например, создание бортовых систем пассажирского самолета или систем автоматизации химического цеха). Но едва ли подобные затраты доступны для массовых разработчиков. И речь идет даже не о любителях, а о многочисленных студентах, молодых специалистах, командах будущих стартапов и т. п. – о той питательной среде, которая сегодня и определяет развитие электроники как инновационной сферы. Потому как если сами микроэлектронные технологии рождаются в стенах научных лабораторий, воплощаются в микросхемы на запредельно дорогих производствах, то создавать конечные решения на их основе должна огромная армия разработчиков во всем мире. И это не все, потому что есть еще армия специалистов в различных областях, которые рады бы использовать в своих задачах возможности микроконтроллеров, но не умеют этого делать. Массовость возможна там, где превалирует простота применения и дешевизна инструментария. Именно эти критерии – просто и дешево – легли в основу проекта Arduino.
История проекта началась в 2003–2004 годах. В те годы (с 2001 по 2005) в древнем городе Ивреа в Северной Италии действовала высшая техническая школа интерактивного проектирования – Interaction Design Institute Ivrea (IDII). В 2003 году студент этого института Хернандо Барраган (Hernando Barragбn) родом из Колумбии приступил к работе над своим магистерским дипломным проектом. Он занялся созданием платформы Wiring, делающей доступными разработку цифровых систем управления для неинженеров в области электроники.
Платформа включала полный комплект инструментов для создания встраиваемых решений: язык программирования, среду разработки и отладки (IDE – integrated development environment) и плату с микроконтроллером. Для программирования микроконтроллеров использовался свободно распространяемый открытый язык Processsing. Он был создан на основе Java Бенжамином Фраем и Кэйси Ризом – сотрудниками "группы эстетики и вычислений" (The Aesthetics and Computation Group) в лаборатории MIT Media Lab Массачусетского технологического института (MIT). Руководителями дипломной работы Х.Баррагана выступали Кейси Риз и преподаватель IDII Массимо Банци.
В качестве микроконтроллера был выбран ATmega128 компании Atmel. Этот очень популярный в начале 2000-х годов 8-разрядный RISC-микроконтроллер с архитектурой AVR обладал рядом важных достоинств. Прежде всего, он программировался простой записью кода программы во встроенную флеш-память по последовательному интерфейсу SPI (фирменная технология ISP – In-System Programming). Кроме того, компания Atmel свободно распространяла для AVR-контроллеров комплект инструментов разработки программ (компилятор С/С++, ассемблер, компоновщик программ, а также С-библиотеки). Последнее стало решающим фактором для отказа от очень дешевых и популярных в те годы PIC-контроллеров компании Microchip в пользу AVR.
Принципиально, что уже на первой плате для связи с компьютером был использован метод "RS-232 через USB" (виртуальный COM-порт), реализованный на основе контроллера FTDI232BM компании FTDI. В результате и для микроконтроллера, и для прикладного ПО на компьютере канал связи выглядел как обычный последовательный интерфейс RS-232, но физически соединение происходило через USB-порт. Это очень упрощало работу с платой – в середине 2000-х годов последовательный порт RS-232 на обычных персональных компьютерах уже стал экзотикой.
Х.Барраган собственноручно спаял 25 плат на основе ATmega128 и роздал их студентам IDII вместе с необходимым программным обеспечением [1]. На этих комплектах был выполнен ряд интересных работ, показавших эффективность подхода. В 2004 году Х.Барраган с отличием защитил магистерскую диссертацию и уехал в Колумбию работать в Андском университете в Боготе. Там он занялся преподаванием и продолжил работы над платформой Wiring, не теряя контактов с сокурсниками по IDII.
Тем временем его учитель Массимо Банци решил начать новый проект, куда вошли его бывшие студенты Девид Куартиллье (David Cuartielles), Девид Меллис (David Mellis) и Николас Замбетти (Nicholas Zambetti), успевшие поработать с Wiring. К команде присоединился и участвовавший в разработке плат Wiring и помогавший с их производством Джанлука Мартино (Gianluca Martino), который затем создал свою компанию Smart Projects SRL (именно эта компания начала выпуск плат Arduino). Пригласили в проект и Тома Иго (Tom Igoe) из Школы искусств Тиша (Tisch School of the Arts) Нью-йоркского политехнического университета (NYU). Почему в команду не позвали Х.Баррагана, создателя базовой платформы Wiring, остается загадкой.
Зато нет загадки с названием – с 990 года макрграфом Ивреи был господин Ардуин, который в 1002 году стал королем Италии, от чего и умер в 1015 году. Имя короля досталось бару Bar di Re Arduino в его родной Иврее, где любил зависать Массимо Банци. В честь этого бара он и назвал проект Arduino [2].
Проект изначально полностью воспроизводил программную платформу Wiring. Была создана новая плата Arduino USB, ставшая фактически первой в проекте Arduino. Это была простейшая плата на основе микроконтроллера ATmega8, с минимально необходимой обвязкой. Для связи с компьютером через USB-порт использовался контроллер виртуального COM-порта компании FTDI. Все инструментальные средства разработки, включая язык Arduino на базе С/С++ и программную оболочку IDE (на основе Processing) поставлялись свободно и бесплатно, под лицензией copyleft. Аппаратная плата микроконтроллера продавалась по рекордной тогда цене менее 50 долл., которая вскоре упала ниже 30 долл.
Поскольку вся конструкторская документация на плату была открыта, производить ее мог кто угодно. Единственное ограничение налагалось на использование названия Arduino. Только это продуктовое имя подлежало лицензированию и предполагало выплату роялти. Для этого инициаторы проекта создали компанию Arduino LLC (www.arduino.cc), которой принадлежали права на торговую марку Arduino. Однако в 2008 году между партнерами разразился скандал. Оказалось, что владелец компании Smart Projects SRL Джанлука Мартино попытался зарегистрировать права на торговую марку Arduino в США. В ходе разбирательств выяснилось, что до этого он втихую уже зарегистрировал на свою компанию права на торговую марку Arduino в Италии. Последователи судебные разбирательства, взаимные претензии. В итоге сегодня есть две ветви проекта – одна под эгидой Массимо Банци и компании Arduino LLC (arduino.cc), вторая принадлежит Smart Projects SRL (сайт arduino.org). В итоге на обоих сайтах мы видим несколько разный набор новых продуктов. Как следствие, появилось две версии среды разработки Arduino IDE, поддерживающие различный набор плат и библиотек. Более того, команда Arduino LLC продвигает свою продукцию под брендом Adruino только на территории США, для всего остального мира создана торговая марка Genuino. Однако подобный раздор, хоть и породил определенную путаницу, свидетельствует об успешности проекта в целом.
Сегодня проект Arduino из отдельной платформы превратился в глобальную экосистему, охватившую весь мир. По данным одного из сооснователей проекта Дэвида Куартиллье [3], к концу 2013 года в мире было продано более 700 тыс. официальных плат Arduino. А ведь на каждую такую плату приходится по крайней мере столько же плат клонов, которые выпускаются множеством производителей под именами "-duino" (CraftDuino, Freeduino, Seeeduino, Diavolino, Japanino и проч., и проч.), чтобы не платить лицензионные отчисления. И рынок этот только набирает обороты.
Adruino глазами инженера
Платформа Adruino сумела воплотить два противоречивых требования – простоту и дешевизну. Для работы с микроконтроллером не нужен паяльник – только дешевая плата с микроконтроллером и USB-кабель. Подключай плату к компьютеру, скачивай бесплатное ПО, и создавай собственные решения. Язык программирования – простейший, на основе С. Появилась специальная учебная литература. Энтузиастами всего мира наработана база прикладных решений.
Популярность платформы Arduino во многом обусловлена удобством ее программирования. Для написания программного кода, управляющего работой Arduino-систем, используется специальная версия языка C/C++. Есть фирменная бесплатная среда разработки Arduino IDE (рис.1), доступная для загрузки на сайте производителя. Она позволяет писать и отлаживать программный код (так называемые скетчи – sketches), а затем загружать его в микроконтроллер базового модуля через USB-интерфейс. Среда разработки Arduino IDE создана для операционных систем Windows, Mac OS X и Linux. Для большинства модулей Arduino существует готовый код с комментариями. Он легко вставляется в общую программу управления системой и, как правило, требует лишь небольшой доработки применительно к конкретному приложению.
Аппаратная часть платформы Arduino включает несколько моделей базовых модулей и множество плат расширения (shields), а также различные аксессуары [4–6]. Сразу отметим важную и даже удивительную особенность: в отличие от "классических" открытых платформ, стандарта на форм-фактор плат Adruino не существует. Есть лишь несколько различных базовых плат, отличающихся форм-фактором (и числом портов), набором интерфейсов и используемым микроконтроллером. И никто число базовых форм-факторов не ограничивает.
Каждый из базовых модулей представляет собой плату с микроконтроллером (в основном компании Atmel, но в последнее время эта тенденция меняется) и набором сетевых интерфейсов. Принципиальная особенность – в каждом контроллере уже записана программа начального загрузчика. Поэтому разработчику вообще не нужно думать о режиме программирования – все выполняется из оболочки IDE, нажатием одной кнопки.
Uno – базовая модель
Наиболее популярный и "стандартный" модуль, продолжающий самую первую линию плат – это Arduino Uno (рис.2, см. таблицу). Сегодня выпускается уже третья модификация этого модуля (Rev.3). Он размещен на компактной плате 68,6 Ч 53,4 мм и построен на восьмиразрядном микроконтроллере ATmega328. Микроконтроллер работает на тактовой частоте 16 МГц, оснащен флеш-памятью программ объемом 32 Кбайт (из них 0,5 Кбайт используются для начального загрузчика), а также 2 Кбайт СОЗУ (SRAM) для хранения временных данных и 1 Кбайт ЭРПЗУ (EEPROM) для долговременного хранения данных. Никакой дополнительной памяти не предусмотрено.
На плате с двух сторон смонтированы штыревые разъемы. С одной стороны расположены 14 цифровых портов ввода/вывода, шесть из которых могут быть использованы как ШИМ-выводы. Все они работают с напряжением 5 В и рассчитаны на ток до 40 мА (рекомендованное значение 20 мА). С другой стороны находятся шесть аналоговых входов, каждый подключен к 10-разрядному шестиканальному встроенному АЦП микроконтроллера ATmega328. По умолчанию напряжение на аналоговых входах измеряется в диапазоне между "землей" и 5 В, но верхний диапазон можно изменить, подав требуемое напряжение на специальный контакт AREF.
Arduino Uno может питаться как через USB-порт, так и от внешнего устройства (AC/DC-адаптера или батарейки). Источник питания выбирается автоматически. Адаптер можно подсоединить через специальный штыревой разъем, а провода от батарейки вставляются в контакты Gnd and Vin. Платформа может работать при входном напряжении питания от 6 до 20 В, но рекомендуемый диапазон составляет 7–12 В.
В Arduino Uno предусмотрено несколько способов внешней коммуникации. Для связи с компьютером используется канал RS-232 через USB (виртуальный COM-порт). Однако в отличие от первых плат, реализован он не на контроллере FTDI, а с помощью дополнительного микроконтроллера ATmega16U2 (ATmega8U2 в ранних версиях). Процесс передачи данных индицируют специальные светодиоды. Последовательный асинхронный канал UART можно реализовать и напрямую, через два специальных цифровых вывода. Также модуль можно подключить, используя стандартные последовательные интерфейсы I2C и SPI, поддерживаемые микроконтроллером ATmega328. Установлен разъем для внешнего программатора через SPI (он нужен, например, если по какой-то причине в контроллер не записан начальный загрузчик). Для прямого перезапуска на плате предусмотрена кнопка RESET.
Таким образом, мы видим простейшую плату на основе AVR-микроконтроллера. Аппаратное окружение – минимально достаточное, нет даже резисторов подтяжки уровней на шине данных. Нет и схемы монитора питания – используются лишь стабилизаторы. То есть почти никакой защиты от внешних импульсных помех и сбоев по питанию. Однако так построены многие отладочные платы. И нужно ли иное для конструктора? Тем более что кнопка RESET всегда под рукой.
Модель Arduino Uno можно считать началом координат в семействе Arduino. Дальнейшее развитие шло в системе из двух осей координат: одна ось – размеры и форма платы (с этим связано разнообразие интерфейсов), другая – тип центрального микроконтроллера.
Размер имеет значение
По габаритам базовые платы развивались как в сторону увеличения (что позволяло увеличить число портов ввода/вывода и подключать больше внешних устройств), так и миниатюризации. Развитием линии Arduino Uno можно считать модуль Arduino Leonardo ETH (рис.3, см. таблицу). Различия – в микроконтроллере (ATmega32U4 вместо ATmega328P) и наборе интерфейсов. Так, в Leonardo ETH есть встроенный Ethernet-контроллер и порт RJ-45. Есть и USB-порт, но отличие от Arduino Uno в том, что в микроконтроллере ATmega32U4 предусмотрена аппаратная поддержка USB, поэтому не нужно организовывать виртуальный COM-порт. Модуль Leonardo ETH оснащен также коннектором для карт формата microSD. Есть два исполнения модуля – с питанием через Ethernet (PoE) и без него.
Arduino Micro (рис.4, см. таблицу) выполнен в другом форм-факторе – он значительно меньше по размерам (48 Ч 18 мм). Этот модуль основан на микроконтроллере ATmega32U4, так же как и Arduino Leonardo ETH, и, соответственно, обладает схожими с ним характеристиками – теми же объемами памяти и набором вводов / выводов. Но реализованы эти вводы и выводы совершенно иначе – они выполнены в виде штырьков, расположенных в два ряда на обратной стороне модуля. Для связи с компьютером в Arduino Micro предусмотрен порт micro USB. Питание может поступать через этот порт либо от внешнего источника.
Практически столь же малыми размерами (45 Ч 18 мм) обладает и модуль Arduino Nano (рис.5, см. таблицу). Он оснащается микроконтроллерами ATmega328 или ATmega168, виртуальный COM-порт через USB реализован с помощью контроллера FTDI FT232RL.
Модуль Arduino MEGA 2560 (рис.6, см. таблицу), напротив, существенно больше остальных по габаритам (101,52 Ч 53,3 мм). Он основан на микроконтроллере ATmega2560, имеет значительно больше памяти. Больше и портов – 54 цифровых входа / выхода (из них 15 могут использоваться для ШИМ), 16 аналоговых входов. Фактически, Arduino Mega 2560 – это расширенная версия Arduino Uno. Он выполнен таким образом, чтобы быть совместимым со своими "меньшими братьями" и модулями расширения (shields). Так, левая часть платы идентична Arduino Uno как по расположению, так и по назначению выводов. Благодаря этому Arduino Mega 2560 может заменить плату Arduino Uno, если ее возможностей будет недостаточно.
Еще один примечательный форм-фактор плат Arduino – LilyPad (рис.7), специально предназначенный для носимых / вшиваемых в одежду устройств. Модули в формате LilyPad выпускаются на основе контроллеров ATmega32U4 и ATmega328P. Они выполнены в виде диска диаметром около 5 см и толщиной 6,5 мм, включая коннектор для батареи питания. По периметру расположены контактные площадки выводов питания, 9 портов ввода-вывода, а также разъем micro USB (в модулях LilyPad USB) или штыревой разъем. Еще меньше аналогичная по форме плата Arduino Gemma диаметром 28 мм с тремя портами входа/выхода, разъемом micro USB и миниатюрным AVR-контроллером ATtiny85.
Процессор решает все
Как мы уже заметили, платы различаются не только форм-фактором, но и типом микроконтроллеров. И пожалуй, это наиболее серьезное отличие, поскольку возможности базовых плат Arduino полностью определяются типом микроконтроллера. И если изначально выбор пал на архитектуру AVR от Atmel (в связи с уникальным сочетанием ее достоинств), то сегодня чрезвычайно популярными стали микроконтроллеры с ядрами ARM Cortex. Их выпускают практически все ведущие производители микроконтроллеров, в том числе и Atmel. Поэтому вполне естественно, что микроконтроллеры с ядрами ARM Cortex, от М0+ до М4 и М7, представлены в платах Arduino.
Первой платой на 32-разрядном процессоре с ядром ARM Cortex-M3 стала Arduino Due (рис.8, см. таблицу), оснащенная микроконтроллером Atmel SAM3X8E. По форм-фактору эта плата соответствует MEGA. Тактовая частота контроллера – 84 МГц, поддерживается JTAG-интерфейс, 512 Кбайт флеш-памяти, 96 Кбайт СОЗУ. Напряжение питания понижено до 3,3 В.
Несомненно, знаменательным шагом стало и появление модулей Arduino Tian (www.arduino.org) с микроконтроллером Atmel SAMD21 на основе 32-разрядного ядра ARM Cortex M0+. На плате установлен и контроллер беспроводного доступа AR9342 (Qualcomm Atheros). Последний оснащен MIPS-процессором с тактовой частотой до 560 МГц и встроенным Wi-Fi-трансивером, реализующим стек протоколов стандарта IEEE802.11n (с MIMO 2 Ч 2) в диапазонах 2,4 и 5 ГГц. AR9342 поддерживает и пять портов Fast Ethernet. Немаловажно, что MIPS-процессор может работать под управлением ОС на основе Linux – Linino. Плата также оснащена четырехгигабайтным модулем флеш-памяти eMMC. Примечательно, что процессор AR9342 доступен пользователям для программирования через среду IDE. Не правда ли, удивительно – плата Arduino с двумя процессорами, причем на основе конкурирующих архитектур – ARM и MIPS?
Один из недавних проектов Arduino 101 (рис.9, см. таблицу) создан в сотрудничестве с корпорацией Intel. Модуль в форм-факторе Arduino Uno основан на микроконтроллере Intel Curie. Он разработан компанией Intel специально для портативных, в том числе встраиваемых в одежду устройств. Это первое подобное устройство в модельном ряду Intel. Областью применения обусловлены отличительные особенности Curie – очень малые (особенно для Intel) габариты и низкое энергопотребление. Curie оснащен малопотребляющим 32-разрядным процессорным ядром Intel Quark SE, 384 Кбайт флеш-памяти, 80 Кбайт памяти SRAM, контроллером Bluetooth LE, шестиосевым комбинированным датчиком ускорений и угловых скоростей, блоком контроля зарядки аккумулятора, а также специальным концентратором датчиков (DSP sensor hub) с малым потреблением энергии.
Поддержка лидеров
Среди многочисленных плат Arduino и их клонов немало вариантов с микроконтроллерами различных компаний. Однако очень важно, что в последнее время формат Arduino начали поддерживать непосредственно ведущие производители микропроцессоров и микроконтроллеров.
В частности, компания Intel и сама выпускает несколько плат прототипирования на основе своих процессоров. Это платы Intel Galileo первого и второго поколений, а также плата Intel Edison Kit for Arduino. Так, плата Intel Galileo (рис.10) построена на базе процессора Intel Quark X1000 – 32-разрядной системы на кристалле. Плата совместима с Arduino Uno на программном и аппаратном уровне, обладает развитой периферией.
Ряд производителей микроконтроллеров выпускают комплекты своих оценочных и прототипных плат, совместимых с Arduino. Так, компания NXP в линейке оценочных плат LPCXpresso (рис.11) на базе микроконтроллеров серии LPC обеспечивает совместимость с Arduino Uno. Сегодня в портфолио этой фирмы входит и линейка совместимых с Arduino Uno оценочных плат KW2x на основе микроконтроллеров Kinetis – их выпускала объединившаяся с NXP компания Freescale.
Другой характерный пример – компания STMicroelectronics. Она развивает несколько линеек плат прототипирования Nucleo на основе своих микроконтроллеров семейства STM32 с ядрами ARM Cortex. Причем платы семейств Nucleo-144 and Nucleo-64 (рис.12) оснащены рядными разъемами, совместимыми с Arduino Uno Rev3, платы Nucleo-32 совместимы по выводам разъемов с Arduino Nano. Все платы семейства можно программировать, используя средства разработки различных производителей (таких как IAR или Keil), включая IDE Arduino.
Понятно, что не все Arduino-совместимые платы отличаются предельно низкой ценой, хотя, например, цены на устройства семейства Nucleo полностью соответствуют стоимостному диапазону Adruino. Однако сам факт поддержки со стороны законодателей мод в области микроконтроллеров и встраиваемых систем однозначно свидетельствует, что Arduino де-факто становится отраслевым стандартом. А это дорогого стоит – едва ли не самого дорогого. Ведь признание Adruino неофициальным стандартом означает, что на проект так или иначе начинает работать не отдельное, пусть и очень большое сообщество энтузиастов, а вся электронная индустрия.
Платы расширения
Базовые платы – важный, но далеко не единственный элемент в Arduino. Для практического применения возможностей одних базовых модулей, как правило, оказывается недостаточно. Нужны различные датчики, сетевые интерфейсы, средства индикации, приводы и др. Для реализации этих возможностей в экосистеме Arduino существует большое число плат расширения, поддерживающих те или иные функции. Собственно, унификация по выводам важна именно для подключения плат расширения. Эти платы устанавливаются на базовые модули этажерочным способом – одна на другую. Конечно, для этого сами платы расширения должны иметь соответствующие сквозные контакты, формирующие вертикальные шины – такой конструктивный подход использован, например, в системах формата PC/104. Приведем лишь несколько примеров плат расширения.
Модуль Arduino Ethernet Shield 2 (рис.13) предназначен для подключения Arduino-систем к проводным сетям, в том числе Интернету. Он оснащен Ethernet-контроллером W5500 и обеспечивает скорость соединения 10/100 Мбит/c. На плате есть разъем RJ-45, а также слот для карт microSD. Модуль выпускается в исполнениях с поддержкой PoE или без нее.
Есть и платы расширения для организации беспроводной связи. Одна из них – Arduino Wireless Shield (рис.14). На ней есть специальные соединители для модулей XBee, которые обеспечивают связь по протоколам Zigbee. Сторонние производители выпускают модули в таком же форм-факторе для связи по протоколам Bluetooth и Wi-Fi, которые также могут устанавливаться на эту плату. Платы расширения Arduino Wireless Shield выпускаются в двух вариантах: со слотом для SD-карт и без него.
Модуль Arduino GSM Shield 2 (рис.15) предназначен, как видно из его названия, для связи по стандарту GSM. Он дает возможность совершать телефонные звонки, отправлять SMS и выходить в Интернет.
Еще одна группа плат расширения позволяет управлять различными электроприводами. Дело в том, что выводы базовых модулей Arduino слаботочные (20 мA). Поэтому для управления силовой нагрузкой необходимы дополнительные платы. Популярный представитель этой группы – модуль Arduino Motor Shield (рис.16), построенный на основе сдвоенного драйвера электродвигателей L298 (STMicroelectroncis). Он позволяет управлять скоростью и направлением вращения двух двигателей, позволяет подключать другую мощную нагрузку. В модуле есть два независимых канала, каждый из них задействует четыре вывода базового модуля Arduino. Объединив два канала, можно подключить биполярный шаговый двигатель. Модуль также позволяет измерять ток, потребляемый двигателями. Выходы для подключения двигателей выполнены в виде клеммников с винтами, поэтому пайка не нужна. Максимальный ток в каждом канале составляет 2 А.
Для работы с большими токами предназначена еще одна плата – Arduino 4 Relays Shield. На ней размещены четыре реле, с помощью которых можно включать и выключать различные сильноточные устройства. Реле управляются сигналами с выводов базовых модулей Arduino. Состояние реле отображается светодиодными индикаторами, размещенными на плате. Максимальное коммутируемое напряжение равно 30 В постоянного тока, максимальный ток – 2 А.
Для систем Arduino предлагаются также разнообразные аксессуары – корпуса для размещения модулей, источники питания, датчики, дисплеи и др. [5, 6]. В целом, плат расширения, под каждую базовую плату, очень много, и с каждым днем их становится все больше.
Вместо заключения – игрушка или серьезный инструмент?
Сегодня выпускается достаточно много типов базовых плат Arduino. Еще больше – плат расширения. Все вместе они образуют своего рода язык, на котором можно писать разные истории – конечные приложения. Это может быть и одна фраза, и огромный роман, и даже тематический сборник с множеством авторов. Число задач, которые можно решить с помощью Arduino, фактически бесконечно. На основе Arduino делают любительские метеостанции в рамках проекта Народный мониторинг [7]. Возможностей Arduino достаточно для построения систем управление квадрокоптерами. Arduino-системы широко используются в других радиоуправляемых моделях, в различных решениях для "умного дома", известны проекты 3D-принтера на основе Arduino… Примеры проектов, в том числе с детальной технической документацией, представлены на многих интернет-сайтах, не будем их перечислять. Гораздо важнее оговорить ограничения для этого инструмента.
Прежде всего, базовая концепция Arduino – это предельно упрощенные платы. Любая защита от импульсных помех, от зависаний процессора при сбоях по питанию отсутствует в принципе. Диапазон климатических и механических воздействий не нормируется (и фактически соответствует классу Commercial), поэтому решения на основе устройств Arduino не стоит использовать в автономных необслуживаемых системах (где прекращение работы устройства критично), в бортовой электронике, в уличных применениях (если мы говорим о российском климате) и т. п. Стандартные платы для этого просто не предназначены, о чем производитель честно предупреждает. Если макет "завис" на столе разработчика – нажми RESET и работай дальше. А вот если такое устройство управляет, например, электронным замком – тут могут быть проблемы.
Конечно, рынок Arduino растет, и вполне можно ожидать появления плат с компонентами, работающими в расширенных температурных диапазонах. Схемотехнические "проблемы" плат Arduino также вполне решаются – было бы желание и необходимые знания.
С другой стороны, нужно ли строить сколь-нибудь ответственные решения или массовые продукты на модулях Arduino? Ведь это продукт изначально создавался для иных задач – сделать возможности современных микроконтроллеров доступными широкой массе непрофессионалов в области электроники. И речь идет не только и не столько о школьниках и студентах-младшекурсниках, а о программистах и специалистах по промышленному дизайну, механиках и разработчиках аналитического оборудования, ученых и художниках– всех тех профессионалах не в электронике, кому необходимы встроенные системы управления и обработки. Вот для них Arduino – это находка. Создать макет, проверить и отработать концепцию, получить действующую установку – и для этого не нужен (или почти не нужен) паяльник, не нужно знать внутреннюю организацию микроконтроллера, не нужно уметь писать программы на ассемблере или знать нюансы схемотехники, не нужны дорогие средства отладки. Есть идея – садись и работай. А если идея окажется удачной и потребует промышленного воплощения – тогда можно разрабатывать оригинальную конструкцию, при необходимости звать специалиста по микроконтроллерам и схемотехнике. Но вся логика работы, все алгоритмы к этому моменту будут проверены и отлажены. И это – принципиально.
Таким образом, дешевый, массовый инструмент Arduino позволяет существенно ускорить и удешевить процесс создания очень сложных и ответственных систем. "Язык" Arduino (мы говорим обо всей платформе) может стать своего рода эсперанто для специалистов в различных областях, объединенных в рамках одного проекта. Более того, он позволяет выполнять проекты, участники которых распределены по всему миру – достаточно договориться о конкретной платформе Arduino. Ну и, конечно, Arduino – прекрасный инструмент для начального обучения, что очень важно в условиях кадрового голода для многих отраслей. Так что Arduino – это очень серьезно.
В России одним из официальных дистрибьюторов Arduino является RS Components Russia. Как глобальный поставщик, RS Components может предложить инженерам последние новинки и решения от Arduino. Подобрать платы и все необходимые компоненты к ним, а также разместить заказ позволяет онлайн-сервис на сайте ru.rsdelivers.com.
Литература
1. Barragбn H. The Untold History of Arduino. – arduinohistory.github.io
2. Kushner D. The Making of Arduino. – spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino/. 26 Oct 2011.
3. Arduino FAQ – With David Cuartielles. –
medea.mah.se/2013/04/arduino-faq
4. www.arduino.cc
5. www.rsrussia.ru
6. www.amperka.ru
7. www.narodmon.ru
Электроника – одна из тех областей науки и промышленности, которые объективно изменяют мир. При этом неизбежно меняются и сами подходы, используемые внутри электронной отрасли. Один из них – аппаратные решения с "открытым кодом", свободным от лицензионных ограничений. Это направление стало продолжением концепции свободного программного обеспечения с открытым кодом – open source. Речь идет не просто об открытом коде программы, но и о возможности свободно его использовать в своих приложениях, модифицировать и т. п. Яркий пример проекта на принципах open source – операционная система Linux.
Общепризнанный идеолог концепции open source, основатель Фонда свободного программного обеспечения Free Software Foundation Ричард Столлман ввел в оборот тип лицензий copyleft. Их суть – программы, распространяемые под этими лицензиями, полностью свободны от авторских ограничений. А продукты, созданные на основе этих программ, могут распространяться только на основе таких же copyleft-лицензий (последнее положение не всегда обязательно). Иными словами, полная свобода распространения. И это не анархический призыв разрушить институт авторского права, а путь к подлинной массовости. И он никак не препятствует получению прибыли. Инструменты и приложения становятся доступными всем разработчикам, за них не нужно платить, но на их основе можно создавать – и продавать! – собственные продукты.
Аналогичная концепция несколько позднее стала использоваться и в области аппаратуры. Здесь основополагающими принципами стали открытая исходная конструкторская документация и коды встроенного ПО при полной свободе их использования. В одну точку сошлись два подхода – принцип открытых систем и безлицензионное применение.
В свою очередь, открытые системы или открытые платформы (как антитеза закрытым проприетарным решениям) – это концептуальный подход, который, по сути, привел к формированию современного облика ИТ-индустрии. Вспомним, в начале-середине 1980-х, когда персональные компьютеры стали превращаться с массовый товар, своего рода вид бытовой техники, именно открытая архитектура "IBM PC" де-факто стала отраслевым стандартом. А более совершенные и изысканные решения, в том числе компьютеры Apple Macintosh, так и остались, по сути, нишевыми продуктами. И не случайно, яркий сторонник открытых платформ, Билл Гейтс поставил именно на концепцию "IBM PC" – и выиграл.
Причина успеха сегодня очевидна – персональный компьютер с открытой архитектурой превратился в глобальный мировой конструктор, "детали" для которого выпускает множество конкурирующих производителей во всем мире. Фактически родилась новая индустрия – один из доминирующих сегодня сегментов всей электроники. Масштабность производства привела к беспрецедентному снижению цен и все возрастающей массовости. Программисты всего мира по сути работали на Microsoft, создавая свои продукты под ОС Windows, производители – на корпорацию Intel и нескольких ее конкурентов, создавая решения на основе их процессоров и т. д. Сложилась огромная, глобальная саморазвивающаяся система с положительной обратной связью. Которая в итоге привела к новому глобальному качеству – к современному облику IT-индустрии, который, в свою очередь, становится фундаментом для очередных технологических скачков.
Но открытые платформы – это еще не все. Входной билет в мир разработок на их основе зачастую не очень дешев. Платформы открыты, но за право работать с ними нужно платить. Следующий шаг на пути к массовости – отказ от платы. В 1997 году была создана организация Open Source Initiative, лидерами которой выступили Брюс Перенс (автор определяющего документа The Open Source Definition) и Эрик С.Раймонд. Эта организация стала проводником идеологии свободного аппаратного обеспечения. Сегодня эта идея воспринята и поддержана самыми разными организациями, включая Европейский центр ядерных исследований CERN. Проекты в области свободного аппаратного обеспечения охватывают области от микропроцессоров (наиболее известный – процессор LEON c архитектурой SPARC V8, VHDL-описание ряда вариантов которого распространяется под свободной лицензией GNU General Public License) до законченных устройств: 3D-принтеры, телекоммуникационное оборудование, компьютеры, робототехника и т. д.
Одно из направлений в области свободного аппаратного обеспечения связано с областью встраиваемых систем. Именно к этом классу продуктов и принадлежит платформа Arduino – герой нашего рассказа. Но только ли к этому классу?
Arduino – краткая история проекта
Разработка встраиваемых электронных устройств и систем на их основе – это удел высоких профессионалов. Одна из основных сложностей – нужны специалисты, сочетающие знания в области электроники (умение разработать управляющий электронный модуль на основе микроконтроллера, цифровых и аналоговых периферийных схем) и программирования (как прикладного, так и системного). Причем модуль на основе микроконтроллера мало разработать – его еще нужно спаять. А это – не самый простой навык. Вы не пробовали дома паять микросхемы в современных корпусах? Конечно, можно заказать печатную плату, а затем и ее монтаж. Подобные услуги сегодня вполне доступны – но много ли неспециалистов в электронике умеют ими пользоваться и готовы за них платить?
Конечно, за последние 10–15 лет появилось немало решений – и семейства программируемых логически контроллеров, и глобальный конструктор под управлением LabVIEW компании National Instruments, множество оценочных плат, различные среды разработки и т. п. Все это – очень эффективные, но профессиональные, дорогие инструменты. Со стартовыми ценами в тысячи долларов (оценочные платы стоят дешевле – порядка сотен долларов – но общей картины это не меняет).
Конечно, цены на эти продукты совершенно адекватны в случае сложных проектов (например, создание бортовых систем пассажирского самолета или систем автоматизации химического цеха). Но едва ли подобные затраты доступны для массовых разработчиков. И речь идет даже не о любителях, а о многочисленных студентах, молодых специалистах, командах будущих стартапов и т. п. – о той питательной среде, которая сегодня и определяет развитие электроники как инновационной сферы. Потому как если сами микроэлектронные технологии рождаются в стенах научных лабораторий, воплощаются в микросхемы на запредельно дорогих производствах, то создавать конечные решения на их основе должна огромная армия разработчиков во всем мире. И это не все, потому что есть еще армия специалистов в различных областях, которые рады бы использовать в своих задачах возможности микроконтроллеров, но не умеют этого делать. Массовость возможна там, где превалирует простота применения и дешевизна инструментария. Именно эти критерии – просто и дешево – легли в основу проекта Arduino.
История проекта началась в 2003–2004 годах. В те годы (с 2001 по 2005) в древнем городе Ивреа в Северной Италии действовала высшая техническая школа интерактивного проектирования – Interaction Design Institute Ivrea (IDII). В 2003 году студент этого института Хернандо Барраган (Hernando Barragбn) родом из Колумбии приступил к работе над своим магистерским дипломным проектом. Он занялся созданием платформы Wiring, делающей доступными разработку цифровых систем управления для неинженеров в области электроники.
Платформа включала полный комплект инструментов для создания встраиваемых решений: язык программирования, среду разработки и отладки (IDE – integrated development environment) и плату с микроконтроллером. Для программирования микроконтроллеров использовался свободно распространяемый открытый язык Processsing. Он был создан на основе Java Бенжамином Фраем и Кэйси Ризом – сотрудниками "группы эстетики и вычислений" (The Aesthetics and Computation Group) в лаборатории MIT Media Lab Массачусетского технологического института (MIT). Руководителями дипломной работы Х.Баррагана выступали Кейси Риз и преподаватель IDII Массимо Банци.
В качестве микроконтроллера был выбран ATmega128 компании Atmel. Этот очень популярный в начале 2000-х годов 8-разрядный RISC-микроконтроллер с архитектурой AVR обладал рядом важных достоинств. Прежде всего, он программировался простой записью кода программы во встроенную флеш-память по последовательному интерфейсу SPI (фирменная технология ISP – In-System Programming). Кроме того, компания Atmel свободно распространяла для AVR-контроллеров комплект инструментов разработки программ (компилятор С/С++, ассемблер, компоновщик программ, а также С-библиотеки). Последнее стало решающим фактором для отказа от очень дешевых и популярных в те годы PIC-контроллеров компании Microchip в пользу AVR.
Принципиально, что уже на первой плате для связи с компьютером был использован метод "RS-232 через USB" (виртуальный COM-порт), реализованный на основе контроллера FTDI232BM компании FTDI. В результате и для микроконтроллера, и для прикладного ПО на компьютере канал связи выглядел как обычный последовательный интерфейс RS-232, но физически соединение происходило через USB-порт. Это очень упрощало работу с платой – в середине 2000-х годов последовательный порт RS-232 на обычных персональных компьютерах уже стал экзотикой.
Х.Барраган собственноручно спаял 25 плат на основе ATmega128 и роздал их студентам IDII вместе с необходимым программным обеспечением [1]. На этих комплектах был выполнен ряд интересных работ, показавших эффективность подхода. В 2004 году Х.Барраган с отличием защитил магистерскую диссертацию и уехал в Колумбию работать в Андском университете в Боготе. Там он занялся преподаванием и продолжил работы над платформой Wiring, не теряя контактов с сокурсниками по IDII.
Тем временем его учитель Массимо Банци решил начать новый проект, куда вошли его бывшие студенты Девид Куартиллье (David Cuartielles), Девид Меллис (David Mellis) и Николас Замбетти (Nicholas Zambetti), успевшие поработать с Wiring. К команде присоединился и участвовавший в разработке плат Wiring и помогавший с их производством Джанлука Мартино (Gianluca Martino), который затем создал свою компанию Smart Projects SRL (именно эта компания начала выпуск плат Arduino). Пригласили в проект и Тома Иго (Tom Igoe) из Школы искусств Тиша (Tisch School of the Arts) Нью-йоркского политехнического университета (NYU). Почему в команду не позвали Х.Баррагана, создателя базовой платформы Wiring, остается загадкой.
Зато нет загадки с названием – с 990 года макрграфом Ивреи был господин Ардуин, который в 1002 году стал королем Италии, от чего и умер в 1015 году. Имя короля досталось бару Bar di Re Arduino в его родной Иврее, где любил зависать Массимо Банци. В честь этого бара он и назвал проект Arduino [2].
Проект изначально полностью воспроизводил программную платформу Wiring. Была создана новая плата Arduino USB, ставшая фактически первой в проекте Arduino. Это была простейшая плата на основе микроконтроллера ATmega8, с минимально необходимой обвязкой. Для связи с компьютером через USB-порт использовался контроллер виртуального COM-порта компании FTDI. Все инструментальные средства разработки, включая язык Arduino на базе С/С++ и программную оболочку IDE (на основе Processing) поставлялись свободно и бесплатно, под лицензией copyleft. Аппаратная плата микроконтроллера продавалась по рекордной тогда цене менее 50 долл., которая вскоре упала ниже 30 долл.
Поскольку вся конструкторская документация на плату была открыта, производить ее мог кто угодно. Единственное ограничение налагалось на использование названия Arduino. Только это продуктовое имя подлежало лицензированию и предполагало выплату роялти. Для этого инициаторы проекта создали компанию Arduino LLC (www.arduino.cc), которой принадлежали права на торговую марку Arduino. Однако в 2008 году между партнерами разразился скандал. Оказалось, что владелец компании Smart Projects SRL Джанлука Мартино попытался зарегистрировать права на торговую марку Arduino в США. В ходе разбирательств выяснилось, что до этого он втихую уже зарегистрировал на свою компанию права на торговую марку Arduino в Италии. Последователи судебные разбирательства, взаимные претензии. В итоге сегодня есть две ветви проекта – одна под эгидой Массимо Банци и компании Arduino LLC (arduino.cc), вторая принадлежит Smart Projects SRL (сайт arduino.org). В итоге на обоих сайтах мы видим несколько разный набор новых продуктов. Как следствие, появилось две версии среды разработки Arduino IDE, поддерживающие различный набор плат и библиотек. Более того, команда Arduino LLC продвигает свою продукцию под брендом Adruino только на территории США, для всего остального мира создана торговая марка Genuino. Однако подобный раздор, хоть и породил определенную путаницу, свидетельствует об успешности проекта в целом.
Сегодня проект Arduino из отдельной платформы превратился в глобальную экосистему, охватившую весь мир. По данным одного из сооснователей проекта Дэвида Куартиллье [3], к концу 2013 года в мире было продано более 700 тыс. официальных плат Arduino. А ведь на каждую такую плату приходится по крайней мере столько же плат клонов, которые выпускаются множеством производителей под именами "-duino" (CraftDuino, Freeduino, Seeeduino, Diavolino, Japanino и проч., и проч.), чтобы не платить лицензионные отчисления. И рынок этот только набирает обороты.
Adruino глазами инженера
Платформа Adruino сумела воплотить два противоречивых требования – простоту и дешевизну. Для работы с микроконтроллером не нужен паяльник – только дешевая плата с микроконтроллером и USB-кабель. Подключай плату к компьютеру, скачивай бесплатное ПО, и создавай собственные решения. Язык программирования – простейший, на основе С. Появилась специальная учебная литература. Энтузиастами всего мира наработана база прикладных решений.
Популярность платформы Arduino во многом обусловлена удобством ее программирования. Для написания программного кода, управляющего работой Arduino-систем, используется специальная версия языка C/C++. Есть фирменная бесплатная среда разработки Arduino IDE (рис.1), доступная для загрузки на сайте производителя. Она позволяет писать и отлаживать программный код (так называемые скетчи – sketches), а затем загружать его в микроконтроллер базового модуля через USB-интерфейс. Среда разработки Arduino IDE создана для операционных систем Windows, Mac OS X и Linux. Для большинства модулей Arduino существует готовый код с комментариями. Он легко вставляется в общую программу управления системой и, как правило, требует лишь небольшой доработки применительно к конкретному приложению.
Аппаратная часть платформы Arduino включает несколько моделей базовых модулей и множество плат расширения (shields), а также различные аксессуары [4–6]. Сразу отметим важную и даже удивительную особенность: в отличие от "классических" открытых платформ, стандарта на форм-фактор плат Adruino не существует. Есть лишь несколько различных базовых плат, отличающихся форм-фактором (и числом портов), набором интерфейсов и используемым микроконтроллером. И никто число базовых форм-факторов не ограничивает.
Каждый из базовых модулей представляет собой плату с микроконтроллером (в основном компании Atmel, но в последнее время эта тенденция меняется) и набором сетевых интерфейсов. Принципиальная особенность – в каждом контроллере уже записана программа начального загрузчика. Поэтому разработчику вообще не нужно думать о режиме программирования – все выполняется из оболочки IDE, нажатием одной кнопки.
Uno – базовая модель
Наиболее популярный и "стандартный" модуль, продолжающий самую первую линию плат – это Arduino Uno (рис.2, см. таблицу). Сегодня выпускается уже третья модификация этого модуля (Rev.3). Он размещен на компактной плате 68,6 Ч 53,4 мм и построен на восьмиразрядном микроконтроллере ATmega328. Микроконтроллер работает на тактовой частоте 16 МГц, оснащен флеш-памятью программ объемом 32 Кбайт (из них 0,5 Кбайт используются для начального загрузчика), а также 2 Кбайт СОЗУ (SRAM) для хранения временных данных и 1 Кбайт ЭРПЗУ (EEPROM) для долговременного хранения данных. Никакой дополнительной памяти не предусмотрено.
На плате с двух сторон смонтированы штыревые разъемы. С одной стороны расположены 14 цифровых портов ввода/вывода, шесть из которых могут быть использованы как ШИМ-выводы. Все они работают с напряжением 5 В и рассчитаны на ток до 40 мА (рекомендованное значение 20 мА). С другой стороны находятся шесть аналоговых входов, каждый подключен к 10-разрядному шестиканальному встроенному АЦП микроконтроллера ATmega328. По умолчанию напряжение на аналоговых входах измеряется в диапазоне между "землей" и 5 В, но верхний диапазон можно изменить, подав требуемое напряжение на специальный контакт AREF.
Arduino Uno может питаться как через USB-порт, так и от внешнего устройства (AC/DC-адаптера или батарейки). Источник питания выбирается автоматически. Адаптер можно подсоединить через специальный штыревой разъем, а провода от батарейки вставляются в контакты Gnd and Vin. Платформа может работать при входном напряжении питания от 6 до 20 В, но рекомендуемый диапазон составляет 7–12 В.
В Arduino Uno предусмотрено несколько способов внешней коммуникации. Для связи с компьютером используется канал RS-232 через USB (виртуальный COM-порт). Однако в отличие от первых плат, реализован он не на контроллере FTDI, а с помощью дополнительного микроконтроллера ATmega16U2 (ATmega8U2 в ранних версиях). Процесс передачи данных индицируют специальные светодиоды. Последовательный асинхронный канал UART можно реализовать и напрямую, через два специальных цифровых вывода. Также модуль можно подключить, используя стандартные последовательные интерфейсы I2C и SPI, поддерживаемые микроконтроллером ATmega328. Установлен разъем для внешнего программатора через SPI (он нужен, например, если по какой-то причине в контроллер не записан начальный загрузчик). Для прямого перезапуска на плате предусмотрена кнопка RESET.
Таким образом, мы видим простейшую плату на основе AVR-микроконтроллера. Аппаратное окружение – минимально достаточное, нет даже резисторов подтяжки уровней на шине данных. Нет и схемы монитора питания – используются лишь стабилизаторы. То есть почти никакой защиты от внешних импульсных помех и сбоев по питанию. Однако так построены многие отладочные платы. И нужно ли иное для конструктора? Тем более что кнопка RESET всегда под рукой.
Модель Arduino Uno можно считать началом координат в семействе Arduino. Дальнейшее развитие шло в системе из двух осей координат: одна ось – размеры и форма платы (с этим связано разнообразие интерфейсов), другая – тип центрального микроконтроллера.
Размер имеет значение
По габаритам базовые платы развивались как в сторону увеличения (что позволяло увеличить число портов ввода/вывода и подключать больше внешних устройств), так и миниатюризации. Развитием линии Arduino Uno можно считать модуль Arduino Leonardo ETH (рис.3, см. таблицу). Различия – в микроконтроллере (ATmega32U4 вместо ATmega328P) и наборе интерфейсов. Так, в Leonardo ETH есть встроенный Ethernet-контроллер и порт RJ-45. Есть и USB-порт, но отличие от Arduino Uno в том, что в микроконтроллере ATmega32U4 предусмотрена аппаратная поддержка USB, поэтому не нужно организовывать виртуальный COM-порт. Модуль Leonardo ETH оснащен также коннектором для карт формата microSD. Есть два исполнения модуля – с питанием через Ethernet (PoE) и без него.
Arduino Micro (рис.4, см. таблицу) выполнен в другом форм-факторе – он значительно меньше по размерам (48 Ч 18 мм). Этот модуль основан на микроконтроллере ATmega32U4, так же как и Arduino Leonardo ETH, и, соответственно, обладает схожими с ним характеристиками – теми же объемами памяти и набором вводов / выводов. Но реализованы эти вводы и выводы совершенно иначе – они выполнены в виде штырьков, расположенных в два ряда на обратной стороне модуля. Для связи с компьютером в Arduino Micro предусмотрен порт micro USB. Питание может поступать через этот порт либо от внешнего источника.
Практически столь же малыми размерами (45 Ч 18 мм) обладает и модуль Arduino Nano (рис.5, см. таблицу). Он оснащается микроконтроллерами ATmega328 или ATmega168, виртуальный COM-порт через USB реализован с помощью контроллера FTDI FT232RL.
Модуль Arduino MEGA 2560 (рис.6, см. таблицу), напротив, существенно больше остальных по габаритам (101,52 Ч 53,3 мм). Он основан на микроконтроллере ATmega2560, имеет значительно больше памяти. Больше и портов – 54 цифровых входа / выхода (из них 15 могут использоваться для ШИМ), 16 аналоговых входов. Фактически, Arduino Mega 2560 – это расширенная версия Arduino Uno. Он выполнен таким образом, чтобы быть совместимым со своими "меньшими братьями" и модулями расширения (shields). Так, левая часть платы идентична Arduino Uno как по расположению, так и по назначению выводов. Благодаря этому Arduino Mega 2560 может заменить плату Arduino Uno, если ее возможностей будет недостаточно.
Еще один примечательный форм-фактор плат Arduino – LilyPad (рис.7), специально предназначенный для носимых / вшиваемых в одежду устройств. Модули в формате LilyPad выпускаются на основе контроллеров ATmega32U4 и ATmega328P. Они выполнены в виде диска диаметром около 5 см и толщиной 6,5 мм, включая коннектор для батареи питания. По периметру расположены контактные площадки выводов питания, 9 портов ввода-вывода, а также разъем micro USB (в модулях LilyPad USB) или штыревой разъем. Еще меньше аналогичная по форме плата Arduino Gemma диаметром 28 мм с тремя портами входа/выхода, разъемом micro USB и миниатюрным AVR-контроллером ATtiny85.
Процессор решает все
Как мы уже заметили, платы различаются не только форм-фактором, но и типом микроконтроллеров. И пожалуй, это наиболее серьезное отличие, поскольку возможности базовых плат Arduino полностью определяются типом микроконтроллера. И если изначально выбор пал на архитектуру AVR от Atmel (в связи с уникальным сочетанием ее достоинств), то сегодня чрезвычайно популярными стали микроконтроллеры с ядрами ARM Cortex. Их выпускают практически все ведущие производители микроконтроллеров, в том числе и Atmel. Поэтому вполне естественно, что микроконтроллеры с ядрами ARM Cortex, от М0+ до М4 и М7, представлены в платах Arduino.
Первой платой на 32-разрядном процессоре с ядром ARM Cortex-M3 стала Arduino Due (рис.8, см. таблицу), оснащенная микроконтроллером Atmel SAM3X8E. По форм-фактору эта плата соответствует MEGA. Тактовая частота контроллера – 84 МГц, поддерживается JTAG-интерфейс, 512 Кбайт флеш-памяти, 96 Кбайт СОЗУ. Напряжение питания понижено до 3,3 В.
Несомненно, знаменательным шагом стало и появление модулей Arduino Tian (www.arduino.org) с микроконтроллером Atmel SAMD21 на основе 32-разрядного ядра ARM Cortex M0+. На плате установлен и контроллер беспроводного доступа AR9342 (Qualcomm Atheros). Последний оснащен MIPS-процессором с тактовой частотой до 560 МГц и встроенным Wi-Fi-трансивером, реализующим стек протоколов стандарта IEEE802.11n (с MIMO 2 Ч 2) в диапазонах 2,4 и 5 ГГц. AR9342 поддерживает и пять портов Fast Ethernet. Немаловажно, что MIPS-процессор может работать под управлением ОС на основе Linux – Linino. Плата также оснащена четырехгигабайтным модулем флеш-памяти eMMC. Примечательно, что процессор AR9342 доступен пользователям для программирования через среду IDE. Не правда ли, удивительно – плата Arduino с двумя процессорами, причем на основе конкурирующих архитектур – ARM и MIPS?
Один из недавних проектов Arduino 101 (рис.9, см. таблицу) создан в сотрудничестве с корпорацией Intel. Модуль в форм-факторе Arduino Uno основан на микроконтроллере Intel Curie. Он разработан компанией Intel специально для портативных, в том числе встраиваемых в одежду устройств. Это первое подобное устройство в модельном ряду Intel. Областью применения обусловлены отличительные особенности Curie – очень малые (особенно для Intel) габариты и низкое энергопотребление. Curie оснащен малопотребляющим 32-разрядным процессорным ядром Intel Quark SE, 384 Кбайт флеш-памяти, 80 Кбайт памяти SRAM, контроллером Bluetooth LE, шестиосевым комбинированным датчиком ускорений и угловых скоростей, блоком контроля зарядки аккумулятора, а также специальным концентратором датчиков (DSP sensor hub) с малым потреблением энергии.
Поддержка лидеров
Среди многочисленных плат Arduino и их клонов немало вариантов с микроконтроллерами различных компаний. Однако очень важно, что в последнее время формат Arduino начали поддерживать непосредственно ведущие производители микропроцессоров и микроконтроллеров.
В частности, компания Intel и сама выпускает несколько плат прототипирования на основе своих процессоров. Это платы Intel Galileo первого и второго поколений, а также плата Intel Edison Kit for Arduino. Так, плата Intel Galileo (рис.10) построена на базе процессора Intel Quark X1000 – 32-разрядной системы на кристалле. Плата совместима с Arduino Uno на программном и аппаратном уровне, обладает развитой периферией.
Ряд производителей микроконтроллеров выпускают комплекты своих оценочных и прототипных плат, совместимых с Arduino. Так, компания NXP в линейке оценочных плат LPCXpresso (рис.11) на базе микроконтроллеров серии LPC обеспечивает совместимость с Arduino Uno. Сегодня в портфолио этой фирмы входит и линейка совместимых с Arduino Uno оценочных плат KW2x на основе микроконтроллеров Kinetis – их выпускала объединившаяся с NXP компания Freescale.
Другой характерный пример – компания STMicroelectronics. Она развивает несколько линеек плат прототипирования Nucleo на основе своих микроконтроллеров семейства STM32 с ядрами ARM Cortex. Причем платы семейств Nucleo-144 and Nucleo-64 (рис.12) оснащены рядными разъемами, совместимыми с Arduino Uno Rev3, платы Nucleo-32 совместимы по выводам разъемов с Arduino Nano. Все платы семейства можно программировать, используя средства разработки различных производителей (таких как IAR или Keil), включая IDE Arduino.
Понятно, что не все Arduino-совместимые платы отличаются предельно низкой ценой, хотя, например, цены на устройства семейства Nucleo полностью соответствуют стоимостному диапазону Adruino. Однако сам факт поддержки со стороны законодателей мод в области микроконтроллеров и встраиваемых систем однозначно свидетельствует, что Arduino де-факто становится отраслевым стандартом. А это дорогого стоит – едва ли не самого дорогого. Ведь признание Adruino неофициальным стандартом означает, что на проект так или иначе начинает работать не отдельное, пусть и очень большое сообщество энтузиастов, а вся электронная индустрия.
Платы расширения
Базовые платы – важный, но далеко не единственный элемент в Arduino. Для практического применения возможностей одних базовых модулей, как правило, оказывается недостаточно. Нужны различные датчики, сетевые интерфейсы, средства индикации, приводы и др. Для реализации этих возможностей в экосистеме Arduino существует большое число плат расширения, поддерживающих те или иные функции. Собственно, унификация по выводам важна именно для подключения плат расширения. Эти платы устанавливаются на базовые модули этажерочным способом – одна на другую. Конечно, для этого сами платы расширения должны иметь соответствующие сквозные контакты, формирующие вертикальные шины – такой конструктивный подход использован, например, в системах формата PC/104. Приведем лишь несколько примеров плат расширения.
Модуль Arduino Ethernet Shield 2 (рис.13) предназначен для подключения Arduino-систем к проводным сетям, в том числе Интернету. Он оснащен Ethernet-контроллером W5500 и обеспечивает скорость соединения 10/100 Мбит/c. На плате есть разъем RJ-45, а также слот для карт microSD. Модуль выпускается в исполнениях с поддержкой PoE или без нее.
Есть и платы расширения для организации беспроводной связи. Одна из них – Arduino Wireless Shield (рис.14). На ней есть специальные соединители для модулей XBee, которые обеспечивают связь по протоколам Zigbee. Сторонние производители выпускают модули в таком же форм-факторе для связи по протоколам Bluetooth и Wi-Fi, которые также могут устанавливаться на эту плату. Платы расширения Arduino Wireless Shield выпускаются в двух вариантах: со слотом для SD-карт и без него.
Модуль Arduino GSM Shield 2 (рис.15) предназначен, как видно из его названия, для связи по стандарту GSM. Он дает возможность совершать телефонные звонки, отправлять SMS и выходить в Интернет.
Еще одна группа плат расширения позволяет управлять различными электроприводами. Дело в том, что выводы базовых модулей Arduino слаботочные (20 мA). Поэтому для управления силовой нагрузкой необходимы дополнительные платы. Популярный представитель этой группы – модуль Arduino Motor Shield (рис.16), построенный на основе сдвоенного драйвера электродвигателей L298 (STMicroelectroncis). Он позволяет управлять скоростью и направлением вращения двух двигателей, позволяет подключать другую мощную нагрузку. В модуле есть два независимых канала, каждый из них задействует четыре вывода базового модуля Arduino. Объединив два канала, можно подключить биполярный шаговый двигатель. Модуль также позволяет измерять ток, потребляемый двигателями. Выходы для подключения двигателей выполнены в виде клеммников с винтами, поэтому пайка не нужна. Максимальный ток в каждом канале составляет 2 А.
Для работы с большими токами предназначена еще одна плата – Arduino 4 Relays Shield. На ней размещены четыре реле, с помощью которых можно включать и выключать различные сильноточные устройства. Реле управляются сигналами с выводов базовых модулей Arduino. Состояние реле отображается светодиодными индикаторами, размещенными на плате. Максимальное коммутируемое напряжение равно 30 В постоянного тока, максимальный ток – 2 А.
Для систем Arduino предлагаются также разнообразные аксессуары – корпуса для размещения модулей, источники питания, датчики, дисплеи и др. [5, 6]. В целом, плат расширения, под каждую базовую плату, очень много, и с каждым днем их становится все больше.
Вместо заключения – игрушка или серьезный инструмент?
Сегодня выпускается достаточно много типов базовых плат Arduino. Еще больше – плат расширения. Все вместе они образуют своего рода язык, на котором можно писать разные истории – конечные приложения. Это может быть и одна фраза, и огромный роман, и даже тематический сборник с множеством авторов. Число задач, которые можно решить с помощью Arduino, фактически бесконечно. На основе Arduino делают любительские метеостанции в рамках проекта Народный мониторинг [7]. Возможностей Arduino достаточно для построения систем управление квадрокоптерами. Arduino-системы широко используются в других радиоуправляемых моделях, в различных решениях для "умного дома", известны проекты 3D-принтера на основе Arduino… Примеры проектов, в том числе с детальной технической документацией, представлены на многих интернет-сайтах, не будем их перечислять. Гораздо важнее оговорить ограничения для этого инструмента.
Прежде всего, базовая концепция Arduino – это предельно упрощенные платы. Любая защита от импульсных помех, от зависаний процессора при сбоях по питанию отсутствует в принципе. Диапазон климатических и механических воздействий не нормируется (и фактически соответствует классу Commercial), поэтому решения на основе устройств Arduino не стоит использовать в автономных необслуживаемых системах (где прекращение работы устройства критично), в бортовой электронике, в уличных применениях (если мы говорим о российском климате) и т. п. Стандартные платы для этого просто не предназначены, о чем производитель честно предупреждает. Если макет "завис" на столе разработчика – нажми RESET и работай дальше. А вот если такое устройство управляет, например, электронным замком – тут могут быть проблемы.
Конечно, рынок Arduino растет, и вполне можно ожидать появления плат с компонентами, работающими в расширенных температурных диапазонах. Схемотехнические "проблемы" плат Arduino также вполне решаются – было бы желание и необходимые знания.
С другой стороны, нужно ли строить сколь-нибудь ответственные решения или массовые продукты на модулях Arduino? Ведь это продукт изначально создавался для иных задач – сделать возможности современных микроконтроллеров доступными широкой массе непрофессионалов в области электроники. И речь идет не только и не столько о школьниках и студентах-младшекурсниках, а о программистах и специалистах по промышленному дизайну, механиках и разработчиках аналитического оборудования, ученых и художниках– всех тех профессионалах не в электронике, кому необходимы встроенные системы управления и обработки. Вот для них Arduino – это находка. Создать макет, проверить и отработать концепцию, получить действующую установку – и для этого не нужен (или почти не нужен) паяльник, не нужно знать внутреннюю организацию микроконтроллера, не нужно уметь писать программы на ассемблере или знать нюансы схемотехники, не нужны дорогие средства отладки. Есть идея – садись и работай. А если идея окажется удачной и потребует промышленного воплощения – тогда можно разрабатывать оригинальную конструкцию, при необходимости звать специалиста по микроконтроллерам и схемотехнике. Но вся логика работы, все алгоритмы к этому моменту будут проверены и отлажены. И это – принципиально.
Таким образом, дешевый, массовый инструмент Arduino позволяет существенно ускорить и удешевить процесс создания очень сложных и ответственных систем. "Язык" Arduino (мы говорим обо всей платформе) может стать своего рода эсперанто для специалистов в различных областях, объединенных в рамках одного проекта. Более того, он позволяет выполнять проекты, участники которых распределены по всему миру – достаточно договориться о конкретной платформе Arduino. Ну и, конечно, Arduino – прекрасный инструмент для начального обучения, что очень важно в условиях кадрового голода для многих отраслей. Так что Arduino – это очень серьезно.
В России одним из официальных дистрибьюторов Arduino является RS Components Russia. Как глобальный поставщик, RS Components может предложить инженерам последние новинки и решения от Arduino. Подобрать платы и все необходимые компоненты к ним, а также разместить заказ позволяет онлайн-сервис на сайте ru.rsdelivers.com.
Литература
1. Barragбn H. The Untold History of Arduino. – arduinohistory.github.io
2. Kushner D. The Making of Arduino. – spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino/. 26 Oct 2011.
3. Arduino FAQ – With David Cuartielles. –
medea.mah.se/2013/04/arduino-faq
4. www.arduino.cc
5. www.rsrussia.ru
6. www.amperka.ru
7. www.narodmon.ru
Отзывы читателей