В настоящее время подумываем издать что-нибудь на тему Arduino, так как в 2015 году эта тема наконец-то стала проклевываться на российском рынке, как в виде книг, так и в виде комплектов-конструкторов. Однако проработка этой темы вдохновила нас на перевод замечательного материала с сайта «Digitaltrends», автор которого очень толково и объективно сравнивает Arduino с новейшим миниатюрным компьютером Raspberry Pi, анализирует достоинства и недостатки обеих технологий.
Перевод этого материала мы бы хотели опубликовать сегодня, а заодно добавить небольшой опрос в нашем традиционном стиле. Поделитесь вашими впечатлениями, предпочтениями, расскажите об опыте работы с той или иной из описанных платформ, если он имеется.
Итак, вы приглашаетесь под кат.
В настоящее время инженеры-любители, увлекающиеся конструированием в духе «сделай сам», не испытывают недостатка в специальных устройствах, позволяющих оборудовать любые изделия хорошей электронной начинкой. Одно из самых популярных решений такого рода — это дешевый микрокомпьютер Raspberry Pi, система на кристалле (SoC), использующая полнофункциональную версию ОС Linux (этот компьютер разрабатывался в обучающих целях). Также существует платформа Arduino — микроконтроллер, обладающий внушительной технической поддержкой (целое сообщество разработчиков) и имеющий сотни схем-расширений (так называемых «шилдов»).
После анонса о появлении компьютера Raspberry Pi многие могли подумать, что платформа Arduino морально устарела, однако вполне вероятно, что это слишком поспешное суждение. На самом деле, ниши применения обоих устройств отличаются, у каждого из них есть свои достоинства и недостатки, а также спектр задач, которые решаются по-разному. Кроме того, если опираться лишь на сухие данные спецификаций, то прямое сравнение двух платформ оказывается очень неоднозначным, учитывая, что процессор Arduino с частотой 16 MHz явно уступает процессору Pi с частотой 900 MHz.
Raspberry Pi
Безусловно, Raspberry Pi является полнофункциональным компьютером. Он обладает всеми атрибутами настоящего компьютера: выделенным процессором, памятью и графическим драйвером для вывода через HDMI. На нем даже работает специальная версия операционной системы Linux. Поэтому на Raspberry Pi легко установить большинство программ для Linux. Стоит немного потрудиться — и Raspberry Pi можно использовать как полноценный медиа-сервер или эмулятор видеоигр.
Хотя в Pi и отсутствует внутреннее хранилище данных, на этом компьютере можно использовать смарт-карты в качестве флэш-памяти, обслуживающей всю систему. Таким образом, можно быстро выгружать для отладки различные версии операционной системы или программных обновлений. Поскольку это устройство обеспечивает независимую соединяемость по сети, его можно настраивать и для доступа по SSH, либо пересылать на него файлы по протоколу FTP.
Arduino
Платы Arduino – это микроконтроллеры, а не полноценные компьютеры. На них нет операционной системы как таковой, Arduino просто выполняет код, интерпретируемый прошивкой. В данном случае вы не имеете в распоряжении базовых инструментов, предоставляемых операционной системой, но, с другой стороны, такое непосредственное выполнение несложного кода протекает проще, а при работе не возникает никаких издержек, связанных с операционной системой.
Основное назначение платы Arduino – взаимодействие с сенсорами и устройствами, поэтому Arduino отлично подходит для аппаратных проектов, где требуется просто реагировать на различные сигналы сенсоров и ручной ввод. Может показаться, что в этом нет ничего особенного, однако на деле Arduino – сложная выверенная система, значительно облегчающая управление устройствами. Она отлично подходит именно для сочленения других устройств и исполнительных механизмов, где полновесная операционная система просто не требуется, так как речь идет просто о регистрации действий и реагировании на них.
Питание
Требования к электропитанию для этих двух систем очень отличаются. Raspberry Pi для работы нужно постоянное напряжение 5V, более того, работа Raspberry Pi завершается программным процессом — как у обычного компьютера. Arduino, в свою очередь, начинает выполнять код сразу после включения и прекращает работу, когда вы вынимаете штепсель из розетки. Чтобы расширить функционал устройства с Arduino, вы подключаете устройство либо непосредственно к штырьковым контактам самой платы Arduino либо к платам расширений (шилдам) для нее. Существуют сотни разнообразных шилдов, каждый из которых предназначен для решения специфической задачи, может взаимодействовать с теми или иными сенсорами, а также с другими шилдами, которые вместе образуют полноценный управляющий блок.
Raspberry Pi сложно переносить с места на место, так как вы не сможете просто вставить в него две батарейки AA. Для работы этого компьютера необходимо обеспечить бесперебойное питание, а также подключить дополнительное оборудование, которое гарантирует подачу постоянного тока. В случае с Arduino весь процесс несколько упрощается, так как система требует всего лишь комплекта батареек, обеспечивающего напряжение не ниже определенного уровня; также нужен простой шилд для управления электропитанием. Даже при аварийном отключении тока на Arduino вы не рискуете ни повредить операционную систему, ни получить какие-либо программные ошибки. Стоит заново подключить Arduino к источнику энергии — и прибор просто возобновит работу.
Сеть
В Raspberry Pi есть встроенный Ethernet-порт, который обеспечивает легкий доступ к любой сети и практически не требует настройки. Провести беспроводной Интернет на Raspberry Pi также не составляет труда: покупаете USB-адаптер для WiFi и устанавливаете соответствующий драйвер. Как только это сделано, можете использовать операционную систему для подключения к веб-серверам, обрабатывать HTML либо просто что-нибудь писать в Интернете. Можете даже использовать Raspberry Pi для создания виртуальной частной сети или в качестве сервера печати.
К сожалению, система Arduino без дополнительных модификаций не приспособлена для работы по сети. С ней нужно как следует повозиться, чтобы установить надежное соединение, но это вполне возможно. Вам потребуется дополнительная схема, оснащенная Ethernet-портом, также понадобится подключить кое-какие кабели и написать нужный код, чтобы все заработало. В общем, это достаточно сложная работа, поэтому некоторые компании выпускают платформы Arduino с уже встроенным функционалом Ethernet.
Сенсоры
Как Raspberry Pi, так и Arduino обладают набором интерфейсных портов, однако аналоговые сенсоры гораздо проще подключать именно к Arduino. Микроконтроллер с легкостью интерпретирует различные сигналы на основе написанного вами кода и реагирует на них. Поэтому Arduino отлично подходит для тех случаев, когда вы планируете выполнять серии команд или реагировать на показания сенсоров, в зависимости от которых будет корректироваться работа сервоприводов и устройств.
В свою очередь, Raspberry Pi для эффективного взаимодействия с такими устройствами требует специального программного обеспечения — вероятно, это излишние сложности, если вы хотите просто автоматизировать поливку в саду или хранить пиво при нужной температуре. Во многих проектах Arduino и Raspberry Pi используются совместно, причем Arduino выступает в качестве управляющей платы, на которой выполняются команды, выдаваемые ПО Raspberry Pi. Информация с сенсоров подается на Raspberry Pi, где она записывается, либо в ответ на нее выполняются те или иные операции.
Итоги
Итак, какая из двух технологий подойдет вам? Однозначного ответа нет, так как он зависит от конкретного проекта.
В каких случаях лучше выбрать Arduino? Это делается, если ваша основная задача – считывать данные сенсоров, менять значения на двигателе или других устройствах. Учитывая требования Arduino к электропитанию и простоту обслуживания этой системы, устройство вполне можно эксплуатировать не выключая, при этом почти не вмешиваясь в его работу.
Когда лучше остановиться на Raspberry Pi? Это делается при решении таких задач, которые было бы логично выполнять на персональном компьютере. Raspberry Pi упрощает управление потоком операций в разных ситуациях: если вы подключаетесь к Интернету для считывания или записи данных, воспроизводите какую-либо медиа-информацию или подключаетесь к внешнему дисплею.
Учитывая, что Arduino и Raspberry Pi решают разные задачи, в определенных ситуациях удобно использовать эти устройства совместно. Существует ряд возможностей соединения двух устройств; в таком случае вы получаете клиентский доступ к настройкам и коду через Pi, в то время как Arduino контролирует управление рабочими органами и собирает информацию с сенсоров. Существует немало вариантов такого соединения: по USB, локальной сети или в виде простого подключения портов ввода/вывода Arduino к Raspberry Pi.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (18)
imwode
14.04.2015 12:58Не хватает финального «В реферате сравниваются две платы с припаянными к ним микросхемами и коннекторами. Рассмотрены основные характеристики, произведено сравнение. Рекомендации по использованию зависят от задач пользователя».
ph_piter Автор
14.04.2015 13:04-1Да, привкус реферата присутствует, текст с таким расчетом и подбирался
imwode
14.04.2015 13:11+3Школьного уровня текст подобрался, качество текста так себе. Делать обзор — так желать обзор. Только это же для журнала Пинер, а не для хабра. Вы облей что, задумали платой с линуксом испугать, когда они уже 13-15 лет из роутеров асусовских и тплинковских узлы вяжут? Ну ок…
vilgeforce
14.04.2015 13:39+2«Arduino просто выполняет код, интерпретируемый прошивкой» — щито? Прошу автора показать в прошивке интерпретатор и запасаюсь попкорном.
alrond
14.04.2015 13:55-1А я бы предложил еще в опрос добавить pcDuino3 — конкурент RPI с WiFi и SATA на борту, по той же цене и поддерживающий шилды от Arduino
Indemsys
14.04.2015 14:24+1Не согласен со статьей. Это неудачная попытка упрощения действительности.
Arduino и Raspberry Pi можно и нужно сравнивать по быстродействию. И задачи они способны выполнять одни и те же.
Просто автор забыл, что Arduino это не только AVR-ы, но и Cortex-M3 до 84 МГц (пока)
Сравнение правда осложняет то, что на процессоры Raspberry Pi не открыта полностью вся документация.
Итого, частота системной шины на Raspberry Pi 250 МГц от нее работает UART и SPI, GPIO и PWM тактируются похоже от 100 МГц
Т.е. Raspberry Pi способен гораздо лучше работать с сенсорами и исполнительными механизмами.
Но для Arduino есть операционные системы.
Как не забавно, но для Cortex-M3 на которых сделаны некоторые Arduino адаптирован тот же Линукс.
И это если не брать в расчет мультипроцессорный Arduino TRE — 1-GHz Sitara AM335x.
Серьезный фактор в том, что у Arduino (однопроцессорных) можно защитить программу от считывания и копирования, а в Raspberry Pi нет.
Т.е. по сути все обсуждение различий Arduino и Raspberry Pi сводится к обсуждению различий способностей их пользователей.
Кто-то знает отлично линукс, но неспособен разработать под него драйвера GPIO для работы в реальном времени под Raspberry Pi.
Кто-то отлично знает свой аквариум, но не настроен изучать командную строку и скрипты линукса.
А кто-то умеет и то и другое и сделает на Raspberry Pi все что можно сделать на Arduino и наоборот.
Iv38
15.04.2015 15:25Ардуино, как конструктор можно сравнивать с конструктором RPi. Но если сравнивать контроллер AVR против одноплатного компьютера на многозадачной ОС, то это две большие разницы. Их скорее нужно не противопоставлять, а использовать совместно. AVR лучше подойдет для систем реального времени, а RPi для обработки данных. Кстати, ШИМ у Малины имеет базовую частоту 19,1 МГц, и она будет падать пропорционально требуемому числу шагов изменения скважности. Вообще прелесть малины для многих пользователей в возможности написания кода на довольно высокоуровневых языках. Но, если работать таким образом с GPIO и всякими интерфейсами, это может быть существенно медленнее и нестабильнее, чем на Ардуино.
Indemsys
15.04.2015 16:40На мой взгляд ошибочно Arduino связывают с AVR.
Arduino это прежде всего характерная IDE и формфактор.
Эта IDE легко эмулируется в броузере, к ней несложно прикрутить любой компилятор, скетчи элементарно ложатся на RTOS и OS.
Потому Arduino неуловим, его не поймать за хвост. Сегодня он на AVR, а завтра на Sitara и Intel.
Отсюда и неуклюжесть попыток с чем-то сравнивать Arduino.
Я бы даже сказал, что Arduino и Raspberry Pi почти одно и то же.
r00tGER
15.04.2015 11:55+2Для RPi только работа с GPIO имеет свои особенности, все остальное — это любая книга по Линуксу.
Ардуино — можно годами обвешиваться шилдами и юзать код из примеров. Естественно, таких книг и так навалом.
Я бы, купил книгу — «От Ардуино к полноценному программированию AVR в Атмел Студии»…
Нужно развиваться.
ignat99
15.04.2015 13:42Для ESP8266 не нужно шильда для подключения к сети через WIFi и можно использовать Arduino IDE и практически любые скетчи от Arduino проектов. Не нужно тратить время на создания библиотек для различных сенсоров с нуля.
Raegdan
18.04.2015 15:33Совершенно согласен с третьим пунктом — использовать их совместно значит получить устройство с мощнейшим потенциалом. При помощи дуинки работаем с простой электроникой, выполняем на ней базовую обработку — получаем удобство и возможность RT-обработки, т.к. работу небольшого, простого и статичного кода дуины можно при желании расписать до такта. А некритичные к реалтаймовости и/или тяжёлые задачи сгружаем на малинку и пользуемся всем богатством линукса, включая любой способ связи с миром и любые алгоритмы решения задач. Кстати, на малинке можно на всякий пожарный держать Ардуино ИДЕ и при необходимости править прошивку дуины, не отходя от кассы.
Кстати, насчёт питания: в цепь питания устройства можно поставить небольшой аккумулятор или вообще ионистор, и отслеживать наличие внешнего напряжения при помощи той же самой дуины. В случае его пропадания она отдаёт на малину команду корректного завершения работы и прекращает выполнение своего полезного кода для экономии энергии.
примерно такbool power; void setup() { power = true; ... } void onPowerLoss() { power = false; } void loop() { if (!power) return; ... }
Wendor
Это же разного уровня устройства, которые предназначены для разных задач. Все равно что сравнивать часы и смартфон. Вроде время показывают и тот и тот, а вот функциональное назначение разное.
Ардуино предназначен для решения простых задач. Собрать информацию с датчиков, дать команды устройствам и т.п. Это интерфейс взаимодействия между электронными компонентами.
Малинка же — это полноценный компьютер со встроенными возможностями ардуино. В подавляющем большинстве случаев, gpio функционалом малинки не пользуются. Ей целесообразно пользоваться вместо ардуино, когда начинает требоваться что-то более ресурсоемкое чем отслеживание нажатий кнопки (сеть, экран, и пр.).
ph_piter Автор
Автор, в общем-то, об этом и пишет.
Wendor
Это да. Меня слегка смутил опрос «Arduino — вчерашний день, нужна качественная книга по Raspberry Pi»
Janom
Я этот пункт оценил как: «про ардуино и читать нечего, не то что про пи».
А если серьёзно, вообще не знаю зачем эти книги, может только как старт туториал и сборник faq?