Какой микроконтроллер выбрать начинающему? Arduino или более современный?

Конструкторы для обучения детей робототехнике

Share Button

Какой микроконтроллер лучше? Опубликованная вчера в блоге на Habr статья «Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих» вызвала бурные обсуждения, т.к. она призывает «похоронить» популярную Arduino даже в любительских проектах.

Какой микроконтроллер выбрать начинающему? Arduino или более современный?

Олег Артамонов и ранее приводил критику использования Arduino в старших классах школы, но на этот раз подробнее описал недостатки платформы, а также продемонстрировал, что работать с ARM Mbed просто — вопреки популярному мнению нет необходимости «долгими бессонными ночами читать бесконечные даташиты на регистры процессора и учить ассемблер».

«Традиционным преимуществом платформы Arduino считалоcь снижение порога входа в микроконтроллерную разработку до уровня базовых знаний C/C++ и электроники в масштабе «подключить светодиод в нужной полярности, — пишет Олег Артамонов, — Спросите примерно у любого активного сторонника Arduino — и вам быстро объяснят, что можно, конечно, писать под STM32 или nRF52, но выгоды в том реальной никакой, зато вас ждут бессонные ночи над сотнями страниц даташитов и бесконечные простыни функций с длинными непонятными названиями. Заслуги Arduino в снижении порога вхождения действительно трудно переоценить — эта платформа появилась на свет в середине нулевых годов, а после 2010 завоевала серьезную популярность среди любителей. Особых альтернатив на тот момент ей не было — процессоры на ядрах Cortex-M только появились, по сравнению с AVR они были довольно сложны даже для профессиональных разработчиков, а отладочные платы у большинства вендоров стоили от сотни долларов и выше (и в общем в индустрии ценник за отладку на 5-долларовом контроллере в $500 никого сильно не удивлял)».

Развитие платформы Arduino за последние 10 лет автор сравнил с изменениями в некоторых моделях. АвтоВАЗа. AVR, как и вообще 8-битные контроллеры, уже не выдерживают конкуренции с 32-битными Cortex-M по соотношению цена/характеристики. А сложность разработки существенно снизилась с появлением микроконтроллерных операционных систем. Благодаря ОС программирование микроконтроллеров становится ближе к написанию софта под большие ПК, и создание многозадачности средствами цикла loop() при наличии современных средств разработки, становится абсурдно. Микроконтроллерные операционные системы дают:

  • HAL — абстрагирование от железа.
  • Многозадачность.
  • Таймеры.
  • IPC — межпроцессное сообщение.
  • Наборы стандартных библиотек и функций — помимо API работы с самим микроконтроллером, ОС может предоставлять вам доступ к стандартным библиотекам, в том числе сторонней разработки.
  • Наборы драйверов — многие ОС предоставляют также «из коробки» наборы драйверов для внешних по отношению к контроллеру датчиков и систем.

Статью прокомментировал разработчик микропроцессоров MIPS Юрий Панчул:

Главная проблема ардуины и ее software (UPD: если вы вздумаете использовать ее профессионально, как люди, с которыми ругается Олег) — это отсутствие многозадачности, из-за чего системы сложнее чем мигание лампочкой либо тормозят, либо процессор все время ожидает и обрабатывает ввод-вывод вместо решения полезных задач, либо имеет место куча спагетти-кода в комбинации с примитивными ардуинскими обработчиками прерываний. Именно это имхо стоило продемонстрировать Олегу с наглядными примерами кода. Ругаться с ардуинщиками по поводу порога входа в их нежно любимую платформу можно, но там речь идет о вкусах и небольшой неэффективности из-за ардуиногого api, а вот отсутствие в ардуине tasks/semaphores и других RTOS-ных примитивов, которые позволяют писать эффективные надежно работающие программы с компактным легко читаемым кодом — это принципиально, и на этом ардуинщиков вполне реально урыть (если они готовы идти дальше мигания лампочкой). Например привести вывод на графический экран двумя процессами с семафором, как мы в MIPS и Microchip сделали три года назад в курсе Connected MCU по программированию PIC32MZ и FreeRTOS

