MicroPython против Arduino C: два подхода к одному железу

Понимаем, почему один и тот же светодиод можно зажечь двумя очень разными способами.

Arduino C — компилируемый язык: код превращается в машинные инструкции и прошивается целиком. MicroPython — интерпретируемый: чип читает и выполняет ваши команды на лету.

Два мира embedded-разработки

Микроконтроллеры долго программировали только на C/C++. Arduino сделало это проще, добавив удобные функции вроде digitalWrite(), но язык остался компилируемым. MicroPython предложил другой путь: писать на Python и сразу запускать. У каждого подхода своя цена и своя выгода.

Сравнение бок о бок

Зажечь светодиод. На Arduino C:

void setup() {
  pinMode(2, OUTPUT);
}
void loop() {
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}

То же самое на MicroPython:

from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
    led.value(1)
    time.sleep(0.5)
    led.value(0)
    time.sleep(0.5)

Код MicroPython короче и читается как обычный Python. Но Arduino-версия после компиляции выполняется быстрее и занимает меньше памяти.

Таблица различий

КритерийArduino CMicroPython
Модель выполненияКомпиляция в машинный кодИнтерпретация байткода
СкоростьОчень высокаяНиже (в 10–100 раз)
Цикл разработкиНаписал → скомпилировал → прошилНаписал → запустил сразу
ИнтерактивностьНетREPL: команды вживую
Порог входаВыше (типы, указатели)Ниже (знакомый Python)
Память под кодЭкономноПрошивка занимает больше места

Как работает под капотом

В Arduino компилятор переводит весь ваш скетч в инструкции процессора до загрузки на плату. Чип получает готовый бинарник и исполняет его напрямую. В MicroPython на плату сначала ставится сам интерпретатор (прошивка), а ваш код летит туда как текстовый .py-файл. Интерпретатор разбирает его в байткод и выполняет. Отсюда главный плюс MicroPython — REPL (интерактивная консоль): можно подключиться к плате и набирать команды по одной, мгновенно видя результат. В Arduino C такого нет.

Когда что выбирать

  • MicroPython: прототипы, обучение, IoT-устройства, где важна скорость разработки, а не каждая микросекунда.
  • Arduino C: жёсткий тайминг (управление светодиодной лентой по протоколу, точный ШИМ моторов), экономия каждого байта памяти, готовые промышленные библиотеки.

Частые ошибки

  • Считать, что MicroPython «слишком медленный для всего». Для умного дома (опрос датчиков, реле, сеть) его скорости хватает с лихвой.
  • Путать структуру программ. В Arduino есть обязательные setup() и loop(); в MicroPython вы сами пишете while True или используете таймеры.

Итог

  • Arduino C компилируется и работает быстрее; MicroPython интерпретируется и удобнее в разработке.
  • Главное преимущество MicroPython — REPL и мгновенная обратная связь.
  • Для умного дома MicroPython почти всегда достаточно быстр.
Проверьте себя
1. В чём ключевое отличие модели выполнения MicroPython от Arduino C?
AMicroPython компилируется заранее, Arduino — нет
BMicroPython интерпретируется на чипе, Arduino C компилируется в машинный код
CОни работают одинаково
DArduino C интерпретируется на лету
2. Что даёт MicroPython, чего нет в Arduino C?
AБолее высокую скорость
BИнтерактивную консоль REPL для команд вживую
CМеньший размер прошивки
DПрямой доступ к регистрам без библиотек
3. Когда Arduino C предпочтительнее MicroPython?
AДля быстрого прототипа умного дома
BКогда нужен жёсткий точный тайминг и максимальная экономия памяти
CДля обучения новичков
DКогда хочется писать на Python