O que é MicroPython?

MicroPython implementa a linguagem de programação Python 3 para microcontroladores e microcomputadores. É uma solução de firmware projetada para implementar recursos de linguagem de alto nível do Python em plataformas de hardware de baixo nível. O firmware é otimizado para execução em ambientes restritos, permitindo ao mesmo tempo um pequeno subconjunto de bibliotecas padrão do Python 3 na programação incorporada.

O firmware MicroPython pode ser executado em uma área ocupada de 256 Kilobytes e 16 Kilobytes de RAM. MicroPython pode oferecer vários recursos de programação de alto nível, como números inteiros de precisão arbitrários, programação orientada a objetos, geradores, fechamentos, tratamento de exceções e compreensão de lista, mesmo com espaço de código e memória tão limitados. Normalmente, tais recursos não estão disponíveis na programação típica de microcontroladores. Todos esses recursos estão disponíveis com acesso ao hardware de baixo nível através do módulo de máquina do firmware MicroPython.

Além disso, o compilador MicroPython e o código de tempo de execução incluem um prompt interativo chamado REPL (Read-Eval-Print-Loop) que permite executar comandos de um computador desktop diretamente em uma plataforma incorporada. Os comandos usando REPL são executados via UART, onde a placa do microcontrolador alvo é conectada ao PC host via USB. Isso é útil em testes e depuração rápidos e em tempo real de sistemas embarcados.

Um dos notáveis ​​​​recursos de linguagem de alto nível permitidos no MicroPython é o multithreading. Normalmente, os bare metals não possuem recursos multithreading. O recurso multithreading do firmware MicroPython permite acelerar aplicativos incorporados, lidando com muitas tarefas incorporadas simultaneamente a partir de um único microcontrolador e permite que você pense nos loops de programação típicos.

MicroPython é código aberto
MicroPython está disponível para uso geral sob licença MIT. Muitos de seus módulos e bibliotecas também estão disponíveis sob licença MIT ou licença de código aberto semelhante. O MicroPython é gratuito para uso educacional e comercial. Qualquer pessoa pode usar e modificar o firmware. É um projeto de código aberto com código-fonte disponível no Github. Por ser um projeto de código aberto, o MicroPython está aberto a contribuições da comunidade. Se você estiver procurando por uma versão de firmware voltada para uma plataforma de hardware, microcontrolador, porta ou recurso específico, verifique o link oficial de download do MicroPython.

MicroPython x Python
MicroPython é em grande parte uma implementação do Python 3.4 com alguns recursos selecionados do Python 3.5 e superiores. Muitas bibliotecas padrão do CPython foram reescritas em C99 para serem executadas em ambientes restritos de bare metal (microcontroladores e microcomputadores sem qualquer sistema operacional) como parte do MicroPython. Essas bibliotecas Python padrão micro-formadas formam o núcleo do firmware MicroPython. Nem todas as bibliotecas padrão do Python foram reescritas para formar o MicroPython; MicroPython é um subconjunto do Python padrão. Inclui a reimplementação apenas das bibliotecas Python que podem ser úteis na programação de sistemas embarcados ou no aprimoramento programático de aplicativos embarcados.

MicroPython pode diferir em sintaxe e comportamento com operadores, funções e módulos equivalentes do Python padrão em muitos lugares. Muitos desses conflitos estão listados no link a seguir. Exceto por alguns conflitos listados no link mencionado acima, a maior parte da sintaxe e programação do MicroPython é compatível com a documentação padrão do Python.

Uma placa microcontroladora, RTOS ou sistema operacional compatível com MicroPython é chamada de porta MicroPython. É importante saber que muitos recursos do núcleo do MicroPython podem estar indisponíveis para uma determinada porta, ou seja, podem não ser suportados em um determinado microcontrolador, RTOS ou sistema operacional. Além disso, uma porta específica pode ter módulos e funcionalidades adicionais do MicroPython. Por exemplo, a versão MicroPython para ESP32 e ESP8266 possui bibliotecas e funções adicionais disponíveis para lidar com conexões de rede e suporta WebREPL (REPL sobre web sockets).

Placas suportadas e portas MicroPython
MicroPython está disponível para diversas plataformas comuns, incluindo x86, x86-64, ARM-Thumb e Xtensa. É extremamente rápido, com execução de código possível em velocidades de até 168 MHz. A placa microcontroladora oficial suportada pelo MicroPython é o pyboard. O pyboard possui os seguintes recursos importantes.

-> Microcontrolador STM32F405RG
-> CPU Cortex M4 de 168 MHz com ponto flutuante de hardware
-> ROM flash de 1024KiB
-> 192KiB de RAM
-> Slot para cartão Micro SD
-> Porta micro USB
-> Acelerômetro de 3 eixos integrado e RTC
-> 29GPIO; 3x ADC de 12 bits disponíveis em 16 pinos 4 com blindagem de aterramento analógico e 2x DAC de 12 bits disponíveis nos pinos X5 e X6.

