Arduino или LaunchPad - что лучше?
Микроконтроллеры прочно вошли в нашу жизнь. Рано или поздно радиолюбитель сталкивается с необходимостью попробовать свои силы в их программировании. С чего начать? Какое семейство микроконтроллеров предпочесть? Изготовить и паять свою плату или купить готовую отладочную? Эти и другие вопросы обязательно возникают перед начинающими. В статье рассмотрены две микроконтроллерные платы, позволяющие не только экспериментировать, но и создавать на их базе законченные изделия. Это плата семейства Arduino и плата LaunchPad. Они доступны по цене и получили некоторое распространение в радиолюбительской среде (особенно за рубежом). Платы во многом схожи — обе небольшого размера, их можно питать и программировать через интерфейс USB.
К сожалению, в нашей стране практика покупок радиолюбителями отладочных средств развита довольно слабо. Принято считать, что проще и дешевле всё сделать самостоятельно. Однако, как правило, не учитываются фактор времени и усилий, затраченных на изготовление конструкции, а также стоимость приобретённых компонентов и материалов На первых порах всё-таки логичнее купить готовую отладочную плату, чтобы разбираться только с проблемами программирования, не касаясь вопросов аппаратной реализации.
Семейство Arduino в нашем случае представлено платой Freeduino 2009. Это практически точная копия итальянской разработки с труднопроизносимым названием Duemilanove (фото на 1-й с. обложки слева). Печатная плата — двусторонняя из стеклотекстолита. Качество пайки планарных компонентов довольно приличное. Хотя разъём внешнего питания запаян не вполне аккуратно, плата производит приятное впечатление. Но при ближайшем рассмотрении видно, что трассировка печатных проводников выполнена доволь-
но небрежно. Такое ощущение, что плату проектировал начинающий специалист, которого заботило только "чтобы оно хоть как-то работало". В комплект поставки также входит CD с программным обеспечением и некоторыми документами. USB-кабеля в комплекте нет. Упаковка выполнена простенько, но довольно аккуратно.
Плата LaunchPad (MSP-EXP430G2) производства компании Texas Instruments (фото на 1 -й с. обложки справа) также вызывает положительные эмоции. Однако, кроме приятного внешнего вида, она имеет ещё и продуманную трассировку печатных проводников. Всякие мелочи, вроде высококачественной панельки под микроконтроллер, резиновые "ножки" с обратной стороны платы, свидетельствуют о тщательном подходе фирмы к конструктивному исполнению даже таких простейших изделий. Кроме самой платы в комплект поставки входят USB-кабель (правда, очень короткий, видимо, ориентированный на использование с ноутбуком), дополнительный микроконтроллер (так что с платой получаем два микроконтроллера), кварцевый резонатор на 32 кГц и разъёмы для соединения основной платы с модулями расширения. Всё упаковано в отдельные антистатические пакеты и выглядит просто изумительно. Комплект с платой Freeduino смотрится на этом фоне весьма скромно.
Важнейшая составляющая любого отладочного средства — программная среда разработки. В идеале она долж-
Таблица 1
Параметр |
Плата |
|
Arduino |
LaunchPad I |
|
Тип микроконтроллера |
ATmega l68 ATmega 328 |
MSP430G2231 |
Число линий ввода/вывода |
23 |
10 |
Число каналов (разрядность) АЦП |
6(10) |
8(10) |
Напряжение питания, В |
7...15 |
1,8...3,6 I |
Тактовая частота микроконтроллера, МГц |
16 |
16 |
Разрядность микроконтроллера |
8 |
16 |
Объём ПЗУ, Кбайт |
16 32 |
2 |
Объём ОЗУ, байт |
1024 2048 |
128 |
Объём EEPROM, байт |
512 1024 |
Нет |
Число таймеров |
3 |
1 |
Последовательные интерфейсы |
USART, l2C, SPI |
l*C, SPI |
Питание от USB |
Есть |
Есть I |
Программирование по USB |
Есть |
Есть I |
Прерывания от портов |
Есть |
Есть |
Ток, потребляемый платой в режиме sleep микроконтроллера, мА (при напряжении питания, В) |
5* (5) |
0,04 (3) |
Ток, потребляемый микроконтроллером в активном состоянии**, мкА (при тактовой частоте, МГц) |
500(1) |
300(1) |
*Ток около 5 мА потребляет постоянно включённый индикатор питания.
** зависит от режима работы и числа задействованных узлов микроконтроллера.
на позволять выполнить весь цикл разработки, от написания исходного текста программы и её пошаговой отладки до загрузки отлаженного кода в микроконтроллер. Намеренно рассмотрим только те средства, которые разработчики каждой из плат предлагают в качестве стандартных. Ведь большая часть начинающих осваивать программирование вряд ли будет разбираться с альтернативными компиляторами и отладчиками, по крайней мере, на первых порах.
Успех Arduino-совместимых плат во многом обязан наличию одноимённой среды разработки. Она очень проста в освоении и использовании. Язык программирования близок к С\С++. Удобно также, что среда устанавливается на компьютер ОС Windows простым копированием. Пользовательские программы для Arduino называют скетчами. После написания и проверки скетча можно загрузить код в микроконтроллер "в одно нажатие".
В среде отсутствует отладчик, однако для простых программ это, может быть, и не так уж важно. Хотя может возникнуть ситуация, когда понять, где произошла ошибка, будет не просто. При покупке платы семейства Arduino в комплекте с ней поставляется всё необходимое программное обеспечение. Проблем с установкой обычно не возникает. Пожалуй, единственное тонкое место — установка драйвера для микросхемы преобразователя интерфейса USB фирмы FTDI. Иногда с этим возникают проблемы, но, как правило, всё, так или иначе, решается довольно быстро.
В качестве базовой для Launch Pad предлагается на выбор либо среда CCS (разработка Texas Instruments), либо бесплатная, ограниченная по объёму исполняемого кода версия IAR MSP. В целом эти среды схожи. Они содержат весь необходимый инструментарий, включая симулятор и поддержку аппаратного эмулятора. Стоит отметить, что
данные продукты довольно неповоротливы", для их работы требуется производительный ПК, а освоение — заметных усилий. Впрочем, наличие хорошего отладчика и эмулятора компенсирует затраченное на их освоение время. Самостоятельно устанавливать драйвер USB, как правило, не требуется.
Самое, на мой взгляд, странное, что в комплекте с платой LaunchPad нет никакого программного обеспечения. Абсолютно всё нужно "скачивать" из Интернета, с сайтов производителя плат или программных продуктов. Довольно неудобно, что сразу после покупки нельзя приступить к работе с платой! Требуется сначала скачать около 400 МБайт дистрибутивов и документации. Как быть, если имеется только медленный и дорогой доступ к Интернету? Можно лишь предположить, что основная целевая аудитория фирмы Texas Instruments — американские студенты и радиолюбители, давно не имеющие проблем с широкополосным и дешёвым доступом.
В целом, ситуацию со средствами отладки можно охарактеризовать следующим образом: Arduino — очень просто, но не всегда удобно, LaunchPad — не просто, но очень удобно.
Следует также отметить, что обе платы, как LaunchPad, так и Arduino, могут использоваться в качестве внутрисхемных программаторов микроконтроллеров своих семейств. В Launch-Pad это реализовано немного удобнее.
При выборе программно-аппаратной платформы желательно оценить доступность и число готовых свободно распространяемых программ. Это позволяет минимизировать время разработки собственной программы, а то и вовсе воспользоваться уже готовой. С этой точки зрения Arduino, на первый взгляд, на голову превосходит LaunchPad. Число разнообразных программ и дополнительных модулей расширения (shields) велико и постоянно растёт. Правда, есть одно "но", зачастую они довольно бесполезны с практической точки зрения и дублируют друг друга, вроде программ управления светодио-дами и сервоприводами. Действительно интересных программ не так много. Отставание LaunchPad от Arduino, безусловно, есть, но оно не очень велико. Существуют множество программ для семейств микроконтроллеров ATmega и MSP430, которые были разработаны не для Arduino или LaunchPad, но ничто не мешает использовать их (с соответствующей доработкой) на рассматриваемых платах. С этой точки зрения у LaunchPad есть преимущество, поскольку среда IAR очень распространена среди программистов, пишущих для семейства MSP430, и проблем с адаптацией будет меньше.
Дополнительные модули расширения для платы LaunchPad практически
отсутствуют. Можно упомянуть лишь плату сенсорной панели "430Boost-sensel" — отличное и недорогое изделие, практически готовое для использования в реальном устройстве. Кстати, в комплекте с ней идёт запрограммированный микроконтроллер MSP430G2452IN20.
Необходимо заметить, что зачастую стоимость модулей расширения сопоставима или даже превышает стоимость самой микроконтроллерной платы. В результате цена собранного из них даже не самого сложного изделия может получиться сравнительно высокой.
Arduino-совместимые платы содержат довольно мощный восьмиразрядный микроконтроллер ATmega168 или ATmega 328. Плата LaunchPad предназначена для работы с микроконтроллерами семейства MSP430 (ValueLine). Сравним параметры плат, приведённые в табл. 1. Почему именно плат, а не установленных на них микроконтроллеров? Дело в том, что зачастую микроконтроллерная плата используется как узел более сложного изделия. Хотелось бы сравнить такие платы с точки зрения их практического использования без аппаратных доработок со стороны пользователя.
На первый взгляд, сравнение для LaunchPad просто удручающее. Плата Arduino на базе микроконтроллера ATmega168 или ATmega328 существенно превосходит плату с микроконтроллером MSP430G2231 практически во всём, за исключением разрядности и энергопотребления. В частности, микроконтроллер MSP430G2231 не имеет аппаратного USART.
Однако плату LaunchPad можно питать от источника напряжением от 1,8 до 3,6 В, например, от двух элементов типоразмера АА. Только нужно не забыть для снижения энергопотребления отключить на ней узел аппаратного эмулятора. Это делается с помощью предусмотренных на плате перемычек. Использовать автономное питание для плат Arduino неудобно, поскольку микроконтроллеру требуется напряжение 5 В, при меньшем напряжении работа на тактовой частоте 16 МГц не гарантируется.
Одно замечание по поводу тактовой частоты. Дело в том, что микроконтроллеры семейства ValueLine ориентированы в первую очередь на работу от внутреннего RC-генератора. Ситуация усугубляется тем, что он относительно точно откалиброван лишь на одной частоте. Это нужно иметь в виду и внимательно изучить особенности тактирования микроконтроллеров данного семейства.
Теперь настало время проверить платы в работе. Попробуем запрограммировать их для решения простейшей задачи — мигания светодиода. Это удобно для сравнения, поскольку каждая из плат имеет светодиод, подключённый к выходу порта микроконтроллера. Цель состоит в том, чтобы выяснить, насколько просто и быстро на каждой из плат можно выполнить это простейшее задание.
Пример программы для Arduino приведён в табл. 2, а для LaunchPad — в табл. 3. Оба примера взяты из числа стандартных для каждой из плат. Разница в сложности программ минимальна. Стоит лишь отметить, что в Arduino обращаться к портам ввода вывода проще, для этого практически не требуется знакомства с документацией на микроконтроллер. Здесь речь идёт только о стандартных приёмах ввода-вывода, хотя, при желании, так можно сделать и для LaunchPad.
Проверив объём сгенерированного кода, увидим, что выигрыш за LaunchPad. Это и понятно — за простоту и удобство надо платить. В данном случае — объёмом программы. Только нужно иметь в виду, что у микроконтроллера на плате Arduino объём памяти существенно больше, поэтому проигрыш не так существенен.
Что касается стоимости плат, то здесь подстерегает сюрприз. Плата LaunchPad примерно в восемь раз дешевле! Это кажется невероятным, но её цена с доставкой — 124 руб. Arduino-совместимую плату дешевле 900 руб. (без доставки!) найти сложно (цены 2010—2011 гг.). Причина такой разницы, конечно же, в том, что для производителей Arduino-совместимых плат их продажа — источник дохода, а для фирмы Texas Instruments плата LaunchPad — всего лишь реклама микроконтроллеров.
Завершая сравнительный анализ, требуется, как правило, определить, какой из объектов сравнения "лучше". Но я бы не хотел этого делать. При всей внешней схожести платы разные, и в той или иной ситуации преимущество будет то за одной, то за другой.
Плата LaunchPad хорошо подходит для создания экономичных автономных сравнительно простых и недорогих контроллеров. В качестве источника питания к ней достаточно подключить два элемента типоразмера АА. Можно, конечно, нечто подобное построить и на плате Arduino, но это будет не так экономично и существенно дороже. Если же требуется довольно мощный вычислитель с большим объёмом памяти (например, для автономного веб-сервера), то здесь выигрыш будет за Arduino.
Есть ещё один момент. Сторонники Arduino-совместимых плат очень часто описывают их преимущества, однако много ли реальных изделий они собрали и используют в виде законченных конструкций? Попробовать и разобрать — это одно. А вот довести разработку до конца и пользоваться изготовленным устройством — совсем другое. Довольно высокая стоимость платы Arduino зачастую может поставить крест на задумке. Тогда как дешевизна LaunchPad может побудить создать пусть и несложное, но реально используемое изделие.
Кроме того, для создания программ для плат LaunchPad используется фактически стандартное средство разработки и отладки. Когда человек "вырастет" из возможностей этой платы, он естественным образом перейдёт на более мощные процессоры, продолжая использовать для программирования уже хорошо знакомую среду. В случае с Arduino это сделать сложнее, поскольку среда разработки для этой платы довольно специфична.