Olá, Habr! Nós já sobre a plataforma LEGO MINDSTORMS Education EV3. Os principais objetivos desta plataforma são aprender através de exemplos práticos, desenvolver competências STEAM e desenvolver uma mentalidade de engenharia. Pode ser usado para trabalhos de laboratório para estudar mecânica e dinâmica. Bancadas de laboratório feitas com peças de LEGO e utilitários 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 de ponto de fusão e usar o aplicativo para organizá-los e apresentá-los em um gráfico. Mas isso é apenas o começo: hoje vamos contar como complementar esse conjunto com o ambiente de programação MicroPython e utilizá-lo para ensinar robótica.

Aprenda a programar usando EV3
Os alunos modernos querem ver resultados coloridos. Sim, eles ficam entediados se o programa imprime números no console e querem ver gráficos coloridos, diagramas e criar robôs reais que se movem e seguem comandos. O código normal também parece muito complicado para as crianças, por isso é melhor começar a aprender com algo mais fácil.
O ambiente de programação básico do EV3 é baseado na linguagem gráfica LabVIEW e permite especificar algoritmos para o robô visualmente: os comandos são apresentados na forma de blocos que podem ser arrastados e conectados.

Este método funciona bem quando você precisa mostrar como os algoritmos são construídos, mas não é adequado para programas com um grande número de blocos. À medida que os cenários se tornam mais complexos, é necessário passar para a programação com código, mas este passo é difícil para as crianças.
Existem alguns truques aqui, um dos quais é mostrar que o código faz a mesma coisa que os blocos. No ambiente EV3, isso é possível por meio da integração do MicroPython, para que as crianças possam criar o mesmo programa tanto no ambiente básico de programação de blocos quanto no Python no Visual Studio Code da Microsoft. Eles veem que ambos os métodos funcionam da mesma forma, mas resolver problemas complexos usando código é mais conveniente.
Mudando para MicroPython
O ambiente EV3 é construído em um processador ARM9 e os desenvolvedores deixaram deliberadamente a arquitetura aberta. Esta solução possibilitou o lançamento de firmware alternativo, um dos quais era uma imagem para trabalhar com MicroPython. Ele permite que você use Python para programar seu EV3, aproximando ainda mais o kit das tarefas da vida real.
Para começar, você precisa baixar em qualquer cartão microSD, instale-o no microcomputador EV3 e ligue-o. Então você precisa instalar para Visual Studio. E você pode começar a trabalhar.
Programando o primeiro robô em MycroPython

No nosso Existem várias lições para dominar os conceitos básicos da robótica. Os modelos EV3 apresentam às crianças os conceitos básicos usados em carros autônomos, robôs de montagem de fábrica e máquinas CNC.
Tomaremos o exemplo de uma máquina de desenho, que pode ser ensinada a desenhar padrões e formas geométricas. Este caso é uma versão simplificada de robôs adultos de soldagem ou fresamento e mostra como o EV3 pode ser usado em conjunto com o MicroPython para ensinar crianças em idade escolar. E uma máquina de desenho pode marcar furos em uma placa de circuito impresso para o pai, mas esse é outro nível que requer matemática.
Para o trabalho, precisamos:
- Conjunto básico LEGO MINDSTORMS Education EV3;
- grande folha de papel xadrez;
- marcadores coloridos.
A montagem do robô em si está em , e veremos um exemplo de programação.
Primeiro inicializamos a biblioteca do módulo EV3:
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
Montamos uma plataforma que gira a alavanca como um motor na porta B. Definimos a relação de transmissão de um trem de engrenagens de dois estágios com um número de dentes de 20-12-28, respectivamente.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuramos o mecanismo de elevação da alça como motor na porta C:
seesaw_motor = Motor(Port.C)
Configuramos o giroscópio, que mede o ângulo de inclinação da alça, na porta 2:
gyro_sensor = GyroSensor(Port.S2)
Configuramos o sensor de cores na porta 3. O sensor é usado para detectar papel branco sob a máquina de desenho:
color_sensor = ColorSensor(Port.S3)
Configuramos o sensor de toque na porta 4. O robô começa a desenhar quando o sensor é pressionado:
touch_sensor = TouchSensor(Port.S4)
Definimos as funções que aumentam e abaixam a alça:
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)
Definimos uma função para girar a alça para 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 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 no sentido anti-horário:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Pare a plataforma rotativa quando o ângulo alvo for alcançado:
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 infinito. O EV3 primeiro espera que o sensor de cor detecte um papel branco ou um quadrado inicial azul e que o sensor de toque seja pressionado. Então ele desenha um padrão, volta à posição inicial e repete tudo novamente.
Quando o dispositivo não está pronto, os LEDs no controlador ficam vermelhos e uma imagem de “polegar 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 conte azul ou branco, configure a cor do LED para verde, exiba uma imagem de “polegar para cima” na tela LCD e informe 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 giroscópico 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>
Este é o programa simples que criamos. E agora vamos iniciá-lo e observar o robô de desenho em ação.
O que esses exemplos fornecem?

EV3 é uma ferramenta de orientação profissional para carreiras STEM e um ponto de entrada para carreiras de engenharia. Por poder ser utilizado para resolver problemas práticos, as crianças ganham experiência no desenvolvimento técnico e na criação de robôs industriais, aprendem a simular situações reais, a compreender programas e a analisar algoritmos e a dominar construções básicas de programação.
O suporte MicroPython torna a plataforma EV3 adequada para o ensino do ensino médio. Os alunos podem tentar ser programadores em uma das linguagens modernas mais populares e se familiarizar com profissões relacionadas à programação e design de engenharia. Os kits EV3 mostram que a codificação não é assustadora, preparam você para sérios desafios de engenharia e ajudam você a dar o primeiro passo para dominar habilidades técnicas. E para quem trabalha nas escolas e está ligado à educação, preparamos e materiais educativos. Descrevem detalhadamente quais habilidades são desenvolvidas ao executar determinadas tarefas e como as habilidades adquiridas se relacionam com os padrões de treinamento.
Fonte: habr.com
