Сайт магистра

Якубчук Михаил Олегович

Arduino против Raspberry Pi: Какая плата лучше?

Авторы:Команда сайта curcuito.io

Автор перевода:М. О. Якубчук

Источник (англ.):Arduino vs. Raspberry Pi: which board is best?

Введение

В мире электроники для любителей доминируют два устройства: Arduino и Raspberry Pi. И то, и другое можно найти на радиорынках по всему миру. Непосвященному они могут показаться похожими: это обе печатные платы с припаянными наверху резисторами, конденсаторами и блоками ICU, а контакты выходят сбоку.

Однако более пристальный взгляд показывает, что Arduino и Raspberry Pi отличаются друг от друга как по архитектуре, так и по назначению. Мы написали это руководство, чтобы пролить свет на эти различия и помочь вам решить, что подходит для ваших целей.

Что такое Raspberry Pi?

Первое поколение всепобеждающего Raspberry Pi появилось на рынке в 2012 году и было разработано как образовательный инструмент, который может помочь научить детей программировать. С тех пор он набирает обороты за пределами школьного образования. Изобретатели-любители по всему миру включают RPi в широкий спектр проектов.

Последняя версия Raspberry Pi 3, Model B +, поставляется с четырехъядерным процессором 1,4 ГГц и двухдиапазонной беспроводной локальной сетью, а также выходом HDMI, к которому вы можете подключить свой монитор или телевизор, и различными входами USB, которые подходят для мыши, клавиатуры и зарядного устройства для мобильного телефона.

Что такое Arduino?

Arduino впервые появилась на полках в 2008 году и продавалась как макетная плата с открытым исходным кодом для микроконтроллеров Atmel. Микроконтроллер, как мы обнаружим, сильно отличается от микропроцессора, на котором работает Raspberry Pi.

Arduino можно легко подключить к макетным платам и дополнить специальными платами расширения, называемыми шилдами. Поскольку оборудование Arduino имеет открытый исходный код, существует множество вариантов на выбор. Самый популярный, UNO Rev 3, основан на ATmega328 от Atmel. В комплекте есть все необходимое для подключения к MCU, а также дополнительные компоненты, такие как светодиоды, регуляторы напряжения и кнопка сброса.

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

Arduino Uno Rev3

Raspberry Pi Model 3 B+

Первое, что может броситься в глаза, это то, что Broadcom BCM2837 Raspberry Pi работает на частоте 1,4 ГГц, а микроконтроллер Atmel Arduino - на частоте 16 МГц. Некоторые простые арифметические вычисления должны сказать вам, что один из них примерно в сто раз быстрее другого.

Вы найдете аналогичные расхождения и в других областях. Raspberry Pi может похвастаться 1 ГБ оперативной памяти, а Arduino - всего несколько килобайт. Arduino имеет один порт USB, а Raspberry Pi - несколько, а также HDMI, разъем RJ45 и встроенную беспроводную связь.

Так почему же, спросите вы, Arduino так популярен, когда Raspberry Pi превосходит его во многих ключевых областях? Чтобы найти ответ, нам нужно изучить различия между микропроцессором и микроконтроллером.

Так в чем же разница между микроконтроллером и микропроцессором?

Как мы уже упоминали, в центре каждого Arduino находится черный блок IC, называемый микроконтроллером. Будь то старый 28-контактный корпус DIP (двухрядный вывод) или более современный SMD (устройство для поверхностного монтажа), этот маленький чип содержит все необходимое для реальных вычислений: микропроцессор, таймер, немного памяти, и порты ввода-вывода, через которые MCU связывается с внешним миром. Именно этот компонент фактически выполняет работу Arduino; остальная часть платы и программное обеспечение Arduino помогут вам взаимодействовать с ней.

Raspberry Pi работает по-другому и имеет много общего с настольным ПК. В его основе лежит процессор Broadcom, который подключен к оперативной памяти, внешнему хранилищу и портам в других местах на плате. Он работает под управлением операционной системы, которая обрабатывает основные функции компьютера, запускает программы, управляет портами HDMI, USB и RJ45 и создает графический интерфейс для отображения пользователю.

Эта архитектура позволяет Raspberry Pi делать то, что Arduino и его микроконтроллер никогда бы не сделали. Но для некоторых приложений полноценный компьютер такого типа был бы громоздким и ненужным. Рассмотрим схему на клавиатуре вашего компьютера. Она предназначен для отслеживания активности набора переключателей и отправки сообщений о нажатии клавиш на ваш компьютер. Вы найдете множество устройств по всему дому, содержащих крошечные микроконтроллеры, которые, не обремененные ресурсоемкими функциями, такими как операционные системы или графические интерфейсы (или даже загрузчики), они могут выполнять свою работу дешево и эффективно.

Операционная система