Não apenas no pyboard, o MicroPython pode ser usado em muitas outras placas microcontroladoras da STMicroelectronics. Alguns dos microcontroladores da STMicroelectronics com suporte total ao firmware MicroPython estão listados abaixo.

-> Espruíno Pico (STM32F401CD)
-> PRETO STM32F407VET6 (STM32F407VE)
-> PRETO STM32F407ZET6 (STM32F407ZE)
-> PRETO STM32F407ZGT6 (STM32F407ZG)
-> FEZ Cerb40 II (STM32F405RG)
-> Módulo G30HDR (STM32F401RE)
-> Lêmure FEZ (STM32F401RE)
-> Netduino Plus 2 (STM32F405RG)
-> OpenMV (STM32F765)
-> Placa Core/Dev HY-STM32F4xxCore144 (STM32F407ZGT6)
-> HydraBus V1.0 (STM32F405RG)
-> Olimex STM32-405STK (STM32F405RG)
-> Olimex STM32-E407 (STM32F407ZG)
-> NÚCLEO F401RE (STM32F401RE)
-> Descoberta STM STM32F401 (STM32F401VC)
-> Descoberta STM STM32F407 (STM32F407VG)
-> Descoberta STM STM32F429 (STM32F429ZI)
-> Descoberta STM STM32F746G (STM32F746NG)
-> STM32F407VET6 Mini (STM32F407VE)

Além dos microcontroladores da STMicroelectronics listados acima, o MicroPython suporta as seguintes plataformas embarcadas notáveis.

-> ESP32
-> ESP8266
-> Micro:Bit
-> WiPy e CC3200
-> Pyboard Série D
-> Adolescente 3.X
-> Circuito Adafruit Playground Express
-> Arduino Devido
-> Cypress FreeSOC
-> Framboesa Pi Pico

Placas e portas MicroPython

Exemplos de placas e portas MicroPython

Zephyr é um dos sistemas operacionais de tempo real suportados pelo MicroPython. MicroPython pode ser executado como um thread em outros RTOS como pyRTOS e FreeRTOS.

Bibliotecas MicroPython
O núcleo do MicroPython inclui a implementação de várias bibliotecas padrão do Python 3.4, que consiste em um array, binascii, builtins, cmath, coleções, errno, gc, hashlib, heapq, io, json, math, os, random, re, select, socket, ssl, struct, sys, time, uasyncio, zlib e _thread. Outras bibliotecas incluídas no MicroPython são específicas de hardware. Elas são chamadas de microbibliotecas, incluindo Bluetooth, btree, cryptolib, framebuf, machine, micropython, neopixel, network e uctypes.

Bibliotecas específicas de porta
Diferentes placas de microcontroladores e RTOS oferecem recursos adicionais e operações principais do microcontrolador. MicroPython inclui bibliotecas específicas para placas microcontroladoras específicas e sistemas operacionais em tempo real para explorar seus recursos exclusivos. Por exemplo, a versão específica da porta do MicroPython para pyboard inclui bibliotecas como pyb, stm e lcd160cr. A versão específica da porta do MicroPython para WiPy inclui biblioteca wipy e classes adicionais como ADCChannel, TimerChannel, TimerWiPy e ADCWiPy. A versão específica da porta do MicroPython para placas ESP8266 e ESP32 inclui pacotes esp e esp32. O pacote rp2 está incluído adicionalmente na versão MicroPython para Raspberry Pi Pico. Um módulo adicional, zephyr, vem empacotado na versão MicroPython para Zephyr RTOS.

Bibliotecas Python adicionais de micropython-lib
Os módulos principais do MicroPython são chamados de umódulos na terminologia do MicroPython. Além das bibliotecas Python padrão selecionadas reescritas para formar o MicroPython principal, muitas outras bibliotecas Python padrão foram reescritas em projetos MicroPython. Essas bibliotecas podem ser acessadas como uma distribuição separada na forma de micropython-lib. A maioria dessas bibliotecas/módulos usa FFI para funcionalidades específicas do sistema operacional. É por isso que micropython-lib geralmente pode ser usado apenas em hosts com sistemas operacionais compatíveis com POSIX, como Linux, FreeBSD, Solaris, MacOS, etc. Ao contrário dos módulos MicroPython padrão, os módulos micropython-lib precisam ser instalados usando upip ou copiando pacotes descompactados manualmente.

Estendendo bibliotecas MicroPython
Também é possível estender a implementação de bibliotecas MicroPython integradas. Qualquer módulo definido pelo usuário denominado module.py substitui o umodule MicroPython padrão dentro de um pacote. O pacote ainda pode usar as funcionalidades integradas importando o módulo u diretamente. A maioria das bibliotecas em micropython-lib foram escritas da mesma maneira.

Conclusão
MicroPython pode ser a próxima revolução no mundo dos microcontroladores depois do Arduino. Em primeiro lugar, o MicroPython realizou a principal tarefa de introduzir o Python em microcontroladores e sistemas embarcados baseados em MCU. Python é o ponto único para o desenvolvimento de aplicativos em rede e apoiados por IA. O uso de multithreading em aplicações embarcadas será outro marco importante estabelecido pela iniciativa MicroPython.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.