Здравствуйте.

В настоящее время подумываем издать что-нибудь на тему Arduino, так как в 2015 году эта тема наконец-то стала проклевываться на российском рынке, как в виде книг, так и в виде комплектов-конструкторов. Однако проработка этой темы вдохновила нас на перевод замечательного материала с сайта «Digitaltrends», автор которого очень толково и объективно сравнивает Arduino с новейшим миниатюрным компьютером Raspberry Pi, анализирует достоинства и недостатки обеих технологий.

Перевод этого материала мы бы хотели опубликовать сегодня, а заодно добавить небольшой опрос в нашем традиционном стиле. Поделитесь вашими впечатлениями, предпочтениями, расскажите об опыте работы с той или иной из описанных платформ, если он имеется.

Итак, вы приглашаетесь под кат.

image

В настоящее время инженеры-любители, увлекающиеся конструированием в духе «сделай сам», не испытывают недостатка в специальных устройствах, позволяющих оборудовать любые изделия хорошей электронной начинкой. Одно из самых популярных решений такого рода — это дешевый микрокомпьютер Raspberry Pi, система на кристалле (SoC), использующая полнофункциональную версию ОС Linux (этот компьютер разрабатывался в обучающих целях). Также существует платформа Arduino — микроконтроллер, обладающий внушительной технической поддержкой (целое сообщество разработчиков) и имеющий сотни схем-расширений (так называемых «шилдов»).

После анонса о появлении компьютера Raspberry Pi многие могли подумать, что платформа Arduino морально устарела, однако вполне вероятно, что это слишком поспешное суждение. На самом деле, ниши применения обоих устройств отличаются, у каждого из них есть свои достоинства и недостатки, а также спектр задач, которые решаются по-разному. Кроме того, если опираться лишь на сухие данные спецификаций, то прямое сравнение двух платформ оказывается очень неоднозначным, учитывая, что процессор Arduino с частотой 16 MHz явно уступает процессору Pi с частотой 900 MHz.

Raspberry Pi

image

Безусловно, 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.
Книги по Arduino и Raspberry Pi

