MicroPython es una implementación de software de un lenguaje de programación ampliamente compatible con Python 3, escrito en C , que está optimizado para ejecutarse en un microcontrolador . [ 2 ] [ 3 ]
MicroPython consta de un compilador de Python para generar código de bytes y un intérprete de dicho código. El usuario dispone de un intérprete interactivo ( REPL ) para ejecutar inmediatamente los comandos compatibles. Incluye una selección de las principales bibliotecas de Python; MicroPython también incluye módulos que permiten al programador acceder al hardware de bajo nivel. [ 4 ]
MicroPython sí que tiene un ensamblador integrado , que permite que el código se ejecute a toda velocidad, pero no es portable entre diferentes microcontroladores.
El código fuente del proyecto está disponible en GitHub bajo la licencia MIT . [ 5 ]
Historia

MicroPython fue creado originalmente por el programador australiano Damien George, tras una exitosa campaña de Kickstarter en 2013. [ 6 ] La campaña original de Kickstarter lanzó MicroPython con una placa de desarrollo "pyboard" con microcontrolador STM32F4 . Desde entonces, MicroPython se ha desarrollado para admitir diversas arquitecturas basadas en ARM . [ 7 ] Los puertos compatibles en la rama principal son ARM Cortex-M (muchas placas STM32 [ 8 ] , placas RP2040 , TI CC3200/WiPy, placas Teensy, serie Nordic nRF, SAMD21 y SAMD51), ESP8266 , ESP32 , [ 9 ] PIC de 16 bits, Unix, Windows, Zephyr y JavaScript. [ 10 ] Además, existen numerosas bifurcaciones para diversos sistemas y plataformas de hardware no compatibles con la rama principal. [ 11 ]
En 2016, se creó una versión de MicroPython para BBC Micro Bit como parte de la contribución de la Python Software Foundation a la asociación de Micro Bit con la BBC. [ 12 ]
En julio de 2017, MicroPython se bifurcó para crear CircuitPython , una versión de MicroPython con énfasis en la educación y la facilidad de uso. MicroPython y CircuitPython admiten conjuntos de hardware algo diferentes (por ejemplo, CircuitPython admite las placas Atmel SAM D21 y D51, pero dejó de admitir ESP8266). A partir de la versión 4.0, CircuitPython se basa en la versión 1.9.4 de MicroPython. [ 13 ]
En 2017, Microsemi realizó una adaptación de MicroPython para la arquitectura RISC-V (RV32 y RV64). [ 14 ]
En abril de 2019, se creó una versión de MicroPython para Lego Mindstorms EV3 . [ 15 ]
En enero de 2021, se creó una versión de MicroPython para el RP2040 (ARM Cortex-M0+, en Raspberry Pi Pico y otros). [ 16 ]
Características
Capacidad para ejecutar Python
MicroPython tiene la capacidad de ejecutar Python, lo que permite a los usuarios crear programas simples y fáciles de entender. [ 17 ] MicroPython admite muchas bibliotecas estándar de Python, soportando más del 80 % de las características de las bibliotecas más utilizadas de Python. [ 17 ] MicroPython fue diseñado específicamente para abordar la brecha de rendimiento típica entre los microcontroladores y Python. [ 18 ] El código Python puede acceder e interactuar directamente con el hardware, con mayores posibilidades de hardware que no están disponibles utilizando una aplicación Python normal que se ejecuta en un sistema operativo . [ 19 ]
Portabilidad del código
La utilización de la tecnología de capa de abstracción de hardware (HAL) por parte de MicroPython permite que el código desarrollado sea portable entre diferentes microcontroladores de la misma familia o plataforma y en dispositivos que admiten y pueden descargar MicroPython. Los programas suelen desarrollarse y probarse en microcontroladores de alto rendimiento y distribuirse con la aplicación final para su uso en microcontroladores de menor rendimiento. [ 20 ]
Módulos
MicroPython ofrece la funcionalidad, una vez escrito el código nuevo, de crear un módulo congelado y usarlo como una biblioteca que puede formar parte del firmware desarrollado . Esta función ayuda a evitar la descarga repetitiva del mismo código, ya probado y sin errores, en un entorno MicroPython. Este tipo de módulo se guardará en el directorio de módulos del microcontrolador para su compilación y carga en el mismo, donde la biblioteca estará disponible mediante el comando `import` de Python para su uso repetido. [ 20 ]
Bucle de lectura-evaluación-impresión
El bucle de lectura-evaluación-impresión (REPL) permite a un desarrollador introducir líneas de código individuales y ejecutarlas inmediatamente en una terminal . [ 21 ] Los sistemas basados en Linux y macOS disponen de emuladores de terminal que permiten establecer una conexión directa con el REPL de un dispositivo MicroPython mediante una conexión USB serie . El REPL facilita la prueba inmediata de partes de una aplicación , ya que cada parte del código puede ejecutarse y los resultados pueden visualizarse. Una vez cargadas diferentes partes del código en el REPL, se pueden utilizar funciones adicionales para experimentar con su funcionalidad. [ 17 ]
Comandos REPL útiles (una vez conectado a una consola serie): [ 21 ]
- CTRL+C : interrupción del teclado
- CTRL+D : recargar
help(): mensaje de ayudahelp("modules"): enumera los módulos integradosimportboard↵ Enterdir(board): enumera todos los pines de la placa del microcontrolador que están disponibles para ser utilizados en el código de un programa.
Limitaciones
Aunque MicroPython implementa completamente la versión 3.4 del lenguaje Python y gran parte de la 3.5, no implementa todas las características del lenguaje introducidas a partir de la 3.5, [ 22 ] aunque sí incluye cierta sintaxis nueva de la 3.6 y características más recientes de versiones posteriores, por ejemplo, de la 3.8 (expresiones de asignación) y la 3.9. Incluye un subconjunto de la biblioteca estándar. [ 23 ]
MicroPython tiene un soporte de hardware más limitado en el mercado de microcontroladores que otras plataformas populares, como Arduino , con un número menor de opciones de microcontroladores que admiten el lenguaje. [ 18 ] MicroPython no incluye un entorno de desarrollo integrado (IDE) ni un editor específico, a diferencia de otras plataformas. [ 18 ]
Sintaxis y semántica
La sintaxis de MicroPython se basa en la de Python, debido a su estilo claro y fácil de entender, así como a su potencia. [ 24 ] A diferencia de la mayoría de los demás lenguajes de programación, se utiliza menos puntuación y menos mecanismos sintácticos para priorizar la legibilidad. [ 17 ]
bloques de código
MicroPython adopta el estilo de bloques de código de Python, donde el código específico de una función , condición o bucle particular se indentará. [ 17 ] Esto difiere de la mayoría de los demás lenguajes, que normalmente utilizan símbolos o palabras clave para delimitar los bloques. [ 17 ] Esto facilita la legibilidad del código MicroPython, ya que la estructura visual refleja la estructura semántica. Esta característica clave es simple pero importante, ya que una indentación mal utilizada puede provocar que el código se ejecute bajo una condición incorrecta o que el intérprete genere un error general . [ 17 ]
Los dos puntos (:) son el símbolo clave que se utiliza para indicar el final de una instrucción condicional. [ 17 ] El tamaño de la sangría es equivalente a una tabulación o 4 espacios.
Operaciones
MicroPython tiene la capacidad de realizar varias operaciones matemáticas utilizando operaciones primitivas y lógicas. [ 19 ]
Bibliotecas
MicroPython es una implementación ligera y eficiente de Python con bibliotecas similares a las de Python. [ 25 ] Algunas bibliotecas estándar de Python tienen una biblioteca equivalente en MicroPython renombrada para distinguirlas. Las bibliotecas de MicroPython son más pequeñas y se han eliminado o modificado las características menos populares para ahorrar memoria . [ 19 ]
Los tres tipos de bibliotecas en MicroPython: [ 19 ]
- derivada de una biblioteca estándar de Python (bibliotecas integradas)
- Bibliotecas específicas de MicroPython
- Bibliotecas específicas para ayudar con la funcionalidad del hardware.
MicroPython es altamente personalizable y configurable, con un lenguaje que varía entre cada placa ( microcontrolador ) y la disponibilidad de bibliotecas puede variar. Algunas funciones y clases en un módulo o el módulo completo pueden no estar disponibles o estar modificadas. [ 19 ]
Bibliotecas MicroPython personalizadas
Cuando los desarrolladores comienzan a crear una nueva aplicación, las bibliotecas y controladores estándar de MicroPython pueden no cumplir con los requisitos, debido a la insuficiencia de operaciones o cálculos. Al igual que con Python, existe la posibilidad de extender la funcionalidad de MicroPython con bibliotecas personalizadas que amplían las capacidades de las bibliotecas y el firmware existentes. [ 20 ]
En MicroPython, los archivos que terminan en .py tienen preferencia sobre otros alias de biblioteca, lo que permite a los usuarios extender el uso y la implementación de las bibliotecas existentes. [ 19 ]
Hardware compatible
A medida que la implementación y popularidad de MicroPython siguen creciendo, más placas tienen la capacidad de ejecutarlo. Muchos desarrolladores están creando versiones específicas para procesadores que se pueden descargar en diferentes microcontroladores. [ 19 ] La instalación de MicroPython en microcontroladores está bien documentada y es fácil de usar. [ 20 ] MicroPython permite interacciones sencillas entre el hardware del microcontrolador y las aplicaciones, lo que permite acceder a una amplia gama de funcionalidades mientras se trabaja en un entorno con recursos limitados, con un alto nivel de respuesta. [ 17 ]
Los dos tipos de placas utilizadas para ejecutar MicroPython: [ 19 ]
- MicroPython viene preinstalado de fábrica, lo que significa que solo se puede ejecutar MicroPython.
- placas que cuentan con un firmware que permite instalar MicroPython en la placa.
Ejecutando código
Para transferir un programa a una placa MicroPython, cree un archivo y cópielo en el microcontrolador para su ejecución. Con el hardware conectado a un dispositivo, como una computadora , la unidad flash de la placa aparecerá en el dispositivo, lo que permitirá transferir archivos a dicha unidad. Habrá dos archivos Python preexistentes, boot.py y main.py, que normalmente no se modifican. main.py puede modificarse si se desea ejecutar el programa cada vez que se inicie el microcontrolador ; de lo contrario, los programas se ejecutarán mediante la consola REPL. [ 19 ]
Pyboard
La pyboard es la placa microcontroladora oficial de MicroPython que admite completamente las funciones de software de MicroPython. Las características de hardware de la pyboard incluyen: [ 4 ]
- microcontrolador (MCU compuesto por CPU , memoria flash ROM y RAM )
- conector microUSB
- Ranura para tarjeta micro-SD
- pines de E/S
- interruptores , LED , puertos servo , reloj en tiempo real , acelerómetro
El proceso de arranque
La pyboard contiene una unidad interna con un sistema de archivos llamado /flashque se almacena en la memoria flash de la placa; además, se puede insertar una tarjeta microSD/sd en una ranura y se accede a ella a través de . Al arrancar, una pyboard debe seleccionar un sistema de archivos para arrancar desde /flasho /sdcon el directorio actual establecido en o /flash. /sdPor defecto, si se inserta una tarjeta SD, /sdse utilizará , de lo contrario, /flashse utilizará . Si es necesario, se puede evitar el uso de la tarjeta SD para el proceso de arranque creando un archivo vacío llamado /flash/SKIPSDque se almacena en la memoria flash de la placa para omitir la tarjeta SD en el proceso de arranque. [ 4 ]
Modos de arranque
Cuando la pyboard se enciende normalmente o se presiona el botón de reinicio, la pyboard arranca en modo estándar, lo que significa que se ejecuta el archivo boot.py, luego se configura el USB y finalmente se ejecuta el programa python. [ 4 ]
Es posible anular la secuencia de arranque estándar manteniendo pulsado el interruptor de usuario mientras la placa se está iniciando y, a continuación, pulsando el botón de reinicio sin soltar el interruptor. Los LED de la pyboard parpadearán entre los diferentes modos y, una vez que alcancen el modo deseado por el usuario, este podrá soltar el interruptor y la placa arrancará en dicho modo. [ 4 ]
Los modos de arranque son: [ 4 ]
- Arranque estándar: solo LED verde (ejecuta boot.py y luego el programa python)
- Arranque seguro: solo LED naranja (no ejecuta ningún script durante el arranque).
- Restablecimiento del sistema de archivos: LED verde y naranja simultáneamente (restablece la unidad flash al estado de fábrica e inicia en modo seguro) – se utiliza como solución cuando el sistema de archivos está dañado.
Errores
Ejemplos de programación
Fuente: [ 19 ]
Programa Hola mundo :
# Imprimir en la consola serieimprimir ( "¡Hola, mundo!" )Importación y encendido de un LED:
importar pyb# Enciende el LEDpyb . LED ( 1 ) . on ()Lectura de un archivo + bucle:
importar sistema operativo# Abrir y leer un archivocon open ( "/readme.txt" ) como f :imprimir ( f . leer ())Código de bytes
MicroPython incluye un compilador cruzado que genera código de bytes de MicroPython (extensión de archivo .mpy ). El código Python se puede compilar directamente en el microcontrolador o se puede precompilar en otro lugar.
El firmware de MicroPython se puede compilar sin el compilador, dejando únicamente la máquina virtual que puede ejecutar los programas mpy precompilados.
Implementación y usos
MicroPython se utiliza mediante un firmware que se carga con software estándar en la memoria flash de un microcontrolador específico, comunicándose mediante una aplicación de terminal cargada en un ordenador que emula una interfaz serie. [ 20 ]
Los principales usos de MicroPython se pueden generalizar en tres categorías: [ 20 ]
- Fines educativos : al utilizar el bucle de lectura, evaluación e impresión (REPL) de MicroPython para interactuar con un microcontrolador, es posible explicar visualmente los conceptos de procesamiento de datos y comunicación con placas de una manera más sencilla que con lenguajes de programación más complejos.
- Desarrollo y prueba de diseños de dispositivos y sensores : MicroPython ofrece implementaciones de referencia verificadas, sin errores y exhaustivamente probadas de las interfaces utilizadas en microcontroladores, lo que resuelve una tarea común para los desarrolladores: la configuración y el control de la comunicación periférica. MicroPython ofrece acceso directo e interactivo a los registros del dispositivo, lo que facilita la verificación de la funcionalidad, así como el desarrollo y la prueba de componentes de hardware, dispositivos y algoritmos para el control y la adquisición de datos.
- Herramienta de monitorización y configuración para el diseño de aplicaciones complejas : ciertas aplicaciones requieren funcionalidades específicas en microcontroladores de alto rendimiento. MicroPython facilita la monitorización del estado y la configuración de los parámetros del sistema.
La implementación de MicroPython puede variar dependiendo de la disponibilidad de bibliotecas estándar y de soporte, así como del tamaño de la memoria flash y la RAM del microcontrolador. [ 20 ]
Véase también
Referencias
- ↑ George, Damien P. (4 de mayo de 2014). "micropython/LICENSE en master · micropython/micropython" . GitHub . Recuperado el 11 de febrero de 2017 .
- ↑ Venkataramanan, Madhumita (6 de diciembre de 2013). "Micro Python: más potente que Arduino, más sencillo que Raspberry Pi" . Wired . Consultado el 15 de diciembre de 2016 .
- ↑ Yegulalp, Serdar (5 de julio de 2014). "Los pequeños circuitos de Micro Python: una variante de Python se dirige a los microcontroladores" . InfoWorld . Consultado el 15 de diciembre de 2016 .
- 1 2 3 4 5 6 7 8 9 "MicroPython - Python para microcontroladores" . micropython.org . Consultado el 12 de agosto de 2017 .
- ↑ "MicroPython en GitHub" . GitHub . 7 de febrero de 2022.
- ↑ "Micro Python: Python para microcontroladores" . Kickstarter . 26 de febrero de 2016. Consultado el 15 de diciembre de 2016 .
- ↑ Beningo, Jacob (11 de julio de 2016). "Del prototipo a la producción: MicroPython bajo el capó" . Red EDN . Recuperado el 15 de diciembre de 2016 .
- ↑ "MicroPython en Nucleo STM32, STM32F411CE y STM32F401CC: flasheo de firmware y herramientas básicas" . Mischianti . Agosto de 2023.
- ↑ "MicroPython con esp8266 y esp32: flasheo de firmware y programación con herramientas básicas" . Mischianti . 7 de junio de 2023.
- ↑ George, Damien P. "micropython/ports en master · micropython/micropython" . GitHub . Consultado el 22 de octubre de 2019 .
- ↑ Sokolovsky, Paul. "Awesome MicroPython" . GitHub . Consultado el 22 de octubre de 2019 .
- ↑ Williams, Alun (7 de julio de 2015). "Primera experiencia con la interfaz de usuario de BBC Micro-Bit" . ElectronicsWeekly.com . Consultado el 8 de julio de 2015 .
- ↑ Shawcroft, Scott (22 de mayo de 2019). "¡CircuitPython 4.0.1 lanzado!" . Blog de Adafruit . Adafruit Industries . Recuperado el 11 de junio de 2019 .
- ↑ "Previsualización del póster de RISC-V: 7.º taller de RISC-V" (PDF) . 28 de noviembre de 2017. Consultado el 17 de diciembre de 2018 .
- ↑ "LEGO lanza MicroPython para EV3 basado en ev3dev y Pybricks" . www.ev3dev.org . Consultado el 21 de abril de 2020 .
- ↑ "Conoce Raspberry Silicon: Raspberry Pi Pi Pi ya está a la venta por $4" . www.raspberrypi.org . 21 de enero de 2021. Consultado el 21 de enero de 2021 .
- 1 2 3 4 5 6 7 8 9 Alsabbagh, Marwan (2019). MicroPython Cookbook . Birmingham, Reino Unido: Packt Publishing .
- 1 2 3 Bruno, P. (25 de noviembre de 2021). "Una introducción a MicroPython" . All3DP . Recuperado el 9 de mayo de 2022 .
- 1 2 3 4 5 6 7 8 9 10 11 Bell, Charles (2017). MicroPython para el Internet de las cosas . Berkeley, EE. UU.: Apress .
- 1 2 3 4 5 6 7 Gaspar, G.; Kuba, P.; Flochova, J.; Dudak, J.; Florkova, Z. (2020). Desarrollo de aplicaciones IoT basadas en la plataforma MicroPython para la implementación de la Industria 4.0 . 19.ª Conferencia Internacional de Mecatrónica – Mechatronika (ME) 2020. pp. 1–7 .
- 1 2 Rembor, K. "The REPL" . ¡Bienvenido a CircuitPython! Sistema de aprendizaje de Adafruit . Recuperado el 9 de mayo de 2022 .
- ↑ "Diferencias entre MicroPython y CPython: la documentación más reciente de MicroPython" . docs.micropython.org .
- ↑ "MicroPython - Python para microcontroladores" . micropython.org .
- ↑ Wang, L.; Li, Y.; Zhang, H.; Han, Q.; Chen, L. (2021). Un ofuscador eficiente basado en flujo de control para el código de bytes de Micropython . 7.º Simposio Internacional sobre Fiabilidad de Sistemas y Software (ISSSR) de 2021. págs. 54–63 .
- ↑ Khamphroo, M.; Kwankeo, N.; Kaemarungsi, K.; Fukawa, K. (2017). Robot móvil educativo basado en MicroPython para el aprendizaje de la programación informática . 8.ª Conferencia Internacional de Tecnologías de la Información y la Comunicación para Sistemas Embebidos (IC-ICTES) de 2017. pp. 1– 6.
Enlaces externos
- Proyectos de alfabetización informática de la BBC
- Software libre programado en C
- Software para microcontroladores
- Python (lenguaje de programación)
- Software que utiliza la licencia MIT.