Какой микроконтроллер выбрать начинающему? Arduino или более современный?
Какой микроконтроллер лучше? Опубликованная вчера в блоге на Habr статья «Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих» вызвала бурные обсуждения, т.к. она призывает «похоронить» популярную 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. А что думаете вы?
Если вы заинтересованы подробнее познакомится с программированием современных микроконтроллеров, рекомендуем ознакомиться с курсом лекций (видео).
Выбираем микроконтроллер вместе
Прочитав эту статью я заметил большой интерес к выбору микроконтроллера у читателей и решил взглянуть на эту проблему с другой стороны.
Могу предположить, что всех интересует выбор их первого, либо первого 32-х битного МК.
Тем, кто знает, что на фотографии нет ни одного микроконтроллера — прошу в комментарии, дополнить мой рассказ и тем самым поделиться своим опытом с начинающими. Остальным, непременно под кат!
На мой взгляд чем проще будет каждый этап обучения — тем проще будет дойти до самостоятельного плаванья. Поэтому я считаю, что на начальном этапе следует брать все готовое. Ничего не придумывать самому. Представьте:
вы выбрали контроллер,
проглядели даташит,
развели под него плату,
или нашли ее на просторах интернета,
купили все компоненты(или аналоги если советуемых не было),
запаяли все,
написали первый «hello world»,
собрали программатор, прошили контроллер
И… и ничего не происходит! Что-то не работает, и вы не можете понять что: то ли в пайке ошибка, то ли что-то с программой, то ли в интернете кривая схема, то-ли проблемы с софтом.
Новичка такая ситуация ставит в тупик, знаю это по себе.
Чтобы такого не случилось проще всего сделать первые шаги под чьим-то руководством.
Преимущество простого старта отлично показывает платформа Arduino. Посудите сами: возможности контроллеров совсем не велики, цены на платы огромны, зато огромная поддержка сообщества и все уже готова, любые платы расширения, кучи примеров.
За счет этого и живет платформа!
Давайте посмотрим какой у нас вообще есть выбор! На рынке огромное количество производителей и архитектур. Но выбор на самом деле совсем не велик:
я бы сразу отсек все 8-ми и 16-ти битные архитектуры, кроме PIC и AVR, да иногда производители предлагают отладочные платы и контроллеры по очень заманчивой цене
но я не советую их брать потому, что это малораспространенные архитектуры и на них меньше примеров + пересаживаться на другие контроллеры будет сложнее.
По той же самой причине отсек все 32-х разрядные архитектуры кроме ARM + с ними еще начинаются проблемы с примерами, и они постепенно вымирают.
Арм микроконтроллеры делятся на ARM7, ARM9, Cortex M0, 3, 4.
Седьмые и девятые постепенно замещаюся кортексами и вскоре их тоже не будет.
Итого имеем:
AVR
PIC
ARM Cortex
Про пики сказать много не могу, но по-моему AVR их вытесняет из-за распространенности Arduino.
Но я все-же советовал Cortex, их возможности намного шире, к тому же есть выбор между производителями, а это на мой взгляд большой плюс. Да и существует масса упрощающих жизнь библиотек и даже генераторов кода, которые новичкам позволят не сильно вчитываясь в юзер мануал написать первую программу.
Итак, какие производители представлены у нас?
NXP, ST, Freescale, TI, Luminary Micro, Atmel и много других но поменьше распространенных.
Как выбрать из такого большого количества производителей?
надо выбирать не контроллер а отладочную плату, библиотеки, среду разработки и сообщество.
Сам щупал только NXP, ST и Freescale.
Первые 2 производителя наводнили Москву и другие города России дешевыми/бесплатными отладками — это очень хорошо в том смысле, что всегда есть у кого спросить, есть к кому обратиться.
Также не нужны никакие программаторы — все есть на борту!
Для NXP есть альтернатива от Olimex www.chipdip.ru/product/lpc-p1343.aspx
Есть и минусы: когда захочется расширить их возможности придется искать новую.
Больше всего мне понравилась отлатдка от Freescale, с которой столкнулся на работе.
На мой взгляд это лучший вариант для новичка, но у нее есть один огромный минус:
пока довольно сложно найти в продаже и регионам придется заказывать, но оно того стоит:
Первое и самое важно преимущество: стандартные платы расширения (сначала покупаете стандартный набор, потом докупаете вайфай, сенсоры и тп)
Еще большущий плюс это среда разработки: благодаря Processor Expert можно генерировать код, и море примеров с объяснениями.
Итак подведем итоги:
1 купить Arduino Uno c AVR за 1000р на плате практически ничего нет, зато в продаже множество плат расширения и огромное сообщество
2 купить STM32L-DISCOVERY c M3 за 16.22дол c сенсорными кнопками, USB и маленьким LСD-дисплеем и дебагером на борту
3 купить за 1000р LPCEXPRESSO c M3 с просто выведеными контактами и дебагером на борту
4 купить KWIKSTICK с M4 за 30дол+ доставку с большим сегментным LCD, USB, входом под наушники, динамиком, сенсорными кнопками, литиевой батарейкой, микрофоном, ИК портом, слотом под SD-карту + возможность расширения функционала без пайки и больших вложений. Большой набор библиотек, примеров и хорошая IDE.
В итоге я считаю, что надо покупать STM32L-DISCOVERY и начинать с нее,
либо если не лень заморочиться с заказом платы и чуть-чуть побольше заплатить брать KWIKSTICK — с ней старт будет полегче, да и хватит ее на дольше, но для общения с коллегами нужен английский.
Прошу всех, знакомых с МК написать свой выбор отладочных средств для новичка, я с удовольствием дополню статьюю
UPD: stm32l-discovery по таким ценам можно купить в Компэле
Kwikstick на сайте freescale
Arduino или Raspberry Pi: как выбрать контроллер для проекта
Итак, у вас есть замысел проекта, но вы сомневаетесь, какую плату выбрать в качестве мозга устройства? Попробуем помочь вам определиться.
Если вы просто хотите освоить схемотехнику, программирование, Linux и конкретной цели кроме обучения пока нет — возможно, лучшим выбором станет один из готовых обучающих наборов.
Но если вы уже освоились, и хотите сделать конкретный проект, этот гид поможет определиться с платформой для разработки и сделать взвешенный выбор.
Arduino или Raspberry Pi? Микроконтроллер или микрокомпьютер?
Все платы для разработки можно разбить на две большие категории:
Платы на микроконтроллере (MCU, MicroController Unit) |
Одноплатные компьютеры (SoC, System on a Chip) |
Типичный представитель — Arduino ![]() |
Типичный представитель — Raspberry Pi ![]() |
Микроконтроллеры могут одновременно исполнять всего одну задачу и отлично с этим справляются. А одноплатные компьютеры исполняют программы в рамках операционной системы (чаще всего Linux), обладают большей производительностью и широкими мультимедийными возможностями.
Существуют также гибридные платформы, где на одной плате расположен и микроконтроллер, и процессор. Идея в том, чтобы оставить мощному процессору сложные задачи: выход в сеть, обработку медиа, а на микроконтроллер возложить функцию точного управления приводами, реле, сенсорами и другой периферией. Вы можете создать гибрид и сами, если возьмёте по одной плате из каждого семейства. У всех них найдутся общие интерфейсы, через которые можно организовать их взаимодействие.
И в одном, и в другом лагере можно найти специализированные платы, которые сильно выделяются среди прочих какой-нибудь особенностью, но сравнить возможности среднестатистических микроконтроллеров и компьютеров поможет таблица.
Итак, в зависимости от своей задачи вы определились, нужен ли вам микроконтроллер или компьютер. Как решить какая именно плата подойдёт лучше всего?
Так как нет большого смысла сравнивать лицом к лицу микроконтроллеры и микрокомпьютеры, далее мы отдельно приведём преимущества и недостатки конкретных плат в рамках своего семейства.
Сравнение микроконтроллеров
Если рассматривать микроконтроллерные платы в отрыве от задач вашего проекта, сложно в двух словах объективно описать преимущества и недостатки разных платформ. То, что в общем является недостатком, в вашем устройстве может не играть роли, и наоборот.
Мы попытались сравнить платы, отталкиваясь от возможностей флагманской DIY-платформы Arduino Uno, так как платы именно этого семейства дали невероятный пинок развитию хобби-электроники во всём мире. Разные компании выпускают модули, сенсоры, платформы, дополнения с шильдами «Arduino compatible», «Designed for Arduino» и т.д. За этими словами стоит электронная и программная совместимость в первую очередь с Arduino Uno, а уж затем со всем остальным.
Как правило, с помощью ухищрений или дополнительных компонентов можно подключить что угодно и к чему угодно. Но ведь вам хочется сосредоточиться на своём проекте, а не на борьбе с электроникой? Поэтому волей-неволей хочется сравнить любую плату на микроконтроллере именно с Arduino Uno. Так и сделаем.
Arduino Uno
Процессор на 16 МГц, 32 КБ постоянной и 2 КБ оперативной памяти, 20 портов ввода-вывода, 6 аналоговых входов, 6 каналов ШИМ, 2 аппаратных прерывания, может, и не впечатляют, но без балласта в виде операционной системы и интерпретаторов они позволяют решать практически любые задачи по точному дирижированию множеством сенсоров и исполнительных устройств.
Плюсы Arduino Uno
- Тонны документации, уроков и готовых библиотек, огромное сообщество, работа из простой в освоении среды Arduino IDE с языком Arduino C++. Всё это просто не даст вам возможности сказать «не осилил».
- Родное напряжение в 5 вольт, которое является стандартом де-факто, и колодки для установки плат расширения, аналоговые входы, всевозможные аппаратные интерфейсы позволяют подключить практически любую периферию, сенсоры и исполнительные устройства.
Arduino Leonardo
Та же Arduino Uno, но с другим, слегка улучшенным микроконтроллером.
Плюсы Arduino Leonardo
- Большее количество аналоговых входов (12 против 6) для сенсоров, больше каналов ШИМ (7 против 6), больше пинов с аппаратным прерыванием (5 против 2), раздельные независимые Serial-интерфейсы для USB и UART.
- Arduino Leonardo может притворяться клавиатурой или мышью (HID-устройством) для компьютера. Это позволяет легко сделать своё собственное устройство ввода.
Минусы Arduino Leonardo
- Из-за небольших отличий распиновки от Arduino Uno возможна несовместимость с некоторыми платами расширения. Такие случаи, однако, редки, и в нашем магазине мы явно их прописываем.
Iskra Neo
Та же Arduino Leonardo, но произведённая нами, в России.
Плюсы Iskra Neo
- Заметно дешевле оригинала.
Arduino Mini
Та же Arduino Uno, но в другом форм-факторе.
Плюсы Arduino Mini
- Компактная. Всего 30×18 мм.
Минусы Arduino Mini
- Из-за форм-фактора нельзя без ухищрений устанавливать платы расширения Arduino. Предполагается соединение с дополнительными модулями проводами и/или через макетную плату.
- На плате нет USB-порта, поэтому прошивать нужно через отдельный преобразователь USB-Serial
Iskra Mini
Та же Arduino Mini, но произведённая нами, в России.
Плюсы Iskra Mini
- Заметно дешевле оригинала.
- Есть в варианте с распаянными колодками и с незапаянными отверстиями.
Arduino Micro
Та же Arduino Leonardo, но в другом форм-факторе.
Плюсы Arduino Micro
- Компактная. Всего 48×18 мм.
Минусы Arduino Micro
- Из-за форм-фактора нельзя без ухищрений устанавливать платы расширения Arduino. Предполагается соединение с дополнительными модулями проводами и/или через макетную плату.
Arduino Mega 2560
Как Arduino Uno, но на базе более мощного микроконтроллера той же архитектуры. Отличный выбор «на вырост» или на случай, если Arduino Uno перестала справляться.
Плюсы Arduino Mega 2560
- В разы больше памяти: 256 КБ постоянной и 8 КБ оперативной. В разы больше портов: 60 из них 16 аналоговых и 15 с ШИМ.
Минусы Arduino Mega 2560
- Немного длиннее базовой Arduino Uno: 101×53 мм против 69×53 мм.
Arduino Due
Одна из самых производительных плат Arduino на микроконтроллере Cortex-M3, аналогичная по форм-фактору Arduino Mega.
Плюсы Arduino Due
- Процессор на 84 МГц и 512 КБ памяти. 66 пинов ввода-вывода, из которых 12 могут быть аналоговыми входами, 12 поддерживают ШИМ и все 66 могут быть настроены, как аппаратные прерывания.
- Встроенный контроллер шины CAN позволяет создавать сеть из Due или взаимодействовать с автомобильной электроникой. Два канала ЦАП позволяют синтезировать стереозвук с разрешением в 4,88 Гц.
Минусы Arduino Due
- Родным напряжением для платы является 3,3 В, а не традиционные 5 В. Необходимо следить, чтобы выбираемая периферия поддерживала работу с этим уровнем или ставить преобразователи уровней напряжения.
Iskra JS
Плата на ядре Espruino: её программируют на JavaScript.
Плюсы Iskra JS
- JavaScript — язык высокого уровня. Программы писать проще, они компактнее и выразительнее. Особенно, если речь идёт о многочисленных строковых операциях, массивах данных, веб-интерфейсе.
- Мощный микроконтроллер Cortex-M4 на 168 МГц, 1 МБ флеш, 192 КБ оперативной памяти, десятки портов с ШИМ и аналоговых входов, 2 аналоговых выхода, по нескольку I²C, SPI, UART — всё это даёт подключить и одновременно работать с самыми разнообразными сенсорами и модулями.
Минусы Iskra JS
- Несмотря на то, что родной уровень для платы — 3,3 вольта, пины толерантны к 5 вольтам: подключение пятивольтовой периферии тривиально.
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Strela
Робототехническая платформа «всё в одном» содержит в себе большинство тех вещей, которые нужны при создании любого лёгкого мобильного робота. Strela, как и любая другая Arduino, программируется из Arduino IDE, а в основе содержит тот же микроконтроллер, что и Arduino Leonardo.
Плюсы Strela
- Встроенный драйвер для двух двигателей, 4 разъёма для сервоприводов, 4 кнопки и 4 светодиода свободного назначения, зуммер, слоты для ЖК-экрана и модуля беспроводной связи.
- Мощный регулятор питания позволяет без ухищрений использовать множество различных аккумуляторов.
- 11 входов-выходов выведены в виде трёхконтактных разъёмов для лёгкого подключения дополнительных датчиков и модулей. ЖК-экран, кнопки и светодиоды подключены через расширитель портов, поэтому они не занимают входы-выходы общего назначения.
Минусы Strela
- На плате не предусмотрены колодки для установки плат расширения Arduino.
- Из-за изменённой нумерации контактов (в сравнении с базовой Arduino Leonardo) необходимо использовать немного другие функции для работы с пинами платы. Они предоставлены в одноимённой библиотеке.
Arduino Yún
Уникальный гибрид Arduino Leonardo и микрокомпьютера на OpenWRT Linux. Отличный выбор для «интернета вещей».
Плюсы Arduino Yún
- Плата оснащена Ethernet и Wi-Fi, через которые можно общаться с устройством и даже перепрошивать платформу удалённо.
- Мощь Linux позволяет работать с мультимедиа, а его сетевые возможности — легко интегрироваться с социальными сетями и другими веб-сервисами.
Минусы Arduino Yún
- OpenWRT — это порезанный Linux. На микрокомпьютере можно установить не любой Linux-софт. А в качестве скриптовых языков программирования из коробки можно использовать только Bash и Python.
STM32 Nucleo F401RE
Плата с мощным микроконтроллером Cortex-M4. Платформа программируется не через Arduino IDE, а через онлайн-среду mbed.org. Субъективно, она мощнее и стройнее Arduino IDE, хотя и не так распространена. Для пытливого ума — отличный выбор.
Плюсы STM32 Nucleo F401RE
- Процессор на 84 МГц, 512 КБ постоянной и 96 КБ оперативной памяти. 50 портов ввода-вывода, из которых 16 аналоговых и 29 с ШИМ. Родной уровень напряжения — 3,3 В, но все пины толерантны к 5 В, поэтому проблем электронной совместимости с Arduino-периферией возникнуть не должно.
- Колодки для плат расширения по конфигурации совпадают с Arduino Uno, поэтому на Nucleo можно поставить множество плат расширения от Arduino.
- На плате не выведен отдельный SPI-разъём. Платы расширения Arduino, которые используют SPI через ICSP-разъём, без ухищрений не будут работать.
Минусы STM32 Nucleo F401RE
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Teensy 3.2
Компактная плата с мощным микроконтроллером Cortex-M4. Программируется из привычной Arduino IDE.
Плюсы Teensy 3.2
- Меньше Arduino Micro (35×17 мм), но почти столь же мощная, как Nucleo: процессор 72 МГц, 256 КБ постоянной и 64 КБ оперативной памяти, 34 порта ввода-вывода, из которых 21 могут быть аналоговыми, а 12 поддерживают ШИМ.
- Teensy 3.2 очень энергоэффективна. У неё нет регулятора напряжения, но входным может являться любое от 3,3 до 5,5 В. Это же напряжение и будет логическим уровнем. В режиме сна плата потребляет всего 0,25 мА, что даёт возможность работать от аккумулятора несколько месяцев.
- Встроенный контроллер шины CAN позволяет создавать сеть из Due или взаимодействовать с автомобильной электроникой. Два канала ЦАП позволяют синтезировать стереозвук с разрешением в 4,88 Гц.
Минусы Teensy 3.2
- Плата поставляется с нераспаянными контактами. Вам предстоит самостоятельно впаять штырьковые соединители или проводки.
- Из-за большой разницы в архитектуре с классическими Arduino не все библиотеки для сторонней периферии могут работать из коробки.
- Рабочее напряжение равно входному, поэтому плывёт по мере разряда батарейки. Это может оказаться важным при выборе периферии, если она рассчитана на какой-то конкретный вольтаж.
Netduino 2
Плата повторяет форм-фактор Arduino Uno, но имеет мощную начинку, достаточную для исполнения программ, написанных на платформе .NET. Netduino программируется на C# или любом другом .NET-языке в привычной любому .NET-разработчику среде Visual Studio. В качестве стандартной библиотеки предоставляется .NET Micro Framework.
Плюсы Netduino 2
- В Visual Studio работает автодополнение, подсказки, контекстная помощь в MSDN и полноценный отладчик. Вам доступны breakpoint’ы, пошаговое исполнение кода, наблюдение за переменными. Отладка происходит без ухищрений, просто с подключённым USB-кабелем. Благодаря всему этому скорость разработки под Netduino в разы превосходит скорость разработки под другие платформы.
Минусы Netduino 2
- На плате не выведен отдельный SPI-разъём. Платы расширения Arduino, которые используют SPI через ICSP-разъём, без ухищрений не будут работать.
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Netduino Plus 2
Плюсы Netduino Plus 2
- Как Netduino, только мощнее и с Ethernet на борту. Отличный выбор для реализации проектов интернета вещей.
Минусы Netduino Plus 2
- Те же, что и у Netduino 2.
Сравнение одноплатных компьютеров
Законодателем моды среди одноплатных компьютеров является Raspberry Pi. Эта сверхпопулярная платформа в своё время перевернула представление о возможностях, габаритах и стоимости полноценного компьютера для DIY-электронщиков.
Опять же, для каждого проекта может лучше подойти тот или иной одноплатный компьютер, но в силу популярности Raspberry Pi, будем сравнивать другие платформы именно с ней.
Raspberry Pi 3 Model B
Один из самых популярных одноплатников. Четыре ядра по 1200 МГц, 1 ГБ оперативной памяти и полноценный Linux, основанный на Debian, помогут решить множество задач, требовательных к вычислительным ресурсам. Среди них можно выделить компьютерное зрение, обработку звука в реальном времени, создание веб-сервисов.
Плюсы Raspberry Pi 3 Model B
- Тонны документации, уроков и готовых библиотек, огромное сообщество. Всё это просто не даст вам возможности сказать «не осилил».
- Привычные порты HDMI, 3,5 мм аудио, 4 USB помогут с лёгкостью подключить монитор, колонки, клавиатуру, мышь и другие USB-устройства. Модули BLE и Wi-Fi на борту помогут соединить компьютер с другими устройствами без проводов.
Минусы Raspberry Pi 3 Model B
- На плате нет АЦП, поэтому подключение аналоговых сенсоров возможно только с помощью внешних, дополнительных компонентов.
- Предоставляется лишь 1 аппаратный ШИМ-канал, что усложняет работу с периферией, которая управляется ШИМ’ом.
BeagleBone Black
Микрокомпьютер, схожий с Raspberry Pi, который даёт больше благ, привычных для микроконтроллерных плат. Отличный выбор для проектов интернета вещей, когда необходимо управляться с множеством сенсоров и исполнительных устройств.
Плюсы BeagleBone Black
- Мощная среда для разработки Cloud9 IDE. Вы просто заходите на BeagleBone через браузер и программируете на любимом языке, будь то Python, JavaScript (Node.js), Bash или любой другой язык Linux. Результат можно проверить мгновенно, а если что-то не заработало, использовать встроенный в среду полноценный отладчик.
- На борту уже установлена флеш-память eMMC на 4 ГБ с операционной системой Linux. Память может быть увеличена внешней microSD-картой.
- Широкие возможности по подключению периферии. 8 ШИМ-выходов и 7 аналоговых входов. Возможны аппаратные прерывания.
Минусы BeagleBone Black
- Диковинный разъём microHDMI для подключения монитора. Для передачи звука используется он же.
- Вычислительная мощность скромнее, чем у Raspberry Pi: 1 ядро на 400 МГц и 512 МБ оперативной памяти.
Полезные ссылки
- Контроллеры и одноплатные компьютеры в каталоге Амперки
Какой микроконтроллер выбрать
Если ты хочешь выбрать микроконтроллер, тогда эта статья для тебя. Сегодня мы попробуем разобраться в современном рынке микроконтроллеров. Замечу, что говорить мы будем только о бюджетных и широко специализированных модельных линейках, то есть о тех, которые используют электронщики.
Выбор микроконтроллера
PIC
Открывает наш парад компания Microchip Technology с серией PIC. Эти МК отличаются между собой разрядностью (8/16/32), набором периферии и корпусом чипа. Восьмибитные варианты же делятся на четыре семейства: baseline, mid-range, enhanced mid-range и PIC18. Более подробная информация приведена в таблице.
Также есть 16-битные «пики» — PIC24F и DsPIC30/33F. Ну и 32-битные — PIC32MX. Эти непонятные сочетания букв и цифр — часть идентификатора чипа. То же, что и марки у машин. Например, широко распространенный камень PIC16F628A расшифровывается так: семейство PIC16F6 (Mid-range), а остальная часть имени — указатель на конкретный камень. У рассмотренных далее МК в имени может содержаться еще больше информации.
Цена и содержимое
Эти микроконтроллеры имеют среднюю стоимость. Например, камень PIC6F628 в Chipdip стоит около 150 рублей, а PIC18F2550 — 620 рублей.
Более дешевые экземпляры имеют в своем составе минимум периферии. У упомянутого ранее PIC6F628 следующие характеристики: встроенный тактовый генератор для работы с частотой 4 или 8 МГц; 18 пинов, из них 16 — ввод/вывод, а 2 — питание; для работы на более высоких частотах можно подключить кварцевый резонатор; Flash-память объемом 2048 слов; 4 аналоговых входа; два 8-битных таймера и один 16-битный; 224 байта ОЗУ (самому смешно); 128 байт EEPROM (это программно перезаписываемая энергонезависимая память, вроде жесткого диска); интерфейс UART.
Программирование и использование PIC
Программируют для микроконтроллеров, как правило, на ассемблере и на Си. Есть множество сред разработки: MPASM и MPLAB, MicroC, JALedit (язык JAL, сам про него впервые слышу). Скачать MPLAB
Как правило, на таких МК собирают простенькие устройства вроде мигалки или таймера. Эти контроллеры долго имели монополию на постсоветском пространстве, и в результате в интернете есть огромное множество русскоязычных сервисов и статей, посвященных этим моделям МК. При сборке устройства часто можно даже не писать прошивку, ведь она легко находится в интернете, даже в нескольких вариантах.
Вторым плюсом можно указать встроенные независимые (от тактового генератора) счетчики. Благодаря этому факту семейство зарекомендовало себя в качестве «мозгов» для частотомеров. Пара таких контроллеров лежит у меня в мастерской на черный день. Из минусов можно выделить только высокую стоимость оригинальных программаторов, которые зовутся PICkit.
В интернете есть множество статей по сборке достойных аналогов таких программаторов. Но вся соль в том, что для сборки программатора тебе нужно что? Правильно, программатор. На этот случай был разработан программатор Громова. Для его сборки почти ничего не нужно, а работает он от COM-порта компьютера. На момент его разработки популярность этой серии МК была высока, да и COM-порты были у всех ПК. Сейчас все это уже редкость, так что придется преодолеть порог вхождения либо раскошелиться.
AVR
Микроконтроллеры AVR производит компания Atmel. Если не знал, это те самые контроллеры, из которых собирают Arduino. Некогда Atmel была независимой компанией, но позже ее купила упомянутая ранее Microchip, которая продолжает выпускать эти МК. Они делятся на три семейства: tinyAVR (ATtinyxxx), megaAVR (ATmegaxxx), XMEGA AVR (ATxmegaxxx).
TinyAVR имеет следующие характеристики:
- Flash-память до 16 Кбайт;
- RAM до 512 байт;
- ROM до 512 байт;
- число пинов (ножек) ввода-вывода 4–18;
- небольшой набор периферии.
- FLASH до 256 Кбайт;
- RAM до 16 Кбайт;
- ROM до 4 Кбайт;
- число пинов ввода-вывода 23–86;
- расширенная система команд (ассемблер) и периферии.
- FLASH до 384 Кбайт;
- RAM до 32 Кбайт;
- ROM до 4 Кбайт;
- четырехканальный контроллер DMA (для быстрой работы с памятью и вводом/выводом);
- «инновационная» система обработки событий.
Как и в случае PIC, у моделей AVR в названии содержится ценная информация. Например: ATMega328PU — семейство megaAVR, 32 Кбайта Flash, 8-битный, P — говорит о модификации (примерно как у пистолета Макарова модернизированного — ПММ).
Цена и начинка
Эти микроконтроллеры имеют, как и PIC, среднюю стоимость. Например, упомянутый ранее камень ATmega328P в Chipdip стоит 160 рублей, а ATxmega128A1 — 590 рублей.
TinyAVR дешевле и проще своих старших братьев. Немного характеристик ATmega328P: предельная частота работы 20 МГц (слышал, правда, что под охлаждением и посильнее разгоняли); 23 пина ввода-вывода; Flash-память на 32 Кбайта; 8 аналоговых входов; два 8-битных таймера и один 16-битный; 6 ШИМ-каналов; 2 Кбайта RAM; 1 Кбайт EEPROM; интерфейсы UART, SPI, I2C.
Программирование и использование AVR
Благодаря распространению плат прототипирования Arduino, как у нас, так и за рубежом, эти МК имеют низкий порог вхождения. Программируются на ассемблере, Си, C++; можно воспользоваться графическими генераторами кода типа Scratch (см. Scratchduino). Для работы есть Atmel Studio, IAR AVR, WinAVR. Ну и Arduino IDE, куда уж без нее. Лично я использую связку из Geany и avrdude. Для прошивки есть большое разнообразие программаторов: как дешевые, так и подороже. Я для этих целей прикупил недорогой экземпляр USBasp где-то за 1,5 доллара (на Aliexpress есть масса вариантов). А можно в качестве программатора использовать и Arduino UNO.
Информации об этих контроллерах в интернете много: чего только стоит канал AlexGyver! И благодаря Arduino существует масса обучающих наборов на любой вкус. В общем, низкий порог вхождения — весомый плюс этих контроллеров.
Кстати, если заказываешь из Китая, то взять плату с чипом будет дешевле, чем чип отдельно.
ARM
О компании ARM и ее продукции ты наверняка слышал. Однако производит эта компания не сами микроконтроллеры, а лишь архитектуру. Лицензию на нее покупают конечные производители и используют так, как им захочется. Кто только их не выпускал! Но как микроконтроллеры наибольшее распространение получили чипы компании STMicroelectronics.
Они делятся на два семейства: STM32 и STM8. Как понятно из названий, такие чипы бывают 8- и 32-битные. А каждое семейство делится на серии, которых достаточно много.
STM8
Что можно о них сказать? Это функциональный аналог AVR, только дешевле. Здесь есть три серии: STM8L c ультранизким энергопотреблением, STM8S для индустриальной аппаратуры и STM8A, именуемые «высоконадежными». Периферия у всех такая же, как у AVR, но есть встроенный тактовый генератор. Из плюсов могу выделить только низкое энергопотребление и маленькую цену. Замечу, у STM8 архитектура не ARM, а собственная. Она очень схожа с ARM и использует идентичный STM32 интерфейс прошивки. Компилятор для них используется тоже один, и при его работе ты просто указываешь, под какую архитектуру собирать код.
STM32
Проще говоря, это старший брат STM8. Его характеристики куда выше и колеблются в больших пределах в зависимости от серии. Программируются практически на чем угодно, даже JavaScript, хотя я бы не рекомендовал.
Прошивка и программирование
Прошиваются STM32 с помощью разработанного компанией ST интерфейса Single Wire Interface Module (SWIM). Еще у МК этой серии есть интерфейс отладки Serial Wire Debugging (SWD). Им я не пользовался, но в большинстве гайдов по STM есть описание его настройки.
А еще на STM можно записывать прошивки по USB. Дело в том, что у многих контроллеров этой серии есть аппаратная поддержка USB. STM благодаря этому может эмулировать разные устройства — например, флешку. Если залить специальную прошивку, можно будет обновлять встроенную программу просто по USB.
Для STM32 есть самые разные программаторы — от весьма крутых до простеньких USB-свистков. Я, например, взял ST-LINK, на «Алиэкспрессе» он стоил около 1,6 долларов. Его достоинство в том, что он может прошить любой контроллер STM.
Стоит также упомянуть платы STM Nucleo. Вот одна из них.
Это что-то вроде Arduino из мира STM. Стоит дороговато, как и оригинальные Arduino, но вещь для новичка отличная. Если деньги есть, стоит взять. Здесь же стоит упомянуть «Амперку» с их «Искрой» и набором для начинающих. Тоже вполне достойный выбор для первого раза.
Для программирования можно воспользоваться средами Embedded Workbench, uVision и TrueStudio. Благодаря работе умельцев для этих же целей можно использовать и родной для многих Arduino IDE. Есть также онлайновый IDE — mbed studio.
Цена
Партия из пяти плат с обвязкой и STM8 будет стоить около 4,5 долларов. Плата BluePill с STM32F103 сейчас стоит 1,6 доллара. Плата NUCLEO-F072RB — 16,4 доллара. Ссылок давать не буду — на «Алиэкспрессе» все это легко ищется по запросу «stm32».
ESP
И, наконец, пара слов про ESP. С этими МК я не работал и знаю о них немного. Это 32-битные камни с модулем Wi-Fi на борту. Они используют архитектуру xtensa. На них собирают умные дома и прочие интересные штуки (смотри врезку ниже). Программировать можно опять же в Arduino IDE. Знаменитая ESP8266, неоднократно упомянутая на страницах нашего сайта, как раз и относится к этому семейству. К нему же относится ESP32, старший брат ESP8266.
Выводы
Кроме упомянутых выше производителей есть много других: Intel, Renesas Electronics, Texas Instruments и прочие. Но в сообществе электронщиков-любителей они не прижились, хоть и активно используются в промышленности.
Новичкам я рекомендую AVR в виде Arduino: по нему много информации на русском, а порог вхождения невелик. Но засиживаться на них не стоит, а то так и будешь до конца дней собирать и пересобирать этот конструктор.
После Arduino стоит перейти на STM. Для простеньких проектов бери восьмибитные чипы, для более сложных — 32-битные, и будет тебе счастье. И помни, что микроконтроллер — это уже не процессор, но еще не компьютер.
Статьи на сайте о ESP32
- Программирование на ESP32
- Создание сниффера на ESP32
Статьи на сайте об STM32 и проектах на его основе
- Как реализовать шифрование для самодельного гаджета
- Заводим и разгоняем оперативную память на STM32 и Arduino
- Как собрать свой мобильник и почему это проще, чем кажется
- Собираем программно определяемый радиоприемник своими руками