Robótica EV3
Mindstorms
Tudo que você precisa saber sobre o kit de robótica mais famoso do mundo: sensores, motores, portas e linguagens de programação.
Sensores EV3
O EV3 suporta sensores nas 4 portas de entrada (1–4) usando conectores RJ12. Cada sensor coleta dados do ambiente para que o robô possa reagir ao mundo real.
Sensor de Toque
Detecta se o botão foi pressionado, solto ou pressionado e solto (colisão). Ideal para detecção de obstáculos e limites de movimento.
Sensor de Cor
Detecta cores, mede intensidade de luz refletida e luz ambiente. Opera em 3 modos: cor, luz refletida e luz ambiente.
Sensor Ultrassônico
Mede distâncias emitindo ondas sonoras de alta frequência (40 kHz). Pode detectar presença de objetos em modo de escuta.
Sensor Giroscópio
Mede a taxa de rotação e o ângulo acumulado em um único eixo. Essencial para curvas precisas e controle de equilíbrio.
Sensor Infravermelho
Mede distância aproximada de objetos e detecta sinais do controle remoto EV3. Opera em 3 modos distintos.
Sensor de Temperatura
Mede temperatura em Celsius ou Fahrenheit. Compatível com EV3 via portas de entrada. Ideal para projetos científicos e monitoramento ambiental.
Sensor de Som
Mede intensidade sonora em decibéis. Pode reagir a palmas, vozes e ruídos do ambiente, funcionando como ativador por som.
Motores EV3
Os motores conectam-se às portas de saída (A–D) e possuem encoder rotativo integrado para leitura de posição e velocidade com precisão de 1°.
Motor Grande EV3
Motor de alto torque projetado para tracionamento e movimentos de força. Encoder rotativo integrado com resolução de 1° para controle preciso de posição.
Motor Médio EV3
Motor mais leve e compacto, com maior velocidade e tempo de resposta mais rápido. Ideal para mecanismos onde o espaço e a velocidade importam mais que o torque.
Motor Interativo NXT
Motor da geração anterior (NXT), totalmente compatível com o EV3. Encoder integrado com resolução similar. Funciona em todas as portas de saída do EV3.
Portas do EV3 Brick
O Brick EV3 possui 4 portas de entrada para sensores e 4 portas de saída para motores, além de conectividade USB, Bluetooth, Wi-Fi e slot microSD.
Portas de Entrada (Sensores)
Sensor
Sensor
Sensor
Sensor
EV3 Brick
Portas de Saída (Motores)
Motor
Motor
Motor
Motor
| Porta | Tipo | Uso | Protocolo | Voltagem |
|---|---|---|---|---|
| 1 | Entrada | Qualquer sensor EV3/NXT | IIC / UART / Analógico |
4.3 V |
| 2 | Entrada | Qualquer sensor EV3/NXT | IIC / UART / Analógico |
4.3 V |
| 3 | Entrada | Qualquer sensor EV3/NXT | IIC / UART / Analógico |
4.3 V |
| 4 | Entrada | Qualquer sensor EV3/NXT | IIC / UART / Analógico |
4.3 V |
| A | Saída | Motor Grande / Médio / NXT | PWM + Encoder |
Bateria (9V) |
| B | Saída | Motor Grande / Médio / NXT | PWM + Encoder |
Bateria (9V) |
| C | Saída | Motor Grande / Médio / NXT | PWM + Encoder |
Bateria (9V) |
| D | Saída | Motor Grande / Médio / NXT | PWM + Encoder |
Bateria (9V) |
Linguagens de Programação
O EV3 pode ser programado com diversas linguagens e ambientes, do visual por blocos ao Python avançado. Escolha o nível ideal para seu projeto.
// EV3-G usa programação visual por blocos — sem código textual. // Estrutura equivalente em pseudocódigo: INÍCIO DO PROGRAMA Motor[A].Ligar(75) // Liga Motor A a 75% de potência Motor[B].Ligar(75) // Liga Motor B a 75% de potência ESPERAR Sensor[1].Toque.Pressionado Motor[A].Parar() Motor[B].Parar() LOOP: SE Sensor[3].Cor == VERMELHO: Motor[A].Girar(-75, 360) // Vira à esquerda 1 volta SENÃO SE Sensor[3].Cor == VERDE: Motor[A].Girar(75, 360) // Continua reto FIM SE FIM LOOP FIM DO PROGRAMA
# EV3 Classroom — Modo Python (embutido na interface) from mindstorms import MSHub, Motor, MotorPair from mindstorms.control import wait_for_seconds from mindstorms.operator import greater_than hub = MSHub() motor_esq = Motor('B') motor_dir = Motor('C') par = MotorPair('B', 'C') # Andar para frente por 3 segundos par.start(50) wait_for_seconds(3) par.stop() # Tocar som hub.speaker.beep(60, 0.5)
// Scratch 3 — Blocos visuais (representação textual) // Na interface real, cada linha é um bloco colorido quando [bandeira verde] clicado ligar motor [A v] direção [este jeito v] ligar motor [B v] direção [este jeito v] esperar até que <sensor de toque [1 v] pressionado?> parar motor [A v] parar motor [B v] reproduzir som [Meow v] e esperar para sempre se <cor do sensor [3 v] = [vermelho v]> então girar motor [A v] por (360) graus a (50) % de potência fim fim
#!/usr/bin/env pybricks-micropython from pybricks.hubs import EV3Brick from pybricks.ev3devices import Motor, TouchSensor, ColorSensor, UltrasonicSensor from pybricks.parameters import Port, Direction, Color from pybricks.tools import wait from pybricks.robotics import DriveBase # Inicializar hardware ev3 = EV3Brick() motor_esq = Motor(Port.B) motor_dir = Motor(Port.C, positive_direction=Direction.COUNTERCLOCKWISE) sensor_toque = TouchSensor(Port.S1) sensor_cor = ColorSensor(Port.S3) sensor_us = UltrasonicSensor(Port.S4) # Criar robô com base de tração diferencial robo = DriveBase(motor_esq, motor_dir, wheel_diameter=56, axle_track=114) ev3.speaker.beep() # Loop principal while True: distancia = sensor_us.distance() if distancia < 200: # menos de 20 cm robo.stop() ev3.light.on(Color.RED) robo.turn(90) # Girar 90° else: robo.drive(200, 0) # 200 mm/s, reto ev3.light.on(Color.GREEN)
#!/usr/bin/env python3 # ev3dev2 — Python completo no EV3 from ev3dev2.motor import LargeMotor, MediumMotor, MoveSteering, OUTPUT_A, OUTPUT_B from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4 from ev3dev2.sensor.lego import TouchSensor, ColorSensor, UltrasonicSensor from ev3dev2.sound import Sound from ev3dev2.led import Leds import time # Inicialização m_dir = MoveSteering(OUTPUT_A, OUTPUT_B) sensor_us = UltrasonicSensor(INPUT_4) sensor_cor = ColorSensor(INPUT_3) sound = Sound() leds = Leds() sensor_us.MODE_US_DIST_CM = 'US-DIST-CM' sensor_cor.mode = 'COL-COLOR' sound.speak('Robô iniciado') leds.set_color('LEFT', 'GREEN') # Seguidor de linha com threshold THRESHOLD = 50 while True: luz = sensor_cor.reflected_light_intensity correcao = (luz - THRESHOLD) * 0.5 m_dir.on(int(correcao), 30) time.sleep(0.01)
// leJOS EV3 — Java no hardware EV3 import lejos.hardware.motor.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.hardware.port.SensorPort; import lejos.hardware.sensor.EV3UltrasonicSensor; import lejos.hardware.sensor.EV3TouchSensor; import lejos.robotics.SampleProvider; public class RoboEV3 { public static void main(String[] args) { EV3LargeRegulatedMotor motorA = new EV3LargeRegulatedMotor(MotorPort.A); EV3LargeRegulatedMotor motorB = new EV3LargeRegulatedMotor(MotorPort.B); EV3UltrasonicSensor ultrasonico = new EV3UltrasonicSensor(SensorPort.S4); SampleProvider distancia = ultrasonico.getDistanceMode(); float[] amostra = new float[distancia.sampleSize()]; motorA.setSpeed(400); motorB.setSpeed(400); motorA.forward(); motorB.forward(); while (true) { distancia.fetchSample(amostra, 0); if (amostra[0] < 0.2f) { // menos de 20 cm motorA.stop(true); motorB.stop(true); motorA.rotate(-360); // Recuar motorA.forward(); motorB.forward(); } } } }
// RobotC — C para EV3 (competições VEX/FRC style) // Configuração dos sensores #pragma config(Sensor, S1, sensorToque, sensorEV3_Touch) #pragma config(Sensor, S3, sensorCor, sensorEV3_Color) #pragma config(Sensor, S4, sensorUS, sensorEV3_Ultrasonic) #pragma config(Motor, motorA, motorEsq, tmotorEV3_Large, PIDControl, encoder) #pragma config(Motor, motorB, motorDir, tmotorEV3_Large, PIDControl, encoder) task main() { // Andar para frente setMotorSpeed(motorEsq, 75); setMotorSpeed(motorDir, 75); // Esperar obstáculo while (getUSDistance(sensorUS) > 20) { sleep(10); } // Parar e girar setMotorSpeed(motorEsq, 0); setMotorSpeed(motorDir, 0); sleep(500); setMotorSpeed(motorEsq, -50); setMotorSpeed(motorDir, 50); sleep(800); // Girar ~90° setMotorSpeed(motorEsq, 75); setMotorSpeed(motorDir, 75); }
Comparação das Linguagens
| Linguagem | Tipo | Nível | Gratuito | Sistema | Melhor para |
|---|---|---|---|---|---|
| EV3-G | Visual / Blocos | Iniciante | Sim | Win / Mac | Educação, FLL |
| EV3 Classroom | Blocos + Python | Iniciante | Sim | Win/Mac/iPad | Escola, iniciantes |
| Scratch 3 | Visual / Blocos | Iniciante | Sim | Web | Crianças 6–12 anos |
| MicroPython | Textual | Intermediário | Sim | Pybricks | Programação Python real |
| Python (ev3dev) | Textual | Avançado | Sim | Linux | Projetos complexos |
| Java (leJOS) | Textual / OOP | Avançado | Sim | leJOS JVM | OOP, universidades |
| C/C++ | Textual / Baixo nível | Especialista | Parcial | RobotC / ev3dev | Performance máxima |
Competições de Robótica
As competições de robótica com EV3 desenvolvem raciocínio lógico, trabalho em equipe, programação e engenharia. Conheça as principais do mundo e do Brasil.
FIRST Lego League
A maior competição de robótica do mundo
Competição anual com tema diferente a cada temporada. As equipes constroem um robô autônomo com LEGO e também desenvolvem um projeto de inovação social relacionado ao tema.
World Robot Olympiad
Olimpíada Mundial de Robótica
Realizada em mais de 85 países, a WRO tem categorias Regular (missões com LEGO), Open (robô criativo) e Advanced Robotics Challenge para equipes mais experientes.
OBR — Olimpíada Brasileira de Robótica
Principal competição nacional
Organizada pelo MEC e MCT, a OBR possui modalidade Prática (robô segue linha e faz missões de resgate) e Teórica (prova de conhecimentos). Classificação para a WRO.
RoboCup Junior
Futebol, Resgate e Dança
Divisão júnior da RoboCup mundial. As modalidades são Soccer (futebol autônomo), Rescue (resgate em arenas com vítimas) e OnStage (apresentação coreografada).
Torneio SESI / SENAI
Competições regionais brasileiras
O SESI Robótica e os torneios do SENAI são eventos estaduais e nacionais que usam kits LEGO EV3. Participam alunos da rede pública e privada, com foco em inovação e tecnologia.
FIRST Lego League Explore
Versão para crianças mais novas
Versão para crianças de 6 a 10 anos que usam kits LEGO Education WeDo e Spike Essential. Foco em exploração e não competição — equipes apresentam modelos construídos com tema anual.
Como Funciona a FLL (Passo a Passo)
A FIRST Lego League é a competição mais usada com EV3 no mundo. Veja como funciona cada fase desde a inscrição até o campeonato mundial.
Inscrição e formação da equipe
Uma equipe de 2 a 10 integrantes se registra na plataforma oficial FIRST. O técnico (coach) cadastra a equipe e recebe acesso ao tema da temporada, que é revelado anualmente em agosto.
Estudo do tema — Innovation Project
Cada temporada tem um tema científico (ex: exploração espacial, meio ambiente, saúde). A equipe pesquisa o tema, identifica um problema real e propõe uma solução inovadora. Essa solução é apresentada para os juízes durante o evento.
Construção e programação do robô
A equipe constrói um robô com peças LEGO EV3 (ou Spike Prime) e o programa para completar missões numa arena chamada “tapete”. O tapete muda a cada temporada e é liberado junto com o tema. Cada missão cumprida gera pontos.
Torneio regional / classificatório
A equipe participa de um torneio local ou regional com outras equipes. Acontecem 3 rodadas de Robot Game (2,5 minutos cada), apresentação do Innovation Project, sessão de Design do Robô com juízes e avaliação dos Core Values (trabalho em equipe).
Campeonato estadual / nacional
As equipes classificadas avançam para campeonatos estaduais e depois o nacional (no Brasil é organizado pela CBTC). O formato é o mesmo, mas com mais equipes e juízes mais exigentes.
Campeonato Mundial FIRST
As equipes mais bem colocadas representam o Brasil no Campeonato Mundial da FIRST, realizado nos EUA (Houston/Detroit). Centenas de equipes de mais de 110 países competem pelos prêmios máximos. Uma experiência única de intercâmbio e troca de cultura.
As 4 Áreas de Avaliação da FLL
Dicas para Competir bem
Não tente fazer todas as missões do tapete. Escolha as missões com maior valor de pontos que seu robô consegue executar com consistência. Um robô que completa 8 missões com 100% de sucesso vale mais do que um que tenta 15 e erra metade.
Para curvas precisas no tapete, use sempre o Sensor Giroscópio no lugar de calcular tempo. Pequenas variações de bateria afetam a velocidade dos motores e, sem o giroscópio, o robô vai errar a trajetória. Calibre o sensor antes de cada partida.
Nas competições FLL e WRO, o robô deve operar de forma totalmente autônoma após o início. Nenhum membro da equipe pode tocar no robô durante a missão — exceto na base de lançamento entre corridas. Violações resultam em desclassificação da rodada.
Um robô rápido que derruba as peças nas viragens não pontua. Prefira velocidade moderada (40–60% de potência), sensor de cor para calibrar posição e trajetórias simples e diretas. Use o encoder dos motores para controlar distâncias com precisão.
Construa o robô com o mínimo de peças necessárias. Robôs mais compactos e com menor centro de gravidade têm mais estabilidade no tapete. Teste sempre os acessórios (braços, garras) após qualquer ajuste mecânico — peças LEGO afrouxam com o uso.
| Mês | Evento | O que fazer |
|---|---|---|
| AGO | Lançamento do Tema | Estudar o tema, montar equipe, inscrição oficial |
| SET | Desenvolvimento | Construção do robô, pesquisa do Innovation Project |
| OUT | Programação e testes | Programar missões, treinar estratégia no tapete |
| NOV | Torneio Regional / Estadual | Participar do torneio local, receber feedback dos juízes |
| DEZ–JAN | Refinamento | Melhorar robô e projeto com base no feedback recebido |
| FEV–MAR | Campeonato Nacional | Fase nacional (se classificado), possível vaga para o mundial |
| ABR–MAI | 🌍 Campeonato Mundial | FIRST Championship em Houston/Detroit, EUA |