Этот вопрос , среди прочего, спрашивает, существует ли большая кривая обучения между использованием Python на Raspberry Pi для создания прототипа конечной точки и использованием микроконтроллера.
Очевидно, что произошло значительное улучшение энергопотребления (за счет снижения пропускной способности процессора), поэтому есть веские причины для использования подхода MCU для продукта, который должен работать от батареи.
Одна из возможных причин придерживаться одноплатного компьютера, работающего под управлением Linux, заключается в том, что нет нового программного обеспечения для изучения (выше python или аналогичного), если предположить, что приложение может быть написано на языке высокого уровня (где должно быть много стандартных библиотеки).
На встроенной платформе разработки вероятным выбором является C ++ (mbed или arduino) или micropython. У меня сложилось впечатление, что они ничем не отличаются и не являются более сложными, чем написание кода для работы под Linux - хотя платформы имеют отдельные преимущества. Я пропустил что-нибудь, что имеет отношение к разработчику программного обеспечения?
В частности, я спрашиваю о конечных точках IoT - поэтому не обязательно иметь полные ресурсы системы Linux для приложений, которые меня интересуют здесь. Стоит также подчеркнуть, что из-за проблем с питанием и задержкой реализация mcu является жестким требованием для приложений такого типа.
источник
Это зависит от того, что вы пытаетесь сделать.
Самый большой пробел в том, что упомянутый вами микроконтроллер (например, Arduino) не работает под управлением многозадачной операционной системы, такой как Linux. Это означает, что если ваше приложение зависит от многозадачности или многопоточности, это может быть намного сложнее или даже невозможно запустить на Arduino.
Второй пробел - аппаратная поддержка. Например, Raspberry Pi поддерживает камеры, USB-аудио, Ethernet, WiFi из коробки. Ничто из этого не поддерживается напрямую Arduino, и хотя вы можете использовать различные экраны (например, USB Host, Ethernet или WiFi), их использование не так просто, как использование сети на Raspberry Pi.
Третий пробел - это доступные ресурсы. Большинство микроконтроллеров даже близко не подходят к ресурсам, которые предлагает Raspberry Pi. Например, даже первый Raspberry Pi предлагал процессор с частотой 700 МГц с 256 МБ оперативной памяти и мог использоваться с 32 ГБ памяти. Типичный Arduino Uno на базе ATMEGA328 работает на частоте 16 МГц, имеет 32 КБ памяти и 2 КБ ОЗУ.
Таким образом, использование Raspberry Pi определенно намного проще для разработчиков, приходящих с ПК. Основными преимуществами использования микроконтроллеров являются:
Если ни один из них не важен, использование Raspberry Pi определенно имеет больше смысла.
источник
Да, это большой переход от программирования на Python к программированию с использованием типичных языковых инструментов на основе C на микроконтроллере. Фактически, во многих случаях вам может понадобиться написать некоторые, если не все, ваши приложения на ассемблере.
Как уже указывалось в других ответах, микроконтроллеры очень ограничены в ресурсах, и поэтому вы теряете все удобства операционной системы Linux и все инструменты, которые вы можете запускать локально. Итерации с Arduino IDE очень медленны по сравнению с запуском локальных скриптов.
Хотя у меня большой профессиональный опыт работы с микроконтроллерами и микропроцессорами, я предпочитаю запускать свои личные проекты с использованием аппаратных средств RPi с некоторыми Arduinos для критически важных вещей в реальном времени. Я также баловался с Beagle Bone Black, и в некоторых отношениях это более удобно, чем использование RPi с одним или несколькими Arduinos.
источник
Да большая разница
Разница как днем, так и ночью, как в отношении аппаратного, так и программного обеспечения. Нет действительного сравнения вообще.
Когда использовать какой
Используйте Arduino, если ...
Во всех остальных случаях Pi значительно удобнее для пользователя. Пи просто другой (медленный) компьютер.
Не пойми меня неправильно. У меня есть Pi и я использую его для нескольких сервисов Linux в моей сети. Я также часто программирую Arduinos (в основном Pro Micros). Оба великолепны, они мне нравятся одинаково, но у них очень разные сценарии использования.
На ваш вопрос о сложности - это относительно. Единственное время, когда Arduino стал для меня трудным, было трудно отладить проблемы синхронизации, особенно если он сочетался с сомнительной электроникой (например, электромагнитные помехи, слишком длинные кабели и т. Д.). Если вы не сомневаетесь в выборе языка (например, C для Arduino IDE), то вы сможете взломать любые библиотеки, которые используете. Тем не менее, он всегда будет более сложным, чем Pi, где вы можете, например, использовать язык сценариев по вашему выбору для не критичных ко времени вещей - их всегда будет легче разрабатывать и отлаживать.
источник
Я считаю, что есть несколько моментов, которые еще не были указаны явно.
Среда разработки совершенно иная. На самом деле вы можете разрабатывать ПО Pi на Pi - вы даже можете использовать графический интерфейс, если хотите. Есть встроенные средства отладки, а также очень много того, что доступно для любой компьютерной системы.
Контроллеры должны быть разработаны / эмулированы на отдельном компьютере, а затем отправлены на контроллер для окончательного тестирования.
Pi может работать практически на любом языке, который вы хотите запрограммировать, микроконтроллеры обычно имеют один или два.
Pi может работать с несколькими операционными системами (включая Windows IoT и несколько специализированных систем), встроенные контроллеры, как правило, вообще не запускают «Операционную систему».
Также, что касается времени выполнения / ОС - Pi загружается за несколько секунд - если вы действительно хотите что-то сделать в эти первые несколько секунд, то пи не будет работать для вас. Кроме того, если вы не предприняли крайних мер для предотвращения какой-либо записи в хранилище, вам действительно не следует просто отключать питание, вы должны выполнить «Завершение работы» и немного подождать. Это также может ограничить некоторые виды использования.
Еще один пункт после развертывания, о котором я не упомянул. Я не уверен, каким образом я был бы абсолютно уверен, что я должным образом защитил Pi - что ни одно агентство не вставило где-нибудь маленький кусочек кода, который разрешает несанкционированный доступ при определенных обстоятельствах - без удаления его из всех сетей и отключения всех механизмов беспроводного доступа , Микроконтроллеры довольно легко защитить, так как вы пишете почти весь код, работающий на этой вещи.
Конечно, вы всегда можете разработать свой собственный образ Pi без реальной ОС и взять на себя всю плату / процессор, что в значительной степени превратит его в мощный и дорогой микроконтроллер со всеми связанными преимуществами / недостатками. Кто-то, возможно, уже сделал это, но я в последнее время ничего подобного не искал.
источник
Разница между разработкой приложения с Pi может сильно отличаться или несколько отличаться от разработки приложения с микроконтроллером из-за различий в оборудовании, а также различий в инструментальных средствах разработки программного обеспечения.
Доступен широкий спектр микроконтроллеров, от 8 до 64 бит и имеющих от нескольких килобайт оперативной памяти до нескольких гигабайт оперативной памяти. Более способные микроконтроллеры обеспечивают больше опыта, подобного Pi. Менее способных микроконтроллеров нет.
И даже с Pi существует большая разница между разработкой для операционной системы Windows 10 IoT и разработкой для Raspian, Mate или других ОС на базе Linux. Для Windows 10 IoT требуется ПК для разработки, использующий набор инструментов Visual Studio с удаленным отладчиком, предназначенный для среды универсальной программы Windows (UWP). Разработка для Raspian или Mate может быть выполнена на Pi с помощью инструментов, доступных на Pi.
Протокол ограниченных приложений используется для небольших ограниченных устройств, используемых в среде Интернета вещей. Чтобы получить представление о разнообразии аппаратного и программного обеспечения микроконтроллера, на этой странице о реализации протокола CoAP дается представление о среде, на которую он ориентирован. В нем упоминается операционная система Contiki, о которой я смутно слышал, а также более известные ОС, такие как iOS, OSX и Android. Упоминаются следующие языки программирования: Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust и Python.
Цепочка инструментов, используемая для разработки с использованием микроконтроллера, варьируется в зависимости от производителя, а также от того, какие ресурсы доступны от сообществ разработчиков и инициатив с открытым исходным кодом. В некоторых случаях вы получаете кросс-ассемблер, в других вы получаете кросс-компилятор C, а в других случаях вы получаете хорошую цепочку инструментов со всеми наворотами и эмуляторами и тому подобное, похожее на набор инструментов Visual Studio для Windows 10 IoT.
Фактическая среда разработки для микроконтроллера может включать в себя использование программатора EEPROM и программных средств для создания нового образа и передачи его на устройство, или устройство может иметь необходимые возможности подключения, позволяющие загружать новый образ через последовательное соединение или более сетевое соединение.
У меня сложилось впечатление, что большинство микроконтроллеров имеют кросс-компилятор C, хотя компилятор может поддерживать только более старые стандарты, такие как K & R или, возможно, C98. C кросс - компиляторы часто имеют нестандартные ключевые слова для микропроцессорных специфических особенностей, например,
far
иnear
ключевых слов для указателей со старыми 8080 и 8086 процессоров с их сегментированной памятью.Есть также специальные языки, предназначенные для микроконтроллеров, такие как язык программирования FORTH . Эти языки часто имеют дизайн во время выполнения, который ориентирован на «голое железо», так что нет другой операционной системы, кроме времени выполнения языка.
Операционная система может варьироваться от практически не существующей Linux до специализированной ОС, такой как freeRTOS или Windows Embedded, или полноценной Linux или Microsoft Windows. Смотрите этот проект SourceForge MINIBIAN для Raspberry Pi . Смотрите также эту электронную книгу Baking Pi: Разработка операционных систем, в которой описывается разработка элементарной ОС для Raspberry Pi на ассемблере.
В этой статье из журнала Visual Studio, « Программирование Интернета вещей с помощью Visual Studio» , представлен обзор множества доступных устройств, а также обзор использования Visual Studio IDE для разработки для Linux и Windows.
...
Конкретный пример применения микроконтроллера
Это изображение платы микроконтроллера от автоматической кофеварки. Похоже, что это стандартный компонент для автоматических кофеварок китайского производства. Веб-сайт производителя напечатан на печатной плате.
Изображение состоит из двух видов. Вид слева - задняя часть платы, содержащей микроконтроллер и поддерживающие схемы. Вид справа - лицевая сторона платы с ЖК-экраном и набором кнопок, которые используются для установки текущего времени и выполнения таких действий, как программирование времени запуска и т. Д.
Вид справа помещается в держатель, который затем вставляется в отверстие в передней части кофеварки. Переключатели на нижней печатной плате приводятся в действие с помощью кулисных рычагов. ЖК-дисплей, который, кажется, имеет специальное назначение, используется для отображения текущего времени и состояния, а также для отображения пользовательского интерфейса при изменении настроек кофеварки. Красный светодиод используется, чтобы указать, когда кофеварка фактически готовит кофе, и чтобы указать, когда это сделано, выключив подсветку.
Микроконтроллер представляет собой ELAN Microelectronics Corp EM78P447NAM (таблица данных), который представляет собой 8-разрядный микроконтроллер. Некоторые из основных характеристик показывают, что это за маленькое и минимальное устройство, однако оно прекрасно работает по назначению. Целью является разработка программного обеспечения, которое затем загружается в ПЗУ с однократной записью как часть производства.
источник