Стандартно Raspberry Pi запускает специализированную версию Linux, известную как Raspbian. Она была оптимизирована для Pi с целью наилучшего использования архитектуры платы и, таким образом, обеспечения максимально удобного взаимодействия с пользователем. При этом ничто не мешает творческим пользователям Pi установить на свое устройство совершенно другую операционную систему. Доступны десятки вариантов, включая Ubuntu, OSMC и RetroPie. Таким образом, каждое устройство Raspberry Pi - это всего лишь свежий дистрибутив, который не может стать игровой консолью или медиацентром.

Хотя около 2 КБ флэш-памяти Arduino отведено для специальной прошивки, называемой загрузчиком, в ней отсутствует полноценная операционная система, и поэтому программы не запускаются так же, как на Raspberry Pi. Вместо этого он загрузится и выполнит инструкции, которые вы предоставили с помощью IDE Arduino, которая будет работать на компьютерах с Windows, Mac или Linux (включая Raspberry Pi).

Следовательно, вы будете заниматься программированием на отдельной машине. Это подводит нас к другому важному вопросу: стоимости!

Стоимость

С точки зрения стоимости эти два устройства сопоставимы: последний RPI стоит 35 долларов, а Arduino UNO - относительно скромные 20 долларов. Однако каждое семейство устройств относительно велико. Самый маленький Raspberry Pi - Raspberry Pi Zero, стоит всего 5 долларов.

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

В отличие от этого, программный подход Raspberry Pi требует всего нескольких дополнительных компонентов: вам понадобится монитор, мышь и клавиатура, а также кабели, необходимые для соединения всего вместе.

Написание ваших первых программ

Прежде чем вы сможете приступить к работе с Raspberry Pi, вам необходимо установить и настроить операционную систему. К счастью, есть удобный zip-файл, который позволяет сделать это довольно просто: он называется вполне уместно, NOOBS.

Чтобы начать работу с Arduino, вам необходимо установить IDE на компьютер или планшет, подключенный к Arduino через USB. Тогда вы сможете создать свой первый проект. Вы запихнете ножки светодиода в макетную плату и скомпилируете программу, которая будет включать и выключать его. Чтобы светодиод не перегорел, вы можете прикрепить небольшой резистор и макетную плату.

Учитывая его предназначение как образовательного инструмента для потенциальных программистов, вы ожидаете, что Raspberry Pi будет поддерживать серьёзный диапазон языков программирования. Так оно и есть.

Для начинающих программистов очевидным выбором является Python (из которого берется «Pi» в Raspberry Pi). Он высокоуровневый и интуитивно понятный, с синтаксисом, который легко освоить даже новичкам. Более того, это «интерпретируемый» язык, который переводится во время работы (в отличие от «скомпилированного» языка, который должен быть заранее записан в машинный код).

Raspbian поставляется с предустановленной Python IDE, известной как IDLE 3, которая достаточно мощна для создания сложных программ. Однако это не единственный доступный язык: очень молодые программисты могут захотеть начать работу с Scratch (с большой буквы), а более опытные могут со временем перейти на C, C ++ или Java.

Поскольку у Arduino нет интерпретатора, его код должен быть написан, скомпилирован и загружен на чип Atmel, прежде чем он будет запущен. Когда вы будете довольны своим кодом, вы нажимаете кнопку загрузки. IDE выполнит проверку ошибок перед компиляцией кода и прикрепленных файлов библиотеки и отправкой результата в Arduino. На пути к компилятору ваш код будет обработан, чтобы превратить его в программу на C ++, а затем в машиночитаемые инструкции.

Интерпретирующая природа чего-то вроде Python делает отладку менее болезненной. Каждый раз, когда возникают ошибки, вы сможете увидеть их в режиме реального времени. Хотя в Arduino IDE есть такие инструменты, как Serial Monitor, которые помогают выявлять ошибки, это по прежнему может быть большим недостатком. В случае сложного проекта Arduino вы можете часами искать недостающую точку с запятой!

Высокий уровень против низкого уровня

Если вы новичок в мире программирования, возможно, вам непонятно, что на самом деле означают термины «низкий уровень» и «высокий уровень». Давайте рассмотрим их.

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

Между этими двумя крайностями вы найдете воображаемые «уровни» абстракции, нижние ярусы которых населены низкоуровневыми «ассемблерными» языками, а на более высоких уровнях находятся более абстрактные языки, такие как Python. Arduino, как правило, находится внизу этой иерархии, в то время как Raspberry Pi с его поддержкой ряда языков высокого уровня находится ближе к вершине.

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

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

Графика

Наличие большего количества вычислительных ресурсов позволяет Raspberry Pi обрабатывать большие объемы данных и представлять эти данные интересными способами. Если вы хотите нарисовать гистограмму, содержимое которой постоянно развивается, то Raspberry Pi может быть лучшим средством для этого. Он даже отлично подходит для управления сложным реальным оборудованием с множеством движущихся частей. Если ваш проект включает сложные вычисления, видео и сенсорные экраны, то это, вероятно, выходит за рамки возможностей маломощного микроконтроллера, такого как Arduino.

