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 C | MicroPython |
| Модель выполнения | Компиляция в машинный код | Интерпретация байткода |
| Скорость | Очень высокая | Ниже (в 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 почти всегда достаточно быстр.