Какой лучший язык для программирования микроконтроллеров выбрать: MicroPython, CircuitPython, Arduino или C?
Какой язык программирования следует использовать для ваших проектов микроконтроллеров? Давайте рассмотрим четыре наиболее популярных варианта.
Сегодня платы для микроконтроллеров стали основным продуктом в сообществе производителей.
Эти программируемые устройства специально разработаны для обработки входных и выходных сигналов в качестве способа управления различными модулями и компонентами, такими как датчики, двигатели, светодиоды и устройства человеческого ввода (HID).
Но перед этим вам нужно выучить язык написания различных сценариев, который микроконтроллер может интерпретировать для программирования этих устройств.
Сегодня самые популярные языки программирования микроконтроллеров это — MicroPython, CircuitPython, Arduino (упрощенный C++) и C. У каждого из этих языков есть свои плюсы и минусы.
MicroPython
MicroPython — это облегченная реализация языка программирования Python 3, разработанная специально для микроконтроллеров.
Он был разработан в 2013 году доктором Дэмиеном Джорджем для более быстрого прототипирования и для того, чтобы люди, уже знакомые с Python, могли программировать микроконтроллеры на аналогичном языке.
Функции
MicroPython — отличный язык сценариев для начинающих, желающих программировать микроконтроллеры.
Новичкам, не имеющим опыта программирования, будет легко читать и понимать его, поскольку он использует понятные для человека команды в простых структурах.
Кроме того, он использует среду выполнения цикла чтения-оценки-печати-цикла (REPL), что обеспечивает интерактивный опыт кодирования.
Производительность
Для программирования микроконтроллера с помощью MicroPython в микроконтроллер устанавливается прошивка, содержащая интерпретатор, библиотеки и различные другие зависимости.
Это позволяет микроконтроллеру интерпретировать и выполнять код MicroPython локально, что позволяет быстро создавать прототипы, поскольку во время кодирования может быть обеспечена обратная связь в реальном времени.
Однако из-за того, как процессоры выполняют код, интерпретируемые языки, такие как MicroPython, будут значительно медленнее по сравнению с компилируемыми языками, такими как C++.
Таким образом, по умолчанию, хотя прототипирование может быть намного быстрее, само выполнение кода происходит медленнее.
Совместимость
Поскольку MicroPython использует локальные ресурсы для интерпретации и выполнения программ, микроконтроллер должен иметь не менее 256 КБ флэш-памяти и 16 КБ ОЗУ.
К сожалению, некоторые популярные платы для разработки, такие как Arduino Uno, не соответствуют требуемым спецификациям. Однако до сих пор существует множество плат, совместимых с MicroPython.
В настоящее время MicroPython официально поддерживает платы разработки Pyboard, ESP32, ESP8266, Raspberry Pi Pico, BBC micro:bit, STM32 и несколько плат Arduino, таких как Nano 33 BLE, Nano RP2040, Giga R1 и Portenta H7.
Сообщество и поддержка
С момента своего запуска в 2013 году MicroPython приобрел множество поклонников. Начинающим довольно легко изучить MicroPython благодаря хорошо написанным инструкциям.
Если вам нужна дополнительная помощь, у MicroPython также есть форум сообщества, где пользователи делятся учебными пособиями, идеями и отвечают на все виды проблем, которые могут у вас возникнуть в связи с MicroPython.
Arduino
Arduino — это популярная платформа с открытым исходным кодом, предназначенная в первую очередь для любителей электроники и самодельщиков.
Язык программирования Arduino основан на языках программирования C и C++. Язык Arduino был выпущен в 2005 году группой инженеров, художников и дизайнеров из Италии.
Функции
Язык программирования Arduino использует урезанную версию C и C++, что упрощает его изучение и разработку.
Выполнение кода с использованием Arduino происходит значительно быстрее, чем его аналоги на интерпретируемом языке из-за его скомпилированного характера.
Кроме того, для работы Arduino требуется лишь небольшое количество системных ресурсов, что делает его совместимым со многими отладочными платами и микроконтроллерами.
Производительность
В отличие от MicroPython и CircuitPython, Arduino — это компилируемый язык программирования. Это означает, что код сначала компилируется на компиляторе (уже включенном в среду разработки Arduino), а затем выполняется микроконтроллером как целая программа.
Это значительно улучшает выполнение кода, поскольку микроконтроллеру не нужно использовать ресурсы для интерпретации каждой строки кода.
Кроме того, компиляция программы также переводит ее в машинный код, который микроконтроллер может выполнять без установки зависимостей.
Это значительно повышает скорость выполнения кода, поскольку микроконтроллер может напрямую выполнять программу, не выделяя время и аппаратные ресурсы на трансляцию кода.
Поддерживаемые платы
Поскольку этап компиляции выполняется через IDE, микроконтроллеры могут иметь для работы всего 32 КБ флэш-памяти и 2 КБ ОЗУ.
Таким образом, помимо плат Arduino, существует множество альтернативных плат Arduino, которые вы можете использовать для программирования с помощью Arduino.
Многие из этих плат будут использовать микроконтроллеры, такие как ATmega328P, ATmega2560, SAMx8E, ESP8266, ESP32 и STM32.
Сообщество и поддержка
Будучи платформой с открытым исходным кодом с 2005 года, Arduino имеет одну из лучших доступных документов. Каждый год Фонд Arduino активно предоставляет обновления, поддержку и новые интересные продукты.
Мировое сообщество также является одним из самых активных участников обмена руководствами и идеями, а также решения любых проблем, связанных с устранением неполадок, с которыми вы можете столкнуться.
С Arduino вам гарантирован хороший уровень поддержки.
CircuitPython
CircuitPython — это реализация Python 3 от Adafruit, основанная на MicroPython.
Несмотря на то, что CircuitPython является ответвлением от MicroPython, он предлагает несколько улучшений, делающих программирование микроконтроллеров более легким и увлекательным.
Функции
CircuitPython был создан, чтобы помочь новичкам научиться программировать микроконтроллеры.
Для этого CircuitPython предоставляет несколько функций, включая интерактивную среду кодирования, встроенные библиотеки, простой синтаксис (более простой, чем у MicroPython), а также отличную документацию и руководства.
Производительность
Так как CircuitPython основан на MicroPython, у него много общих сильных и слабых сторон.
Время выполнения программы будет немного медленнее, чем у MicroPython, поскольку CircuitPython предоставляет больше функций и дополнительных библиотек.
Однако разница, скорее всего, незаметна, поскольку для работы CircuitPython требуются более мощные микроконтроллеры.
Поддерживаемые платы
Благодаря встроенным библиотекам и еще более простому синтаксису платам для разработки микроконтроллеров требуется больше ресурсов для использования CircuitPython.
Как минимум, микроконтроллер должен иметь 8-битный процессор, 256 КБ флэш-памяти (рекомендуется 512 КБ) и 32 КБ ОЗУ (рекомендуется 64 КБ).
В настоящее время CircuitPython поддерживает более 390 плат разработки, перечисленных на официальном сайте.
Сообщество и поддержка
Известно, что Adafruit производит продукты, удобные для начинающих. Таким образом, вы можете найти легкую для понимания документацию и книги по CircuitPython.
Хотя этот язык был представлен только в 2017 году, у него все еще больше поклонников, чем у MicroPython, с которым вы можете связаться через Discord и официальный форум.
Как и Arduino Foundation, Adafruit активно предоставляет обновления, поддержку и новые продукты, а это означает, что поддержку должно быть легко найти.
Язык программирования С (Си)
Cи — это язык программирования общего назначения, разработанный в 1970-х Деннисом Ритчи из Bell Labs. Это скомпилированный язык программирования, который инженеры и другие специалисты часто используют для программирования микроконтроллеров с высоким уровнем эффективности.
Функции
Несмотря на то, что это более сложный для изучения язык, основным преимуществом C по сравнению с MicroPython, CircuitPython и Arduino является уровень скорости, эффективности, контроля и переносимости, который он обеспечивает.
Это делает C лучшим языком для программирования обоих микроконтроллеров, которые будут использоваться в готовых продуктах.
Производительность
Помимо отличной переносимости, C известен своей производительностью. Он может запускать программы быстрее, чем Arduino, MicroPython и CircuitPython, даже с микроконтроллером с меньшими ресурсами.
Это связано с тем, что C — более эффективный язык, требующий наименьшего количества зависимостей.
Хотя скомпилированная программа Arduino, как и программа C, может быть запущена на «голом железе», ее машинный код поставляется с предварительно подготовленными библиотеками и инструментами, которые снижают производительность.
Поддерживаемые платы
Язык C настолько портативен, что его можно использовать для программирования практически любого микроконтроллера на базе Arm. Кроме того, его можно использовать на платах на базе микроконтроллеров Atmel AVR, STM32, PIC и MSP.
Сообщество и поддержка
Благодаря надежному приложению для программирования и тому факту, что ему уже несколько десятилетий, язык программирования C имеет огромное онлайн-сообщество.
Вы можете легко найти помощь через различные онлайн-форумы, чаты и блоги, посвященные обсуждению и обмену идеями о языке C.
На каком языке лучше программировать?
Итак, на каком языке лучше всего программировать микроконтроллеры? Это действительно зависит от человека. Язык C скорее всего был бы лучшим для профессионалов, разрабатывающих электронику для производства.
Те, у кого нет опыта программирования, вполне могут начать с CircuitPython, поскольку у него есть функции и множество информации, которые делают обучение легким и увлекательным. Тем, кто знаком с Python, будут легко программировать микроконтроллеры с помощью MicroPython.
Для большинства сообщества DIY/производителей Arduino по-прежнему будет лучшим языком для программирования микроконтроллеров, поскольку он предлагает выдающийся баланс производительности, портативности и функций.