Это проект MicroPython, цель которого — внедрить реализацию Python 3.x в микроконтроллеры и небольшие встроенные системы. Официальный сайт можно найти по адресу micropython.org.
ВНИМАНИЕ: этот проект находится на стадии бета-тестирования и может быть изменен в кодовой базе, включая изменения имени всего проекта и изменения API.
MicroPython реализует весь синтаксис Python 3.4 (включая исключения, with
, yield from
и т. д., а также ключевые слова async
/ await
из Python 3.5 и некоторые функции select из более поздних версий). Предоставляются следующие основные типы данных: str
(включая базовую поддержку Unicode), bytes
, bytearray
, tuple
, list
, dict
, set
, frozenset
, array.array
, collections.namedtuple
, классы и экземпляры. Встроенные модули включают os
, sys
, time
, re
, struct
и т. д. Некоторые порты поддерживают модуль _thread
(многопоточность), socket
и ssl
для работы в сети, а также asyncio
. Обратите внимание, что для типов данных и модулей реализована только часть функций Python 3.
MicroPython может выполнять сценарии в текстовой исходной форме (файлы .py) или из предварительно скомпилированного байт-кода (файлы .mpy), в обоих случаях либо из файловой системы на устройстве, либо «замороженными» в исполняемый файл MicroPython.
MicroPython также предоставляет набор модулей, специфичных для MicroPython, для доступа к аппаратным функциям и периферийным устройствам, таким как GPIO, таймеры, АЦП, ЦАП, ШИМ, SPI, I2C, CAN, Bluetooth и USB.
См. онлайн-документацию для справки по API, информации об использовании MicroPython и информации о том, как он реализован.
Мы используем обсуждения GitHub в качестве форума и Discord для чата. Это отличное место, где можно задать вопросы и получить совет от сообщества или обсудить ваши проекты на основе MicroPython.
В случае ошибок и запросов на добавление функций, пожалуйста, поднимите проблему и следуйте приведенным там шаблонам.
Информацию о MicroPython pyboard, официально поддерживаемой плате из исходной кампании Kickstarter, см. в схемах, выводах и документации.
MicroPython — это проект с открытым исходным кодом, который приветствует вклады. Для продуктивной работы обязательно следуйте Руководству для участников и Соглашениям Кодекса. Обратите внимание, что MicroPython лицензируется по лицензии MIT, и все материалы должны соответствовать этой лицензии.
Этот репозиторий содержит следующие компоненты:
py/ — основная реализация Python, включая компилятор, среду выполнения и основную библиотеку.
mpy-cross/ — кросс-компилятор MicroPython, который используется для преобразования сценариев в предварительно скомпилированный байт-код.
ports/ — специфичный для платформы код для различных портов и архитектур, на которых работает MicroPython.
lib/ -- подмодули для внешних зависимостей.
tests/ -- тестовая среда и тестовые сценарии.
docs/ — пользовательская документация в формате Sphinx reStructuredText. Это используется для создания онлайн-документации.
extmod/ — дополнительные (неосновные) модули, реализованные на C.
инструменты/ -- различные инструменты, включая модуль pyboard.py.
example/ — несколько примеров скриптов Python.
«make» используется для сборки компонентов или «gmake» в системах на базе BSD. Вам также понадобятся bash, gcc и Python 3.3+, доступные в виде команды python3
(если в вашей системе есть только Python 2.7, вызовите make с дополнительной опцией PYTHON=python2
). Некоторые порты (rp2 и esp32) дополнительно используют CMake.
MicroPython работает на широком спектре микроконтроллеров, а также в Unix-подобных (включая Linux, BSD, macOS, WSL) и Windows системах.
Целевые микроконтроллеры могут иметь размер всего 256 КБ флэш-памяти + 16 КБ ОЗУ, хотя устройства с объемом флэш-памяти не менее 512 КБ + 128 КБ ОЗУ обеспечивают гораздо более полнофункциональный опыт.
Порты для Unix и Windows позволяют как разрабатывать, так и тестировать сам MicroPython, а также предоставлять облегченную альтернативу CPython на этих платформах (в частности, во встроенных системах Linux).
«Минимальный» порт представляет собой пример очень простого порта MicroPython и может быть скомпилирован как как отдельный двоичный файл Linux, так и для ARM Cortex M4. Начните с этого, если хотите портировать MicroPython на другой микроконтроллер. Кроме того, порт «голой руки» является примером абсолютно минимальной конфигурации и используется для отслеживания размера кода основной среды выполнения и виртуальной машины.
Кроме того, в этом репозитории предусмотрены следующие порты:
cc3200 — Texas Instruments CC3200 (включая PyCom WiPy).
esp32 — SoC Espressif ESP32 (включая ESP32S2, ESP32S3, ESP32C3, ESP32C6).
esp8266 — SoC Espressif ESP8266.
mimxrt — NXP m.iMX RT (включая Teensy 4.x).
nrf -- Nordic Semiconductor nRF51 и nRF52.
pic16bit — 16-битный микрочип PIC.
powerpc — IBM PowerPC (включая микроватт)
qemu — эмулируемая цель на основе QEMU (для тестирования)
renesas-ra -- Семья Ренесас РА.
rp2 — Raspberry Pi RP2040 (включая Pico и Pico W).
Samd — микрочип (ранее Atmel) SAMD21 и SAMD51.
stm32 — семейство STMicroelectronics STM32 (включая F0, F4, F7, G0, G4, H7, L0, L4, WB)
webassembly — порт Emscripten, предназначенный для браузеров и NodeJS.
зефир -- Зефир RTOS.
Большинство портов требуют предварительной сборки кросс-компилятора MicroPython. Эта программа, называемая mpy-cross, используется для предварительной компиляции сценариев Python в файлы .mpy, которые затем можно включить (заморозить) в прошивку/исполняемый файл для порта. Для сборки mpy-cross используйте:
$ cd mpy-cross $ make
Ядро виртуальной машины MicroPython и среда выполнения не имеют внешних зависимостей, но данный порт может зависеть от сторонних драйверов или HAL поставщиков. Этот репозиторий включает в себя несколько подмодулей, связанных с этими внешними зависимостями. Перед компиляцией данного порта используйте
$ cd ports/name $ make submodules
чтобы убедиться, что все необходимые подмодули инициализированы.