Проголосовало 448 человек. Воздержалось 113 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (18)


  1. Wendor
    14.04.2015 12:57
    +1

    Это же разного уровня устройства, которые предназначены для разных задач. Все равно что сравнивать часы и смартфон. Вроде время показывают и тот и тот, а вот функциональное назначение разное.
    Ардуино предназначен для решения простых задач. Собрать информацию с датчиков, дать команды устройствам и т.п. Это интерфейс взаимодействия между электронными компонентами.
    Малинка же — это полноценный компьютер со встроенными возможностями ардуино. В подавляющем большинстве случаев, gpio функционалом малинки не пользуются. Ей целесообразно пользоваться вместо ардуино, когда начинает требоваться что-то более ресурсоемкое чем отслеживание нажатий кнопки (сеть, экран, и пр.).


    1. ph_piter Автор
      14.04.2015 13:01
      +1

      Автор, в общем-то, об этом и пишет.


      1. Wendor
        14.04.2015 13:16
        +1

        Это да. Меня слегка смутил опрос «Arduino — вчерашний день, нужна качественная книга по Raspberry Pi»


        1. Janom
          14.04.2015 16:38
          -2

          Я этот пункт оценил как: «про ардуино и читать нечего, не то что про пи».
          А если серьёзно, вообще не знаю зачем эти книги, может только как старт туториал и сборник faq?


  1. imwode
    14.04.2015 12:58

    Не хватает финального «В реферате сравниваются две платы с припаянными к ним микросхемами и коннекторами. Рассмотрены основные характеристики, произведено сравнение. Рекомендации по использованию зависят от задач пользователя».


    1. ph_piter Автор
      14.04.2015 13:04
      -1

      Да, привкус реферата присутствует, текст с таким расчетом и подбирался


      1. imwode
        14.04.2015 13:11
        +3

        Школьного уровня текст подобрался, качество текста так себе. Делать обзор — так желать обзор. Только это же для журнала Пинер, а не для хабра. Вы облей что, задумали платой с линуксом испугать, когда они уже 13-15 лет из роутеров асусовских и тплинковских узлы вяжут? Ну ок…


  1. vilgeforce
    14.04.2015 13:39
    +2

    «Arduino просто выполняет код, интерпретируемый прошивкой» — щито? Прошу автора показать в прошивке интерпретатор и запасаюсь попкорном.


    1. Indemsys
      14.04.2015 14:38
      -2

      На Arduino TRE скетчи действительно скорее всего интерпретируются.


  1. alrond
    14.04.2015 13:55
    -1

    А я бы предложил еще в опрос добавить pcDuino3 — конкурент RPI с WiFi и SATA на борту, по той же цене и поддерживающий шилды от Arduino


  1. 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 и наоборот.


    1. Iv38
      15.04.2015 15:25

      Ардуино, как конструктор можно сравнивать с конструктором RPi. Но если сравнивать контроллер AVR против одноплатного компьютера на многозадачной ОС, то это две большие разницы. Их скорее нужно не противопоставлять, а использовать совместно. AVR лучше подойдет для систем реального времени, а RPi для обработки данных. Кстати, ШИМ у Малины имеет базовую частоту 19,1 МГц, и она будет падать пропорционально требуемому числу шагов изменения скважности. Вообще прелесть малины для многих пользователей в возможности написания кода на довольно высокоуровневых языках. Но, если работать таким образом с GPIO и всякими интерфейсами, это может быть существенно медленнее и нестабильнее, чем на Ардуино.


      1. Indemsys
        15.04.2015 16:40

        На мой взгляд ошибочно Arduino связывают с AVR.
        Arduino это прежде всего характерная IDE и формфактор.
        Эта IDE легко эмулируется в броузере, к ней несложно прикрутить любой компилятор, скетчи элементарно ложатся на RTOS и OS.

        Потому Arduino неуловим, его не поймать за хвост. Сегодня он на AVR, а завтра на Sitara и Intel.
        Отсюда и неуклюжесть попыток с чем-то сравнивать Arduino.

        Я бы даже сказал, что Arduino и Raspberry Pi почти одно и то же.


  1. lexfrei
    14.04.2015 16:00
    +8

    Заголовок уровня «Майка и трусы: друзья или враги?»


  1. r00tGER
    15.04.2015 11:55
    +2

    Для RPi только работа с GPIO имеет свои особенности, все остальное — это любая книга по Линуксу.
    Ардуино — можно годами обвешиваться шилдами и юзать код из примеров. Естественно, таких книг и так навалом.

    Я бы, купил книгу — «От Ардуино к полноценному программированию AVR в Атмел Студии»…
    Нужно развиваться.


  1. paranoik
    15.04.2015 12:28
    +1

    По ардуино материала завались, я бы предпочел книгу по stm32


  1. ignat99
    15.04.2015 13:42

    Для ESP8266 не нужно шильда для подключения к сети через WIFi и можно использовать Arduino IDE и практически любые скетчи от Arduino проектов. Не нужно тратить время на создания библиотек для различных сенсоров с нуля.


  1. Raegdan
    18.04.2015 15:33

    Совершенно согласен с третьим пунктом — использовать их совместно значит получить устройство с мощнейшим потенциалом. При помощи дуинки работаем с простой электроникой, выполняем на ней базовую обработку — получаем удобство и возможность RT-обработки, т.к. работу небольшого, простого и статичного кода дуины можно при желании расписать до такта. А некритичные к реалтаймовости и/или тяжёлые задачи сгружаем на малинку и пользуемся всем богатством линукса, включая любой способ связи с миром и любые алгоритмы решения задач. Кстати, на малинке можно на всякий пожарный держать Ардуино ИДЕ и при необходимости править прошивку дуины, не отходя от кассы.

    Кстати, насчёт питания: в цепь питания устройства можно поставить небольшой аккумулятор или вообще ионистор, и отслеживать наличие внешнего напряжения при помощи той же самой дуины. В случае его пропадания она отдаёт на малину команду корректного завершения работы и прекращает выполнение своего полезного кода для экономии энергии.

    примерно так
    bool power;
    
    void setup() {
      power = true;
      ...
    }
    
    void onPowerLoss() {
      power = false;
    }
    
    void loop() {
      if (!power) return;
      ...
    }