Arduino vs Stellaris LaunchPad
- Войдите на сайт для отправки комментариев
Некоторое время назад попала ко мне в руки плата StellarisLaunchPad от Texas Instruments - в целом ардуиноподобная плата, базирующаяся на МК семества ARM Cortex M4 и имеющая по сравнению с дуиной гораздо больше фарша за меньшие деньги. Характерно, что под нее даже существоет клон ArduinoIDE под названием Energia, позволяющий писать на вайринге и даже кое-где задействовать библиотеки от дуины.
Поигравшись с обеими накропал я небольшое сравнение двух плат (оригинал лежит у меня в блоге), которым и делюсь здесь:
Когда в руки попадаются несколько похожих приборов примерно одинакового назначения невозможно не задаться вопросом "а кто круче". Ниже попытка сравнить их по различным характеристикам. Все исключительно на собственном опыте, ни на какую полноту, ни тем более на безгрешность сравнение не претендует. Итак: Цена: 12.99 на оцициальном сайте у лончпада, включая весьма оперативную доставку в Россию (кажется FedExом, хотя могу и ошибаться). У ардуины с ценами все запутано. Мой конкретный экземпляр Leonardo (китайский клон) стоил 17 баксов с доставкой, которая продолжалась два месяца. Точно такой же на оф. сайте будет стоить 18 евро + доставка примерно еще столько же. В зависимости от модели и степени оригинальности цены могут разниться от 5 долларов до 40 евро. У Российских продавцов цены порой доходят до 2600 руб за некоторые модели (1150 за такую же как у меня Леонардо). Физические размеры: 5.5х7 у Ардуины против 5.5х6.5 у Launchpad. То есть фактически разницы нет. Электрические параметры: Обе платы способны питаться от имеющегося юсб разъема. Потребляемый ток не замерял, но подозреваю, что в похожих режимах он будет сравним, возможно с небольшим преимуществом у Launchpad (все-таки ее процессор позиционируется как ultra-low power). Launchpad при этом достаточно лего отправляетс в hibernate, где, судя по даташиту потребление будет составлять десятки микроватт. Впрочем, объективности ради - вопросов энергосбережения я в своих экспериментах не касался. Так же обе платы имеют возможность питания от независимого источника. Порты ардуины выдают по 5V, максимальный ток - 20 мА. Launchpad отдает по 3.3V, 8 мА. Обе платы имеют выходы питания 5 и 3.3V. Входы Launchpad'а толерантны к 5V, Входы ардуины, как правило вполне раскачиваются от 3.3V. Вычислительные параметры: Тут Launchpad впереди на два корпуса - 256К флэша+32К памяти против типичных 32+4, 80MHz тактовой частоты против 16, 8 UARTов против одного (4 у Arduino Mega), по 4 SPI и I2C, опять же против одного. 24 таймера против трех, ну и тд... Программирование:А вот здесь ситуация меняется на противоположную. За Ардуиной стоит архитектура AVR, даром что все пророчат ей сколрую гибель (уже несколько лет, как пророчат, ага), имеющая в своем архиве, пожалуй, наибольшее количество наработок и библиотек среди всех моделей МК вообще (PIC мы пока не рассматриваем). Ну и количество готовых библиотек собственно для ардуины так же впечатляет. TI же имеет в своем активе лишь библиотеку для работы с периферией процессора и небольшое количество "народных" библиотек. С точки зрения выбора компиляторов - картина примерно такая же, ибо свой компилятор под AVR не написал, похоже только ленивый, TI же предлагает выбор из 4 компиляторов нескольких производителей, причем "на самом деле" все из них хорошо платные. С другой стороны, были бы мозги, компилятора хватит и одного. С кроссплатформенностью у Ардуины все на порядок лучше - Win, Linux и MacOs поддерживаются официально. TI официально поддерживает только Win, впрочем, судя по интернету под Линуксом народ успешно пишет, благо великий и могучий GCC ARMы вполне умеет поддерживать. Если же говорить непосредственно о программировании, то, по моему субъективному мнению писать под Arduino (а на самом деле под AVR вообще) несколько приятнее, ибо зело меньше лишний телодвижений надо совершать. Впочем разница здесь совершенно не критична. Прошивка и отладка: С точки зрения прошивки налицо примерно паритет - в обоих случах достаточно однрго движения мышкой в "родной среде" и прошивка залита. Под AVR, однако существует так же бешенное количество разных программаторов на любой вкус и кошелек, впрочем не знаю, насколько этот плюс большой. А вот в отладке TI достаточно далеко впереди - все-таки встроенный внутрисхемный отладчик на плате - это ВЕЩЬ! Внутрисхемные отладчики для AVR так же существуют, но с ними по прицине цены все грустно, так что отлаживать приходится методом тщательного тупления в код или отладочных печатей по UART. Платы расширения:Тут, опять же, у ардуины полное превосходство. Какжется, трудно найти то, что еще не реаизовано в отдельной плате расширения, на любой вкус. С другой стороны, у TI тоже есть концепция Booster Packов, но как-то выбор не впечатляет, да и цены кусаются, мягко говоря. Прочее: Еще несколько мелочей, которые непонятно, куда впихнуть, но упомянуть о них, безусловно, стоит. Ардуина хороша для быстрого прототипирования разрабатываемого устройства - собрал все на макетке, набросал прошивку, работает, там уже можно и плату разводить и МК в нее вставить на выбор (надо будет только чуть-чуть модифицировать прошивку). Да и в готовое устройство можно целиком плату впихнуть. Процессор же у TI упакован в совершенно непаябельный (по крайней мере для моих кривых рук) корпус, а на самой плате по совершенно непонятной мне причине почему-то отсуствуют крепежные отверстия. Причем, учитыва то, что повторяется это (отсуствие крепежных ответсий) от одного LaunchPadа к другому - речь идет о вполне осознаном действии. Подозреваю, что маркетологи здесь постарались. Еще надо отметить, что у TI есть несколько сильных конкурентов из числа совсем непосредственных соседей - тот же ST Micro предлагает за похожие деньги (от 8 до 20 долларов) несколько очень вкусных оценочных плат из ряда STMDiscovery c похожими характеристиками, причем "в народе" они гораздо более популярны, чем LaunchPadы. Да еще и Raspberry Pi не надо сбрасывать со счетов, хоть он и малость из другой оперы. Резюме:В общем, я не могу однозначно сказать "это лучше" ни про одну из плат. LanchPad я бы рекомендовал тем, кому хочется скорее покопаться с железом и программированием, а сам конечный результат не так важен. Ардуино, скорее подойдет тем, для кого МК есть не более чем инструмент в конкретном проекте (подчас, кстати, достаточно далеком от электроники вообще). Да и позиционируется он именно так.
Рекомендовать StellarisLaunchPad, особенно начинающим, мозги сломают.
LaunchPad на MSP430 ещё можно, хоть документация на русском есть.
Преимущество AVR это хорошая документация, много книг на русском,
бесплатная среда AVR Studio, языки программирования на выбор
(C, Basic, Pascal и др.), легко программировать, много готовых библиотек
и т.д и т.п.
У TI сильная сторона это энергопотребление у 430 серии, сейчас
осваиваю их SoC CC430. Цена, габариты и начинка ни одна Arduino
рядом не стояла. В качестве беспроводных датчиков то что надо и
с Arduino несложно состыковать. А доки только на англицком:)
А Energia это поиграться и забыть.
Сравнивать велосипед с автомобилем бессмысленно, впрочем, почему бы и нет.
Дешевле, быстрее, лучше - это да. Но как уже правильно сказали - сложнее, а потому - не для каждого. Launcpad не трогал, а от stm32 я в восторге.
Рекомендовать StellarisLaunchPad, особенно начинающим, мозги сломают.
Весь вопрос в том, что иметь ввиду под понятием "начинающие".
Если это кто-то, желающий сделать нечто для дома/дачи/автомобиля своими руками, то безусловно Ардуина для него лучший выбор.
Если это человек, делающий первые шаги в электронике - я бы ему вообще не рекомендовал на первое время трогать МК - луче сначала уверенно освоиться с дискретными компонентами и выучить законы Ома и Кирхгофа.
Если это электронщик, по каким-то критериям до сих пор не имевший дела с МК, то начать с АВР, конечно, можно, но приобщаться к АРМам все равно придется, причем скорее рано, чем поздно.
Если это программист, решивший освоить embedded, то ему, по идее будет по фигу (ну, мы ведь считаем, что программист он хороший).
Если это гик, которому в кайф покопаться в неизвестном железе и освить новое в программировании - его выбор , однозначно, ARM.
А Energia это поиграться и забыть.
Это, конечно правда, но любое хобби - это всегда в первую очередь поиграться. Мне, например, интересно будет взять библиотеку от Ардуины и портировать ее на энергию. Просто для дого, чтобы покопаться.
Дешевле - кончно да, но некритично дешевле, если сравнение вести с uno/leonardo, а не с mega/due позиционирующимися как топовые.
Но при этом на том же ebay можно купить мини по 5 баксов за штучку.
Быстрее - тут спорить трудно. Однако что толку от гоночной феррари на дачном проселке? И нужны ли 80 МГц чтобы моргать диодом или отслеживать температуру за окном?
Лучше - не согласен. Я написал в резюме, что ответа на вопрос "что лучше" для меня лично нету. И там и там есть свои преимущества и свои недостатки.
По большому счету, для меня эт все игрушки, а чем больше разных игрушек, тем лучше -)
Дешевле - сравнивайте камни. Правда сравнение странное при разных возможностях камней.
Быстрее - даже 72МГц больше, чем 20МГц. При чем тут моргать свтодиодом. Каждому камню - своя задача.
Лучше - я сравниваю по возможностям и наличии периферии.
Вообще сравнивать несравнимое - бессмысленно.
Я не говорю, что Ардуино - плохой, просто лично мне больше по душе STM32 независимо от задач. Leonardo, ATmega16 у меня есть. Потому какие то вещи я отлаживаю на них, другие на STM32. Разумеется и реальные задачи будут выполняться на том, что более подойдет к задаче.
Если это человек, делающий первые шаги в электронике - я бы ему вообще не рекомендовал на первое время трогать МК - луче сначала уверенно освоиться с дискретными компонентами и выучить законы Ома и Кирхгофа.
Да кто сейчас азы изучает, всем сразу ручками дай попробовать. Я как-то ввёл в ступпор
одного сервисного инженера, когда спросил какой мк стоит в конкретной модели кас. аппарата.
Он даже сразу не понял о чём речь.
На форуме много вопросов из серии "я не умею читать, не знаю что такое интернет, что такое
datasheet , подскажите пожалуйста..."
Если это электронщик, по каким-то критериям до сих пор не имевший дела с МК, то начать с АВР, конечно, можно, но приобщаться к АРМам все равно придется, причем скорее рано, чем поздно.
А насчёт ARM пока невижу смысла ползти "по течению" 8-бит мк хорошо справляются со многими
задачами, где не требуется обработка видео или звука в реальном времени.
Эксперементирую с Stellaris LaunchPad в данный момент на ардуиноподобной Energia и разобрался с библиотеками для ENC28J60 (поддержка сети работает достаточно шустро) ,DS18B20 ,DHT -собрал всю необходимую информацию по этой теме.Пока не понял почему не корректно работает чтение из датчика BMP085.
А так у Stellaris LaunchPad все же есть приимущества по сравнению с arduino из-за цены/количеству портов GPIO
Возможно надо подтяжку резисторами делать поменьше сопротивления ,А то выдает мусор вместо данных.
Пока BMP085 подключен к raspberry pi и с Stellaris LaunchPad больше не пробовал.. Скетч пробовал от ардуино -совместимость полная,кроме одной математической функции.
А питается он от 3.3 или от 5V?
Если от 5, то взможно слабенький 8мА выход не может продавить I2C до достаточно низкого уровня, чтобы тот определялся землей.
А по дефолту, так выходы ланчпада вообще на 2мА настроены, я правда не пытался менять эту настройку из энергии, только из родной TIной среды, но возможно это поможет.
У меня вариант BMP085 с встроенным стабилизатором на 3.3в ,на нем уже и подтяжка вроде есть.на 3.3в похоже ниже сопротивление резисторов нужно ставить,например вместо 4.7 кОМ надо 1кОМ для подключения DS18B20 при паразитном питании.
Для того, чтобы просадить 1кОм висящий на 3.3 до нуля порт должен принять 3.3мА, на что у него может не хватать сил.
Возможно я торможу, но имхо, лучше наоборот, 10К поставить.
Опять же, если там встроенный стабилизатор на 3.3, снова встает вопрос - чем питается модуль? На стабилизаторе тоже есть весьма ненулевое падение напржения.
Кстати, нормально ли оно работает с rasbberri pi? Если да, то при каком питании?
В зависимости от этого можно смотреть либо на проблемы с питанием, либо на проблемы с подтяжкой.
Ну это ладно,буду пробовать "играться" с резисторами,расмотрю внимательно что всетаки стоит на самой плате BMP085 .На саму BMP085 питание идет +5в.
Кстати в случае ардуины:даже если +5 не подключить ,то ардуина всеравно работает - хватает импульсов от шины i2c :),
На raspberry pi работает отлично - подключаю тоже к +5в
Ну если от малины работает, и условия питания идентичные, то видимо проблема в подтяжке.
Да, остается либо номиналами резисторов играть, либо режимом работы пинов gpio.
Отпишитесь, плз, когда удастся победить.