Você dominou os blocos do EV3, mas sente que está preso numa caixa: o loop demora mais do que deveria, você não consegue usar bibliotecas externas e algumas lógicas ficam complicadas demais de montar visualmente. Programar o EV3 com Python resolve exatamente isso — e é mais acessível do que parece. Não é preciso reinstalar o EV3 nem comprar nada: é uma camada de software que roda no mesmo brick que você já tem.
O que é programar o EV3 com Python
Existem duas formas principais de usar Python no EV3: o ev3dev, um sistema operacional Linux completo que roda no brick a partir de um cartão microSD, e o MicroPython oficial da LEGO, disponível via app EV3 MicroPython no Visual Studio Code. Os dois permitem programar o EV3 em Python real — com variáveis, funções, classes, loops precisos e controle de tempo — em vez de blocos visuais.
A principal diferença entre os dois: o ev3dev é mais poderoso (acesso completo ao Linux, bibliotecas pip, SSH remoto), mas mais complexo de configurar. O MicroPython da LEGO é mais simples de instalar e já vem com bibliotecas específicas pro EV3, mas com menos flexibilidade. Para começar, o MicroPython da LEGO é o caminho mais direto.
Por que ir além dos blocos
O ambiente de blocos do EV3 tem limitações reais quando o projeto fica complexo. O tempo de ciclo do loop é variável e difícil de controlar precisamente — o que afeta diretamente o termo derivativo do controle PID. Lógicas com muitas condições aninhadas ficam visualmente confusas e difíceis de depurar. E não é possível usar bibliotecas externas para coisas como comunicação avançada, processamento de dados ou algoritmos mais sofisticados. Python resolve os três.
Como configurar o MicroPython da LEGO
Passo 1 — o que você vai precisar
Um cartão microSD de pelo menos 4GB (classe 10 ou superior), um leitor de cartão SD no computador, o Visual Studio Code instalado e a extensão LEGO MINDSTORMS EV3 MicroPython instalada dentro do VS Code.
Passo 2 — gravar o firmware no cartão
Baixe a imagem do firmware EV3 MicroPython no site da LEGO Education. Use o Etcher (gratuito, multiplataforma) pra gravar a imagem no cartão microSD. Esse processo apaga tudo que estiver no cartão — use um cartão dedicado, não o que você usa pra outras coisas.
Passo 3 — inicializar o brick com o novo firmware
Insira o cartão no brick com ele desligado. Ligue o brick — ele vai inicializar pelo cartão (não pela memória interna) e mostrar uma tela diferente do firmware original. O processo leva cerca de 1 minuto na primeira inicialização.
Passo 4 — conectar e escrever o primeiro programa
Conecte o brick via USB ao computador. No VS Code com a extensão instalada, crie um novo projeto EV3. O arquivo principal é o main.py. Escreva o primeiro programa, clique em Download and Run, e o código vai pro brick e executa.
Dois exemplos com números reais
Exemplo 1 — loop com tempo controlado
Nos blocos, o tempo de ciclo do loop principal varia entre 15ms e 50ms dependendo do que tem dentro. Em Python, você controla isso explicitamente:
import time
while True:
inicio = time.time()
# leitura e cálculo aqui
elapsed = time.time() - inicio
time.sleep(max(0, 0.020 - elapsed)) # garante ciclo de 20ms
Com ciclo fixo de 20ms, o termo derivativo do PID fica preciso — a diferença entre o erro atual e o anterior sempre representa exatamente 20ms de variação. Nos blocos, essa variação é imprevisível e o derivativo perde precisão.
Exemplo 2 — seguidor de linha proporcional em Python
O mesmo seguidor de linha que nos blocos usa vários blocos encadeados fica assim em Python:
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import Motor, ColorSensor
from pybricks.parameters import Port
from pybricks.tools import wait
ev3 = EV3Brick()
motor_esq = Motor(Port.B)
motor_dir = Motor(Port.C)
sensor = ColorSensor(Port.S3)
KP = 0.8
THRESHOLD = 43
VELOCIDADE_BASE = 300
while True:
erro = sensor.reflection() - THRESHOLD
correcao = KP * erro
motor_esq.run(VELOCIDADE_BASE + correcao)
motor_dir.run(VELOCIDADE_BASE - correcao)
wait(10)
Seis linhas de lógica real, legíveis, fáceis de ajustar. Mudar o Kp é trocar um número. Nos blocos, cada ajuste exige navegar pela estrutura visual.
Erros comuns ao começar com Python no EV3
- Usar o cartão microSD no brick com o firmware original ainda na memória. O brick inicializa pelo cartão quando ele está inserido — mas se você retirar o cartão, volta pro firmware original. Isso é uma feature, não um bug: você pode alternar entre os dois.
- Importar módulos que não existem no MicroPython do EV3. MicroPython não é Python completo — algumas bibliotecas padrão do Python não estão disponíveis. Verifique a documentação da extensão antes de importar algo que funcionaria no Python do computador.
- Não tratar exceções de sensor. Em Python, se o sensor não está conectado ou está na porta errada, o programa lança uma exceção e trava. Nos blocos, o comportamento é mais tolerante. Adicione verificações ou trate exceções nos pontos críticos.
- Loop sem
wait(). Um loop while True sem nenhuma pausa roda tão rápido quanto o processador permite, o que pode travar o brick ou gerar leituras inconsistentes. Adicione sempre umwait(10)no mínimo.
Onde isso se conecta no resto
Python no EV3 é o nível avançado de programar o EV3 — o passo depois de dominar os blocos. É especialmente útil pra implementar controle PID com ciclo de tempo preciso, e pra projetos que usam os sensores do EV3 com lógica mais complexa, como o robô de sumô com múltiplas estratégias. O panorama completo está no guia de robótica com LEGO EV3.
Perguntas frequentes
Preciso saber Python antes de começar?
O básico ajuda muito: variáveis, loops, condições e funções. Se você nunca viu Python, vale fazer um tutorial de 2 a 3 horas antes de começar — o investimento compensa rápido porque a lógica dos blocos que você já sabe transfere diretamente.
O firmware MicroPython apaga o firmware original do EV3?
Não. O firmware original fica na memória interna do brick. O MicroPython roda pelo cartão microSD. Retire o cartão e o brick volta ao firmware original normalmente.
Posso usar pip pra instalar bibliotecas?
No MicroPython da LEGO, não — o ambiente é fechado. No ev3dev, sim: você tem acesso a pip e pode instalar bibliotecas Python padrão. Essa é uma das principais vantagens do ev3dev sobre o MicroPython da LEGO.
Python é mais rápido que os blocos no EV3?
Em termos de execução, a diferença não é dramática — o gargalo é o hardware, não a linguagem. A vantagem real do Python é o controle de tempo de ciclo e a legibilidade do código, não a velocidade bruta.
Qual editor usar pra programar o EV3 em Python?
O Visual Studio Code com a extensão LEGO MINDSTORMS EV3 MicroPython é o recomendado oficial. Para ev3dev, qualquer editor funciona — você transfere os arquivos via SSH ou cartão SD.
Pra fechar
Ir pra Python no EV3 não é abandonar os blocos — é adicionar uma ferramenta quando o projeto pede mais do que os blocos entregam. E quando você escreve seis linhas de Python que fazem o que levaria vinte blocos pra fazer, e ainda consegue ajustar o Kp sem navegar por uma estrutura visual complexa, fica claro por que essa transição vale o esforço. O brick é o mesmo. O que muda é o quanto você consegue extrair dele.