Este es el proyecto MicroPython, cuyo objetivo es implementar una implementación de Python 3.x en microcontroladores y pequeños sistemas integrados. Puede encontrar el sitio web oficial en micropython.org.
ADVERTENCIA: este proyecto se encuentra en etapa beta y está sujeto a cambios en el código base, incluidos cambios de nombre en todo el proyecto y cambios de API.
MicroPython implementa toda la sintaxis de Python 3.4 (incluidas excepciones, with
, yield from
, etc., y además palabras clave async
/ await
de Python 3.5 y algunas características seleccionadas de versiones posteriores). Se proporcionan los siguientes tipos de datos principales: str
(incluido el soporte básico de Unicode), bytes
, bytearray
, tuple
, list
, dict
, set
, frozenset
, array.array
, collections.namedtuple
, clases e instancias. Los módulos integrados incluyen os
, sys
, time
, re
y struct
, etc. Algunos puertos son compatibles con el módulo _thread
(multiproceso), socket
y ssl
para redes y asyncio
. Tenga en cuenta que solo se implementa un subconjunto de la funcionalidad de Python 3 para los tipos de datos y módulos.
MicroPython puede ejecutar scripts en forma de fuente textual (archivos .py) o desde código de bytes precompilado (archivos .mpy), en ambos casos desde un sistema de archivos en el dispositivo o "congelados" en el ejecutable de MicroPython.
MicroPython también proporciona un conjunto de módulos específicos de MicroPython para acceder a funciones y periféricos específicos del hardware, como GPIO, temporizadores, ADC, DAC, PWM, SPI, I2C, CAN, Bluetooth y USB.
Consulte la documentación en línea para obtener referencia de API e información sobre el uso de MicroPython e información sobre cómo se implementa.
Usamos GitHub Discussions como nuestro foro y Discord para chatear. Estos son excelentes lugares para hacer preguntas y consejos de la comunidad o para discutir sus proyectos basados en MicroPython.
Para errores y solicitudes de funciones, plantee un problema y siga las plantillas allí.
Para obtener información sobre el pyboard MicroPython, el tablero con soporte oficial de la campaña original de Kickstarter, consulte los esquemas, los pines y la documentación.
MicroPython es un proyecto de código abierto y agradece las contribuciones. Para ser productivo, asegúrese de seguir las Pautas para colaboradores y las Convenciones del Código. Tenga en cuenta que MicroPython tiene la licencia MIT y todas las contribuciones deben seguir esta licencia.
Este repositorio contiene los siguientes componentes:
py/: la implementación principal de Python, que incluye el compilador, el tiempo de ejecución y la biblioteca principal.
mpy-cross/: el compilador cruzado de MicroPython que se utiliza para convertir scripts en código de bytes precompilado.
ports/: código específico de la plataforma para los distintos puertos y arquitecturas en las que se ejecuta MicroPython.
lib/ -- submódulos para dependencias externas.
tests/ -- marco de prueba y scripts de prueba.
docs/ -- documentación de usuario en formato Sphinx reStructuredText. Esto se utiliza para generar la documentación en línea.
extmod/ -- módulos adicionales (no básicos) implementados en C.
tools/: varias herramientas, incluido el módulo pyboard.py.
ejemplos/: algunos ejemplos de scripts de Python.
"make" se utiliza para construir los componentes, o "gmake" en sistemas basados en BSD. También necesitará bash, gcc y Python 3.3+ disponibles como el comando python3
(si su sistema solo tiene Python 2.7, invoque make con la opción adicional PYTHON=python2
). Algunos puertos (rp2 y esp32) también usan CMake.
MicroPython se ejecuta en una amplia gama de microcontroladores, así como en sistemas tipo Unix (incluidos Linux, BSD, macOS, WSL) y Windows.
Los objetivos del microcontrolador pueden ser tan pequeños como 256 kiB flash + 16 kiB RAM, aunque los dispositivos con al menos 512 kiB flash + 128 kiB RAM permiten una experiencia mucho más completa.
Los puertos Unix y Windows permiten tanto el desarrollo como la prueba del propio MicroPython, además de proporcionar una alternativa ligera a CPython en estas plataformas (en particular en sistemas Linux integrados).
El puerto "mínimo" proporciona un ejemplo de un puerto MicroPython muy básico y se puede compilar tanto como un binario independiente de Linux como para ARM Cortex M4. Comience con esto si desea portar MicroPython a otro microcontrolador. Además, el puerto "desnudo" es un ejemplo de la configuración mínima absoluta y se utiliza para realizar un seguimiento del tamaño del código del tiempo de ejecución central y de la VM.
Además, en este repositorio se proporcionan los siguientes puertos:
cc3200: Texas Instruments CC3200 (incluido PyCom WiPy).
esp32 - SoC Espressif ESP32 (incluidos ESP32S2, ESP32S3, ESP32C3, ESP32C6).
esp8266 -- SoC Espressif ESP8266.
mimxrt -- NXP m.iMX RT (incluido Teensy 4.x).
nrf: semiconductores nórdicos nRF51 y nRF52.
pic16bit -- Microchip PIC de 16 bits.
powerpc -- IBM PowerPC (incluido Microwatt)
qemu: objetivo emulado basado en QEMU (para pruebas)
renesas-ra -- Familia Renesas RA.
rp2 -- Raspberry Pi RP2040 (incluidos Pico y Pico W).
samd: Microchip (anteriormente Atmel) SAMD21 y SAMD51.
stm32 - Familia STMicroelectronics STM32 (incluidos F0, F4, F7, G0, G4, H7, L0, L4, WB)
webassembly: puerto de Emscripten dirigido a navegadores y NodeJS.
zephyr -- Zephyr RTOS.
La mayoría de los ports requieren que se construya primero el compilador cruzado MicroPython. Este programa, llamado mpy-cross, se utiliza para precompilar scripts de Python en archivos .mpy que luego pueden incluirse (congelarse) en el firmware/ejecutable de un puerto. Para construir mpy-cross use:
$ cd mpy-cross $ make
La máquina virtual MicroPython principal y el tiempo de ejecución no tienen dependencias externas, pero un puerto determinado puede depender de controladores de terceros o HAL de proveedores. Este repositorio incluye varios submódulos que enlazan con estas dependencias externas. Antes de compilar un puerto determinado, utilice
$ cd ports/name $ make submodules
para garantizar que todos los submódulos necesarios estén inicializados.