Однако если ваши потребности в обработке данных проще, то Arduino, вероятно, лучше соответствует вашим требованиям. Он с радостью будет снова и снова считывать напряжение на нужном выводе, пока оно не достигнет определенного порога, только после этого выполняя соответствующее действие. Для таких приложений операционные системы и модные графические дисплеи - излишни. Но это не обязательно означает, что проекты на базе Arduino всегда небольшие и простые - подключив несколько регистров сдвига, светодиодных драйверов и мультиплексоров, вы можете расширить производительный потенциал скромного Arduino и заставить его выполнять гораздо больше ролей. Все, что вам нужно сделать, это правильно соединить контакты.

Связь

Обе системы поставляются с набором универсальных входов и выходов (или GPIO). Новые устройства Raspberry Pi имеют сорок контактов, а Arduino UNO - четырнадцать. Эти контакты могут быть установлены на высокий или низкий уровень или для считывания входящего напряжения. На каждом устройстве можно настроить определенные контакты для работы с конкретными последовательными протоколами, включая SPI, I2C и UART.

Вы даже сможете смоделировать напряжение от 0 до 5, дав команду контакту быстро включаться и выключаться. Этот метод известен как широтно-импульсная модуляция. Модулируя длину каждого сигнала включения, вы сможете в цифровом виде управлять видимой яркостью светодиода или скоростью двигателя.

Raspberry Pi может похвастаться встроенными модулями подключения, которые делают его подходящим для проектов Интернета вещей. Не нужно возиться с расширениями Bluetooth и WiFi, все объединено в одно устройство. Итак, если вы хотите иметь возможность включать и выключать свет с помощью электронной почты, Raspberry Pi позволит вам это сделать.

С учетом сказанного, прикрепить WiFi шилд с ESP8266 к верхней части платы Arduino не так уж и сложно. Более того, существуют варианты Arduino, которые включают беспроводной Интернет, например MKR1000, который сочетает в себе Wi-Fi 2,4 ГГц 802.11 b /g/n с маломощным MCU. Ряд производителей создали специализированные устройства Arduino для любых целей - и как только вы освоите Arduino на одном из них, вы сможете применить эти знания к другим.

Сколько мощности?

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

Raspberry Pi 3 Model B + в режиме ожидания потребляет около 1,7 Вт. Если вы используете Raspberry Pi Zero меньшего размера, то эта мощность снижается до 0,4 Вт. Сравните это с Arduino UNO, который будет запускать код с мощностью около 0,14 Вт, и вы начнете видеть, что Arduino естественно подходит для проектов с упрощенным батарейным питанием.

Какое бы устройство вы ни выбрали, вы сможете повысить его энергоэффективность несколькими способами. Есть не только несколько вариантов Arduino и Raspberry Pi на выбор, но и возможность настроить свою систему для максимальной энергоэффективности. Например, если вам больше не нужен дисплей на RPI, вы можете сэкономить электроэнергию, отключив порты HDMI. Настройте свой Raspberry Pi в соответствии с потребностями вашего проекта, и он вполне может работать значительно дольше от одной и той же батареи.

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

Поскольку на Arduino не работает операционная система, это не проблема. Он просто возобновит выполнение кода, как только он будет снова подключен. Если вы хотите, чтобы ваше устройство Arduino работало постоянно и без проводов, вам нужно только подключить батарею 5 В через землю и контакты 5 В. Вы можете сделать это напрямую или с помощью щита аккумуляторного блока.

Наконец, мы также должны учитывать, что проекты не могут существовать изолированно. Если ваш Arduino будет активировать серводвигатели или управлять множеством светодиодов, то мощность, потребляемая микроконтроллером, станет незначительной. То же самое и с Raspberry Pis, подключенным к огромным плазменным телевизорам.

Так что же лучше?

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

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

Но нет никакого смысла в том, что грузовик «лучше» мопеда, как и Raspberry Pi «лучше» Arduino. У каждого из них есть свои относительные сильные стороны, которые подходят для разных целей.

Вообще говоря, Arduino больше ориентирован на проекты, ориентированные на оборудование, а Raspberry Pi больше ориентирован на программное обеспечение. Если вы хотите управлять схемами, то практическое развлечение, предлагаемое Arduino, трудно превзойти. Если вы хотите научиться программировать, то Raspberry Pi - лучший вариант.

Возможно, вашему проекту требуются вычислительные мощности и аппаратный контроль. В таком случае ничто не мешает вам использовать как Raspberry Pi, так и Arduino. Эти двое могут хорошо взаимодействовать друг с другом. Более того, существует несколько устройств, которые ликвидируют разрыв между ними. Семейство одноплатных компьютеров UDOO включает в себя Raspberry Pi и Arduino на одном устройстве, а Beaglebone Black - эффективный конкурент Pi, который оснащен огромным количеством контактов GPIO.

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