Este é o projeto MicroPython, que visa colocar uma implementação do Python 3.x em microcontroladores e pequenos sistemas embarcados. Você pode encontrar o site oficial em micropython.org.
AVISO: este projeto está em fase beta e está sujeito a alterações na base de código, incluindo alterações de nome em todo o projeto e alterações de API.
MicroPython implementa toda a sintaxe do Python 3.4 (incluindo exceções, with
, yield from
, etc., e adicionalmente palavras-chave async
/ await
do Python 3.5 e alguns recursos selecionados de versões posteriores). Os seguintes tipos de dados principais são fornecidos: str
(incluindo suporte básico a Unicode), bytes
, bytearray
, tuple
, list
, dict
, set
, frozenset
, array.array
, collections.namedtuple
, classes e instâncias. Os módulos integrados incluem os
, sys
, time
, re
e struct
, etc. Algumas portas têm suporte para módulo _thread
(multithreading), socket
e ssl
para rede e asyncio
. Observe que apenas um subconjunto de funcionalidades do Python 3 é implementado para os tipos de dados e módulos.
O MicroPython pode executar scripts em formato de fonte textual (arquivos .py) ou a partir de bytecode pré-compilado (arquivos .mpy), em ambos os casos a partir de um sistema de arquivos no dispositivo ou "congelado" no executável do MicroPython.
MicroPython também fornece um conjunto de módulos específicos do MicroPython para acessar funcionalidades e periféricos específicos de hardware, como GPIO, Timers, ADC, DAC, PWM, SPI, I2C, CAN, Bluetooth e USB.
Consulte a documentação on-line para obter referência da API e informações sobre como usar o MicroPython e informações sobre como ele é implementado.
Usamos o GitHub Discussions como nosso fórum e o Discord para bate-papo. Esses são ótimos lugares para fazer perguntas e conselhos da comunidade ou para discutir seus projetos baseados em MicroPython.
Para bugs e solicitações de recursos, levante um problema e siga os modelos lá.
Para obter informações sobre o pyboard MicroPython, a placa com suporte oficial da campanha original do Kickstarter, consulte os esquemas, pinagens e documentação.
MicroPython é um projeto de código aberto e aceita contribuições. Para ser produtivo, certifique-se de seguir as Diretrizes para Colaboradores e as Convenções do Código. Observe que o MicroPython é licenciado sob a licença MIT e todas as contribuições devem seguir esta licença.
Este repositório contém os seguintes componentes:
py/ – a implementação central do Python, incluindo compilador, tempo de execução e biblioteca principal.
mpy-cross/ - o compilador cruzado MicroPython que é usado para transformar scripts em bytecode pré-compilado.
ports/ – código específico da plataforma para as diversas portas e arquiteturas nas quais o MicroPython é executado.
lib/ -- submódulos para dependências externas.
testes/ -- estrutura de teste e scripts de teste.
docs/ -- documentação do usuário no formato Sphinx reStructuredText. Isso é usado para gerar a documentação on-line.
extmod/ -- módulos adicionais (não essenciais) implementados em C.
tools/ -- várias ferramentas, incluindo o módulo pyboard.py.
exemplos/ - alguns exemplos de scripts Python.
"make" é usado para construir os componentes, ou "gmake" em sistemas baseados em BSD. Você também precisará de bash, gcc e Python 3.3+ disponíveis como o comando python3
(se o seu sistema tiver apenas Python 2.7, invoque make com a opção adicional PYTHON=python2
). Algumas portas (rp2 e esp32) também usam CMake.
MicroPython é executado em uma ampla variedade de microcontroladores, bem como em sistemas do tipo Unix (incluindo Linux, BSD, macOS, WSL) e Windows.
Os alvos do microcontrolador podem ser tão pequenos quanto 256kiB de flash + 16kiB de RAM, embora dispositivos com pelo menos 512kiB de flash + 128kiB de RAM permitam uma experiência muito mais completa.
As portas Unix e Windows permitem o desenvolvimento e teste do próprio MicroPython, além de fornecer uma alternativa leve ao CPython nessas plataformas (em particular em sistemas Linux embarcados).
A porta "mínima" fornece um exemplo de uma porta MicroPython muito básica e pode ser compilada tanto como um binário Linux independente quanto para ARM Cortex M4. Comece com isso se quiser portar o MicroPython para outro microcontrolador. Além disso, a porta "bare-arm" é um exemplo de configuração mínima absoluta e é usada para controlar o tamanho do código do tempo de execução principal e da VM.
Além disso, as seguintes portas são fornecidas neste repositório:
cc3200 - Texas Instruments CC3200 (incluindo PyCom WiPy).
esp32 - SoC Expressif ESP32 (incluindo ESP32S2, ESP32S3, ESP32C3, ESP32C6).
esp8266 -- SoC expresso ESP8266.
mimxrt -- NXP m.iMX RT (incluindo Teensy 4.x).
nrf -- Semicondutor Nórdico nRF51 e nRF52.
pic16bit - Microchip PIC de 16 bits.
powerpc - IBM PowerPC (incluindo Microwatt)
qemu -- alvo emulado baseado em QEMU (para teste)
renesas-ra -- Família Renesas RA.
rp2 – Raspberry Pi RP2040 (incluindo Pico e Pico W).
samd -- Microchip (anteriormente Atmel) SAMD21 e SAMD51.
stm32 -- Família STMicroelectronics STM32 (incluindo F0, F4, F7, G0, G4, H7, L0, L4, WB)
webassembly – Porta Emscripten direcionada a navegadores e NodeJS.
zéfiro -- Zéfiro RTOS.
A maioria das portas exige que o compilador cruzado MicroPython seja construído primeiro. Este programa, chamado mpy-cross, é usado para pré-compilar scripts Python em arquivos .mpy que podem então ser incluídos (congelados) no firmware/executável de uma porta. Para construir o uso do mpy-cross:
$ cd mpy-cross $ make
A VM e o tempo de execução principais do MicroPython não têm dependências externas, mas uma determinada porta pode depender de drivers de terceiros ou HALs de fornecedores. Este repositório inclui vários submódulos vinculados a essas dependências externas. Antes de compilar uma determinada porta, use
$ cd ports/name $ make submodules
para garantir que todos os submódulos necessários sejam inicializados.