Olá Habr! Já
falamos sobre a plataforma LEGO MINDSTORMS Education EV3. Os principais objetivos desta plataforma são o treinamento em exemplos práticos, o desenvolvimento das habilidades do STEAM e a formação do pensamento de engenharia. Pode realizar trabalhos de laboratório para estudar mecânica e dinâmica. Os estandes de laboratório feitos de blocos e utilitários LEGO para registro e processamento de dados tornam os experimentos ainda mais interessantes e visuais e ajudam as crianças a entender melhor a física. Por exemplo, os alunos podem coletar dados sobre a temperatura de fusão e usar o aplicativo para organizá-los e apresentá-los em um gráfico. Mas este é apenas o começo: hoje, mostraremos como complementar esse conjunto com o ambiente de programação MicroPython e usá-lo para ensinar robótica.

Aprenda a programar com EV3
Os estudantes modernos querem ver um resultado colorido. Sim, eles ficam entediados se o programa exibir números no console e quiserem ver tabelas de cores, diagramas e criar robôs reais que movem e executam comandos. O código regular também parece muito complicado para as crianças, por isso é melhor começar a aprender algo mais fácil.
O ambiente de programação base EV3 é baseado na linguagem gráfica LabVIEW e permite definir visualmente algoritmos para o robô: os comandos são apresentados na forma de blocos que podem ser arrastados e unidos.

Esse método funciona bem quando você precisa mostrar como os algoritmos são criados, mas não é adequado para programas com um grande número de blocos. Ao complicar os cenários, é necessário mudar para a programação usando código, mas é difícil para as crianças darem esse passo.
Existem alguns truques aqui, um dos quais é mostrar que o código executa as mesmas tarefas que os blocos. No ambiente EV3, isso pode ser feito através da integração com o MicroPython: as crianças criam o mesmo programa no ambiente de programação base usando blocos e Python no Microsoft Visual Studio Code. Eles veem que os dois métodos funcionam da mesma forma, mas é mais conveniente resolver problemas complexos com o código.
Indo para o MicroPython
O ambiente EV3 é baseado no processador ARM9, e os desenvolvedores intencionalmente deixaram a arquitetura aberta. Essa solução nos permitiu instalar firmware alternativo, um dos quais era a imagem para trabalhar com o MicroPython. Ele permite que você use o Python para programar o EV3, o que torna a digitação ainda mais próxima das tarefas da vida real.
Para começar, você precisa baixar a
imagem EV3 MicroPython para qualquer cartão microSD, instalá-la no microcomputador EV3 e ligá-la. Então você precisa instalar a
extensão gratuita para o Visual Studio. E você pode começar a trabalhar.
Programamos o primeiro robô no MycroPython