Позже Юрий Панчул добавил в свой пост информацию о существовании RTOS для Arduino: » … пусть живет. Все написанное отменяется.». Прогресс не стоит на месте и мир микроконтроллерных плат для любителей больше не ограничивается Arduino и ESP. А что думаете вы?

Если вы заинтересованы подробнее познакомится с программированием современных микроконтроллеров, рекомендуем ознакомиться с курсом лекций (видео).

Share Button

4 комментария к статье “Какой микроконтроллер выбрать начинающему? Arduino или более современный?”

  1. Учиник гуру

    19.08.2018

    Этот вечный спор, какой же дистрибутив линукс/микроконтроллер/IDE/etc выбрать начинающему? Да тот же, который лучше всего знает ваш знакомый гуру, к которому вы потом и пойдете за советами и помощью. Ведь у начинающего всегда будут вопросы. Вы не можете знать того чего не знаете, вы ещё не встали на те грабли на которые уже наступил ваш гуру. И беда гуру в том, что он бы и рад вам объяснить, что не наступай на те же грабли что я — ученик всё равно наступит (ну может вы умный ученик и послушаетесь гуру, я — нет).
    Итого чтобы выбрать нужный вам инструмент вам придется ознакомиться со всеми доступными инструментами, узнать на своем опыте что лучше подойдет для конкретной задачи.

    Ответить на этот комментарий
  2. Роберт

    19.08.2018

    Я , как начинающий разработчик,начал с Cortex-m4 (stm32fxxx), однако новичку сложно сразу объять и понять не только функциональные возможности процессора но и его широкого спектра периферии. Сейчас я работаю над не большой системой оповещения для нашей лаборатории на базе atmega328p и sim800l GSM и могу сказать что с этим сравнительно простым МК работать гораздо легче. Поэтому я думаю что новичок может начать с лёгкого , понять тонкости работы МК и периферии , а потом набравшись опыта перейти к более могучим МК.
    P.S. есть проекты для которых 8 битники вполне оправдывают себя, больше просто не нужно.

    Ответить на этот комментарий
  3. Вадим

    21.08.2018

    Дурацкие модули. Atmega8 топ.

    Ответить на этот комментарий
  4. Сергей(Инженер)

    24.01.2019

    Начнем с того, что Ардуино это вообще не микрокотроллер.

    Ардуино это платформа (плата+ArduinoIDE среда программирования)

    А к микроконтроллерам относятся микросхемы которые могут совершать вычисления и управлять чем-то. К таким относятся PIC, AVR, STM.

    Какой же выбрать? Тут решает каждый сам.
    Arduino как среду вообще не советую (если вы не ребенок) так как это детский конструктор.

    Но те кто не может сам определиться, то я порекомендую 8-разрядные микроконтроллеры AVR архитектуры, так как они очень популярны в России, создано очень много сайтов, написано много книг, куча форумов с обсуждениями, так вы сможете найти любые ответы на свои вопросы. Также я порекомендую среду Atmel Studio там можно писать как на Ассемблере так и на C/C++.
    Если ваш компьютер не справляется с этой средой, то можно скачать более старую но очень стабильную AVR Studio 4.19.

    Какой же язык выбрать для начинающего? Однозначно Ассемблер!
    Только благодаря ассемблеру вы по настоящему поймете как работает микроконтроллер, узнаете его архитектуру.
    Потом можете переходить на высокоуровневые языки такие как СИ. Не ленитесь! Изготовте свою отладочную плату (пусть простую, но она будет ваша! и вы будите повышать свои скилл работая с мк) А также изготовте свой программатор это не так уж и сложно. Вам в любом случае придется изготавливать платы под свои проекты. Так, что набирайтесь опыта и желаю вам удачи !

    Ответить на этот комментарий

Оставить комментарий

© 2014-2019 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика кофиденциальности. Соглашение об обработке персональных данных.
Наверх