stringtranslate.com

MicroPython

MicroPython es una implementación de software de un lenguaje de programación en gran medida 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 bytecode y un intérprete de tiempo de ejecución de ese bytecode. Se presenta al usuario un mensaje interactivo (el REPL ) para ejecutar comandos compatibles de inmediato. Se incluye una selección de bibliotecas básicas de Python; MicroPython incluye módulos que le dan al programador acceso a hardware de bajo nivel. [4]

MicroPython tiene un ensamblador en línea 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

Una calculadora Casio FX-9860GIII que se presentó en 2020 y venía con MicroPython incorporado

MicroPython fue creado originalmente por el programador australiano Damien George, después de una exitosa campaña respaldada por Kickstarter en 2013. [6] La campaña original de Kickstarter lanzó MicroPython con una placa de desarrollo "pyboard" impulsada por STM32F4 . Mientras tanto, MicroPython se ha desarrollado para soportar una serie de arquitecturas basadas en ARM . [7] Los puertos compatibles con la línea 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, hay muchas bifurcaciones para una variedad de sistemas y plataformas de hardware que no son compatibles con la línea 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 ligeramente diferentes (por ejemplo, CircuitPython admite placas Atmel SAM D21 y D51, pero abandonó la compatibilidad con 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 creó un puerto 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ó un puerto 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, admitiendo más del 80% de las características de las bibliotecas más utilizadas de Python. [17] MicroPython fue diseñado específicamente para soportar 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 de 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 portátil entre diferentes microcontroladores dentro 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 utilizada en microcontroladores de menor rendimiento. [20]

Módulos

MicroPython ofrece la funcionalidad, una vez que se ha escrito un nuevo código, de crear un módulo congelado y usarlo como una biblioteca que puede ser parte del firmware desarrollado . Esta característica ayuda a evitar la descarga repetitiva del mismo código probado, ya libre de errores, en un entorno MicroPython. Este tipo de módulo se guardará en el directorio de módulos de un microcontrolador para compilarlo y cargarlo en el microcontrolador, donde la biblioteca estará disponible mediante el comando de importación de Python para usarse repetidamente. [20]

Bucle de lectura-evaluación-impresión

El bucle de lectura-evaluación-impresión (REPL) permite a un desarrollador ingresar líneas de código individuales y ejecutarlas inmediatamente en una terminal . [21] Los sistemas basados ​​en Linux y macOS tienen emuladores de terminal que se pueden usar para crear una conexión directa al REPL de un dispositivo MicroPython mediante una conexión USB en serie . El REPL ayuda con la prueba inmediata de partes de una aplicación , ya que cada parte del código se puede ejecutar y los resultados se pueden examinar visualmente. Una vez que se cargan diferentes partes del código en el REPL, se pueden usar características adicionales del REPL para experimentar con la funcionalidad de ese código. [17]

Comandos REPL útiles (una vez conectado a una consola serial): [21]

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 en adelante, [22] aunque sí algunas sintaxis nuevas 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 una menor cantidad de opciones de microcontroladores que admiten el lenguaje. [18] MicroPython no incluye un entorno de desarrollo integrado (IDE) o un editor específico a diferencia de otras plataformas. [18]

Sintaxis y semántica

La sintaxis de MicroPython se adoptó de Python, debido a su estilo claro y fácil de entender y su potencia. [24] A diferencia de la mayoría de los otros lenguajes de programación, se utiliza menos puntuación y menos maquinaciones sintácticas para priorizar la legibilidad. [17]

Bloques de código

MicroPython adopta el estilo de bloques de código de Python, con código específico para una función , condición o bucle en particular siendo sangrado. [17] Esto difiere de la mayoría de los otros lenguajes que normalmente usan símbolos o palabras clave para delimitar bloques. [17] Esto ayuda con la legibilidad del código de MicroPython ya que la estructura visual refleja la estructura semántica. Esta característica clave es simple pero importante ya que la sangría mal utilizada puede resultar en la ejecución del código bajo una condición incorrecta o un error general del intérprete . [17]

Los dos puntos (:) son el símbolo clave utilizado para indicar el final de una declaración de condición. [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 ágil 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 distinguir entre las dos. Las bibliotecas de MicroPython son más pequeñas y se han eliminado o modificado funciones menos populares para ahorrar memoria . [19]

Los tres tipos de bibliotecas en MicroPython: [19]

MicroPython es altamente personalizable y configurable, con un lenguaje diferente para cada placa ( microcontrolador ) y la disponibilidad de bibliotecas puede variar. Algunas funciones y clases de un módulo o de todo el módulo pueden no estar disponibles o estar alteradas. [19]

Bibliotecas MicroPython personalizadas

Cuando los desarrolladores comienzan a crear una nueva aplicación, es posible que las bibliotecas y los controladores estándar de MicroPython no cumplan con los requisitos, ya que no cuentan con suficientes operaciones o cálculos. De manera similar a Python, existe la posibilidad de ampliar la funcionalidad de MicroPython con bibliotecas personalizadas que amplían la capacidad de las bibliotecas y el firmware existentes. [20]

En MicroPython, los archivos que terminan con .py tienen preferencia sobre otros alias de biblioteca, lo que permite a los usuarios ampliar el uso y la implementación de las bibliotecas existentes. [19]

Soporte de hardware

A medida que la implementación y la popularidad de MicroPython siguen creciendo, más placas tienen la capacidad de ejecutar MicroPython. 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 que las interacciones entre el hardware del microcontrolador y las aplicaciones sean simples, lo que permite el acceso a una variedad de funciones mientras se trabaja en un entorno con recursos limitados, con un alto nivel de capacidad de respuesta. [17]

Los dos tipos de placas utilizadas para ejecutar MicroPython: [19]

Ejecutando código

Para mover un programa a una placa MicroPython, crea un archivo y cópialo en el microcontrolador para ejecutarlo. Con el hardware conectado a un dispositivo, como una computadora , la unidad flash de la placa aparecerá en el dispositivo, lo que permitirá mover archivos a la unidad flash. Habrá dos archivos de Python existentes, boot.py y main.py que normalmente no se modifican, main.py puede modificarse si desea ejecutar el programa cada vez que se inicia el microcontrolador ; de lo contrario, los programas se ejecutarán utilizando la consola REPL. [19]

Tablero de python

Pyboard es la placa de microcontrolador oficial de MicroPython que es totalmente compatible con las funciones de software de MicroPython. Las funciones de hardware de Pyboard incluyen: [4]

El proceso de arranque

La placa contiene una unidad interna (sistema de archivos) llamada /flash que se almacena dentro de la memoria flash de la placa; además, se puede insertar una tarjeta microSD en una ranura y se puede acceder a ella a través de /sd. Cuando se inicia, una placa debe seleccionar un sistema de archivos desde el que iniciar, ya sea /flash o /sd, y el directorio actual debe configurarse como /flash o /sd. De manera predeterminada, si se inserta una tarjeta SD, se utilizará /sd; si no, se utilizará /flash. Si es necesario, se puede evitar el uso de la tarjeta SD para el proceso de arranque creando un archivo vacío llamado /flash/SKIPSD que permanecerá en la placa y existirá cuando se inicie la placa y omitirá la tarjeta SD para el proceso de arranque. [4]

Modos de arranque

Cuando el pyboard se enciende normalmente o se presiona el botón de reinicio, entonces el pyboard se inicia en un modo estándar, lo que significa que se ejecuta el archivo boot.py, luego se configura el USB y finalmente se ejecutará el programa Python. [4]

Existe la posibilidad de anular la secuencia de arranque estándar manteniendo pulsado el interruptor de usuario mientras la placa se encuentra en proceso de arranque y, a continuación, pulsando el botón de reinicio mientras se mantiene pulsado el interruptor de usuario. Los LED de la placa pyboard cambiarán de modo y, una vez que hayan alcanzado el modo deseado por el usuario, se puede soltar el interruptor de usuario y la placa arrancará en el modo específico. [4]

Los modos de arranque son: [4]

Errores

Ejemplos de programación[19]

Programa Hola mundo :

# imprimir en la consola serialimprimir ( '¡Hola, mundo!' )

Importar + encender un LED:

importar  pyb# Encender el LEDpyb . LED ( 1 ) . encendido ()

Lectura de un archivo + bucle:

importar  sistema operativo#abrir y leer un archivocon  abierto ( '/readme.txt' )  como  f :imprimir ( f . leer ())

Código de bytes

MicroPython incluye un compilador cruzado que genera bytecode de MicroPython (extensión de archivo .mpy ). El código Python se puede compilar en bytecode directamente en un microcontrolador o se puede precompilar en otro lugar.

El firmware de MicroPython se puede construir sin el compilador, dejando solo la máquina virtual que puede ejecutar los programas mpy precompilados .

Implementación y usos

MicroPython se utiliza a través de firmware que se carga mediante un software estándar en un microcontrolador particular en la memoria flash y se comunica mediante una aplicación de terminal cargada en una computadora que emula una interfaz serial. [20]

Los principales usos de MicroPython se pueden generalizar en tres categorías: [20]

La implementación de MicroPython puede variar según la disponibilidad de bibliotecas estándar y de soporte y el tamaño de la memoria flash y RAM del microcontrolador. [20]

Véase también

Referencias

  1. ^ George, Damien P. (4 de mayo de 2014). "micropython/LICENSE at master · micropython/micropython". GitHub . Consultado el 11 de febrero de 2017 .
  2. ^ Venkataramanan, Madhumita (6 de diciembre de 2013). "Micro Python: más potente que Arduino, más simple que Raspberry Pi". Wired . Consultado el 15 de diciembre de 2016 .
  3. ^ Yegulalp, Serdar (5 de julio de 2014). «Los diminutos circuitos de Micro Python: una variante de Python destinada a los microcontroladores». InfoWorld . Consultado el 15 de diciembre de 2016 .
  4. ^ abcdefghi «MicroPython: Python para microcontroladores». micropython.org . Consultado el 12 de agosto de 2017 .
  5. ^ "MicroPython en GitHub". GitHub . 7 de febrero de 2022.
  6. ^ "Micro Python: Python para microcontroladores". Kickstarter . Consultado el 15 de diciembre de 2016 .
  7. ^ Beningo, Jacob (11 de julio de 2016). "Del prototipo a la producción: MicroPython bajo el capó". Red EDN . Consultado el 15 de diciembre de 2016 .
  8. ^ "MicroPython en Nucleo STM32, STM32F411CE y STM32F401CC: actualización de firmware y herramientas básicas". Mischianti . Agosto de 2023.
  9. ^ "MicroPython con esp8266 y esp32: flasheo de firmware y programación con herramientas básicas". Mischianti . 7 de junio de 2023.
  10. ^ George, Damien P. "micropython/ports at master · micropython/micropython". GitHub . Consultado el 22 de octubre de 2019 .
  11. ^ Sokolovsky, Paul. "Awesome MicroPython". GitHub . Consultado el 22 de octubre de 2019 .
  12. ^ Williams, Alun (7 de julio de 2015). "Práctica práctica con la interfaz de usuario BBC Micro-Bit". ElectronicsWeekly.com . Consultado el 8 de julio de 2015 .
  13. ^ Shawcroft, Scott (22 de mayo de 2019). «¡Se lanzó CircuitPython 4.0.1!». Blog de Adafruit . Adafruit Industries . Consultado el 11 de junio de 2019 .
  14. ^ "Vista previa del póster de RISC-V: séptimo taller de RISC-V" (PDF) . 28 de noviembre de 2017 . Consultado el 17 de diciembre de 2018 .
  15. ^ "LEGO lanza MicroPython para EV3 basado en ev3dev y Pybricks". www.ev3dev.org . Consultado el 21 de abril de 2020 .
  16. ^ "Conoce Raspberry Silicon: Raspberry Pi Pico ya está a la venta por 4 dólares". www.raspberrypi.org . 21 de enero de 2021 . Consultado el 21 de enero de 2021 .
  17. ^ abcdefghi Alsabbagh, Marwan (2019). Libro de recetas de MicroPython . Birmingham, Reino Unido: Packt Publishing .
  18. ^ abc Bruno, P. (25 de noviembre de 2021). "Introducción a MicroPython". All3DP . Consultado el 9 de mayo de 2022 .
  19. ^ abcdefghijk Bell, Charles (2017). MicroPython para la Internet de las cosas . Berkeley, EE. UU.: Apress .
  20. ^ abcdefg 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 . 2020 19.ª Conferencia Internacional sobre Mecatrónica – Mechatronika (ME). págs. 1–7.
  21. ^ ab Rembor, K. "El REPL". ¡Bienvenido a CircuitPython! . Sistema de aprendizaje de Adafruit . Consultado el 9 de mayo de 2022 .
  22. ^ "Diferencias entre MicroPython y CPython — Documentación más reciente de MicroPython". docs.micropython.org .
  23. ^ "MicroPython - Python para microcontroladores". micropython.org .
  24. ^ Wang, L.; Li, Y.; Zhang, H.; Han, Q.; Chen, L. (2021). Un ofuscador eficiente basado en flujo de control para código de bytes de Micropython . 2021 7.º Simposio internacional sobre confiabilidad de sistemas y software (ISSSR). págs. 54–63.
  25. ^ Khamphroo, M.; Kwankeo, N.; Kaemarungsi, K.; Fukawa, K. (2017). Robot móvil educativo basado en MicroPython para el aprendizaje de codificación informática . 2017 8.ª Conferencia internacional sobre tecnología de la información y la comunicación para sistemas integrados (IC-ICTES). págs. 1–6.

Enlaces externos