Nosso
site tem várias lições para dominar os conceitos básicos de robótica. Os modelos do EV3 introduzem as crianças no básico, que são usadas em carros autônomos, robôs de montagem de fábrica e máquinas CNC.
Tomamos como exemplo uma máquina de desenho que pode ser ensinada a desenhar padrões e formas geométricas. Este gabinete é uma versão simplificada de robôs de soldagem para adultos ou fresadoras e mostra como você pode usar o EV3 junto com o MicroPython para ensinar os alunos. E uma máquina de desenho pode marcar buracos em uma placa de circuito impresso para o pai, mas esse é outro nível que requer cálculos matemáticos.
Para o trabalho, precisamos de:
- LEGO MINDSTORMS Education EV3 basic set
- uma grande folha de papel quadriculado;
- marcadores coloridos.
A montagem do robô em si está nas
instruções e consideraremos um exemplo de programação.
Primeiro, inicialize a biblioteca do módulo EV3:
Montamos uma plataforma que gira a alavanca como um motor na porta B. Definimos a relação de transmissão da transmissão de duas etapas com o número de dentes 20-12-28, respectivamente.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuramos o mecanismo de elevação para o punho como um motor na porta C:
seesaw_motor = Motor(Port.C)
Montamos um giroscópio medindo o ângulo da alça, na porta 2:
gyro_sensor = GyroSensor(Port.S2)
Configure o sensor de cor na porta 3. O sensor é usado para detectar papel branco embaixo da máquina de desenho:
color_sensor = ColorSensor(Port.S3)
Configure o sensor de toque na porta 4. O robô começa a desenhar quando o sensor é pressionado:
touch_sensor = TouchSensor(Port.S4)
Defina as funções que aumentam e abaixam o identificador:
def pen_holder_raise(): seesaw_motor.run_target(50, 25, Stop.HOLD) wait(1000) def pen_holder_lower(): seesaw_motor.run_target(50, 0, Stop.HOLD) wait(1000)
Determinamos a função para girar a manivela por um determinado ângulo ou para um determinado ângulo:
def pen_holder_turn_to(target_angle): if target_angle > gyro_sensor.angle():
Se o ângulo alvo for maior que o ângulo atual do sensor giroscópio, continue movendo no sentido horário com uma velocidade positiva:
turntable_motor.run(70) while gyro_sensor.angle() < target_angle: pass elif target_angle < gyro_sensor.angle():
Se o ângulo alvo for menor que o sensor giroscópio atual, mova-se no sentido anti-horário:
turntable_motor.run(-70) while gyro_sensor.angle() > target_angle: pass
Paramos a plataforma rotativa quando o ângulo alvo é atingido:
turntable_motor.stop(Stop.BRAKE)
Defina a posição inicial da alça na posição superior:
pen_holder_raise()
Agora vem a parte principal do programa - um loop sem fim. Primeiro, o EV3 aguarda o sensor de cor detectar papel branco ou uma célula inicial azul e o sensor de toque será pressionado. Então ele desenha um padrão, retorna à sua posição original e repete tudo novamente.
Quando o dispositivo não está pronto, os LEDs no controlador ficam vermelhos e a imagem com o dedo para baixo é exibida na tela LCD:
while True: brick.light(Color.RED) brick.display.image(ImageFile.THUMBS_DOWN)
Esperamos até que o sensor de cor considere azul ou branco, definimos a cor dos LEDs para verde, exibimos a imagem positiva na tela LCD e informamos que o dispositivo está pronto para uso:
while color_sensor.color() not in (Color.BLUE, Color.WHITE): wait(10) brick.light(Color.GREEN) brick.display.image(ImageFile.THUMBS_UP)
Esperamos que o sensor de toque seja pressionado, atribuímos o valor do ângulo 0 ao sensor de giroscópio e começamos a desenhar:
while not touch_sensor.pressed(): wait(10) gyro_sensor.reset_angle(0) pen_holder_turn_to(15) pen_holder_lower() pen_holder_turn_to(30) pen_holder_raise() pen_holder_turn_to(45) pen_holder_lower() pen_holder_turn_to(60)
Levante o suporte da caneta e retorne-o à sua posição original:
pen_holder_raise() pen_holder_turn_to(0)</i>
Aqui temos um programa tão simples. E agora o lançamos e olhamos para o desenhista de robôs em ação.
O que esses exemplos dão?

O EV3 é uma ferramenta de orientação profissional para profissões STEM e um ponto de entrada em especialidades de engenharia. Como é possível resolver problemas práticos, as crianças adquirem experiência no desenvolvimento técnico e na criação de robôs industriais, aprendem a simular situações reais, a entender programas e analisar algoritmos, a dominar as construções básicas de programação.
O suporte ao MicroPython torna a plataforma EV3 adequada para o ensino médio. Os alunos podem tentar a si mesmos como programadores em uma das linguagens modernas mais populares, familiarizar-se com as profissões relacionadas a programação e design de engenharia. Os kits EV3 mostram que escrever código não é assustador, eles se preparam para sérios problemas de engenharia e ajudam a dar o primeiro passo para dominar as especialidades técnicas. E para aqueles que trabalham na escola e estão associados à educação, preparamos
programas de treinamento e materiais de treinamento. Eles descrevem em detalhes quais habilidades são formadas ao executar determinadas tarefas e como as habilidades adquiridas estão relacionadas aos padrões de treinamento.