# MicroPython

MicroPython és una implementació de programari d'un llenguatge de programació en gran part compatible amb Python 3, escrit en C, que està optimitzat per funcionar en un microcontrolador.
MicroPython consta d'un compilador de Python per a bytecode i un intèrpret d'execució d'aquest bytecode. Es presenta a l'usuari un indicador interactiu (el REPL) per executar les ordres compatibles immediatament. S'inclouen una selecció de biblioteques bàsiques de Python; MicroPython inclou mòduls que donen accés al programador a maquinari de baix nivell.
MicroPython té un assemblador en línia, que permet que el codi s'executi a tota velocitat, però no és portàtil a diferents microcontroladors.
El codi font del projecte està disponible a GitHub sota la llicència MIT.

## Història

MicroPython va ser creat originalment pel programador australià Damien George, després d'una campanya reeixida amb el suport de Kickstarter el 2013. Mentre que la campanya original de Kickstarter va llançar MicroPython amb una placa de desenvolupament alimentada per STM32F4 "pyboard", MicroPython admet diverses arquitectures basades en ARM. Els ports admesos a la línia principal són ARM Cortex-M (moltes plaques STM32, plaques RP2040, plaques TI CC3200/WiPy, plaques Teensy, sèrie Nordic nRF, SAMD21 i SAMD51), ESP8266, ESP32, PIC, Unix, Windows, Zephyr i JavaScript. A més, hi ha moltes forquilles per a una varietat de sistemes i plataformes de maquinari no compatibles amb la línia principal.
El 2016, es va crear una versió de MicroPython per a la BBC Micro Bit com a part de la contribució de la Python Software Foundation a l'associació Micro Bit amb la BBC.
El juliol de 2017, MicroPython es va bifurcar per crear CircuitPython, una versió de MicroPython amb èmfasi en l'educació i la facilitat d'ús. MicroPython i CircuitPython admeten conjunts de maquinari una mica diferents (per exemple, CircuitPython admet plaques Atmel SAM D21 i D51, però va deixar de suportar ESP8266). A partir de la versió 4.0, CircuitPython es basa en la versió 1.9.4 de MicroPython.
El 2017, Microsemi va crear un port MicroPython per a l'arquitectura RISC-V (RV32 i RV64).
L'abril de 2019, es va crear una versió de MicroPython per al Lego Mindstorms EV3.
El gener de 2021, es va crear un port MicroPython per a l'RP2040 (ARM Cortex-M0+, a Raspberry Pi Pico i altres).

## Característiques
### Capacitat per executar Python

MicroPython té la capacitat d'executar Python, la qual cosa permet als usuaris crear programes senzills i fàcils d'entendre. MicroPython admet moltes biblioteques estàndard de Python, suportant més del 80% de les característiques de les biblioteques més utilitzades de Python. MicroPython es va dissenyar específicament per donar suport a la bretxa de rendiment típica entre els microcontroladors i Python. El codi Python pot accedir directament i interactuar amb el maquinari, amb possibilitats de maquinari augmentades que no estan disponibles mitjançant una aplicació Python normal que s'executi en un sistema operatiu.

### Portabilitat del codi

La utilització de MicroPython de la tecnologia de la capa d'abstracció de maquinari (HAL) permet que el codi desenvolupat sigui portàtil entre diferents microcontroladors dins de la mateixa família o plataforma i en dispositius que suportin i puguin descarregar MicroPython. Sovint, els programes es desenvolupen i es posen a prova en microcontroladors d'alt rendiment i es distribueixen amb l'aplicació final utilitzada en microcontroladors de baix rendiment.

### Mòduls

MicroPython ofereix funcionalitat, un cop s'ha escrit el codi nou, per crear un mòdul congelat i utilitzar-lo com a biblioteca que pot formar part del firmware desenvolupat. Aquesta característica ajuda a evitar la descàrrega repetitiva del mateix codi provat, ja sense errors, en un entorn MicroPython. Aquest tipus de mòdul es desarà al directori de mòduls d'un microcontrolador per compilar-lo i carregar-lo al microcontrolador on la biblioteca estarà disponible mitjançant l'ordre d'importació de Python per utilitzar-la repetidament.

### Limitacions

Tot i que MicroPython implementa completament la versió del llenguatge Python 3.4 i bona part de la 3.5, no implementa totes les característiques del llenguatge introduïdes a partir de la 3.5, encara que algunes sintaxis noves a partir de la 3.6 i característiques més recents de versions posteriors, per exemple, a partir de la 3.8 (expressions d'assignació) i 3.9. Inclou un subconjunt de la biblioteca estàndard.
MicroPython té un suport de maquinari més limitat al mercat de microcontroladors que altres plataformes populars, com Arduino, amb un nombre menor d'opcions de microcontroladors que admeten l'idioma. MicroPython no inclou un entorn de desenvolupament integrat (IDE) ni un editor específic a diferència d'altres plataformes.

## Referències

* ↑ «MicroPython - Python for microcontrollers» (en anglès). micropython.org. [Consulta: 12 agost 2017].
* ↑ «MicroPython on GitHub» (en anglès). GitHub, 07-02-2022.
* ↑ «Micro Python: Python for microcontrollers» (en anglès). Kickstarter. [Consulta: 15 desembre 2016].
* ↑ «MicroPython on Nucleo STM32, STM32F411CE, and STM32F401CC: flashing firmware and basic tools» (en anglès). Mischianti, 01-08-2023.
* ↑ «MicroPython with esp8266 and esp32: flashing firmware and programming with basic tools» (en anglès). Mischianti, 07-06-2023.
* ↑ George, Damien P. «micropython/ports at master · micropython/micropython» (en anglès). GitHub. [Consulta: 22 octubre 2019].
* ↑ Sokolovsky, Paul. «Awesome MicroPython» (en anglès). GitHub. [Consulta: 22 octubre 2019].
* ↑ Williams, Alun. «Hands on with the BBC Micro-Bit user interface» (en anglès). ElectronicsWeekly.com, 07-07-2015. [Consulta: 8 juliol 2015].
* ↑ Shawcroft, Scott. «CircuitPython 4.0.1 released!» (en anglès). Adafruit Blog. Adafruit Industries, 22-05-2019. [Consulta: 11 juny 2019].
* ↑ «RISC-V Poster Preview — 7th RISC-V Workshop» (en anglès), 28-11-2017. [Consulta: 17 desembre 2018].
* ↑ «LEGO releases MicroPython for EV3 based on ev3dev and Pybricks» (en anglès). www.ev3dev.org. [Consulta: 21 abril 2020].
* ↑ «Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4» (en anglès). www.raspberrypi.org, 21-01-2021. [Consulta: 21 gener 2021].
* 1 2 Alsabbagh, Marwan. MicroPython Cookbook (en anglès). Birmingham, UK: Packt Publishing, 2019.
* ↑ Bruno, P. «An Introduction to MicroPython» (en anglès). All3DP, 25-11-2021. [Consulta: 9 maig 2022].
* ↑ Bell, Charles. MicroPython for the Internet of Things (en anglès). Berkeley, USA: Apress, 2017.
* ↑ «MicroPython differences from CPython — MicroPython latest documentation» (en anglès). docs.micropython.org.
* ↑ «MicroPython - Python for microcontrollers» (en anglès). micropython.org.
* 1 2 Bruno, P. «An Introduction to MicroPython» (en anglès). All3DP, 25-11-2021. [Consulta: 9 maig 2022].