LEGO MINDSTORMS Education EV3 + MicroPython: programando o brinquedo infantil com uma linguagem para adultos

Olá, Habr! Nós já falamos sobre a plataforma LEGO MINDSTORMS Education EV3. Os principais objetivos desta plataforma são o aprendizado baseado em exemplos práticos, o desenvolvimento de habilidades em STEAM e a formação do pensamento engenheiro. É possível realizar trabalhos de laboratório para estudar mecânica e dinâmica. Os estandes de laboratório feitos com blocos LEGO e as ferramentas para registro e processamento de dados tornam os experimentos ainda mais interessantes e visíveis, ajudando as crianças a compreender melhor a física. Por exemplo, os alunos podem coletar dados sobre a temperatura de fusão e, utilizando um aplicativo, organizá-los e apresentá-los em forma de gráfico. Mas isso é apenas o começo: hoje vamos contar como complementar esse conjunto com o ambiente de programação MicroPython e usá-lo para ensinar robótica.

LEGO MINDSTORMS Education EV3 + MicroPython: programando o brinquedo infantil com uma linguagem para adultos

Ensinando programação com EV3

Os estudantes modernos querem ver resultados visíveis e coloridos. Sim, eles acham chato se o programa apenas exibe números no console e desejam visualizar gráficos coloridos, diagramas e criar robôs reais que se movem e executam comandos. O código convencional também parece muito complicado para as crianças, portanto, é melhor começar o aprendizado com algo mais simples.

O ambiente básico de programação EV3 é baseado na linguagem gráfica LabVIEW e permite definir algoritmos para o robô de forma visual: os comandos são apresentados na forma de blocos que podem ser arrastados e conectados.

LEGO MINDSTORMS Education EV3 + MicroPython: programando o brinquedo infantil com uma linguagem para adultos

Esse método funciona bem quando é necessário demonstrar 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 utilizando código, mas as crianças têm dificuldades em dar esse passo. 

Aqui, existem algumas dicas, uma das quais é mostrar que o código executa as mesmas tarefas que os blocos. No ambiente EV3, isso pode ser feito graças à integração com o MicroPython: as crianças criam o mesmo programa no ambiente básico de programação usando blocos e na linguagem Python no Visual Studio Code da Microsoft. Elas veem que ambos os métodos funcionam da mesma forma, mas resolver tarefas complexas com código é mais conveniente.

Vamos para o MicroPython

A plataforma EV3 é baseada no processador ARM9, e os desenvolvedores deixaram a arquitetura intencionalmente aberta. Essa decisão permitiu a instalação de firmware alternativo, um dos quais é a imagem para trabalhar com o MicroPython. Ele permite usar Python para programar o EV3, tornando o trabalho com o kit ainda mais próximo das tarefas da vida real. 

Para começar a trabalhar, é necessário baixar a imagem EV3 MicroPython em qualquer cartão microSD, instalá-lo no microcomputador EV3 e ligá-lo. Em seguida, é necessário instalar a extensão gratuita para o Visual Studio. E então você pode começar a trabalhar. 

Programando o primeiro robô com MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programando o brinquedo infantil com uma linguagem para adultos

No nosso site há várias aulas para dominar os conceitos básicos de robótica. Os modelos no EV3 apresentam às crianças os fundamentos que são utilizados em veículos autônomos, robôs industriais de montagem e máquinas CNC. 

Vamos usar como exemplo uma máquina de desenho, que pode ser ensinada a desenhar padrões e figuras geométricas. Este caso é uma versão simplificada de robôs industriais para soldagem ou fresagem e mostra como o EV3 pode ser usado em conjunto com o MicroPython para ensinar os alunos. E além disso, a máquina de desenho pode marcar buracos em uma placa de circuito impresso para o papai, mas isso já é outro nível, que requer cálculos matemáticos.

Para o trabalho, precisamos de:

  • um kit básico LEGO MINDSTORMS Education EV3; 
  • uma grande folha de papel quadriculado;
  • canetas coloridas. 

A montagem do robô está em documentação, e nós vamos considerar um exemplo de programação.

Primeiro, inicializamos a biblioteca de módulos 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

Configuramos a plataforma que gira a caneta como um motor na porta B. Definimos a relação de transmissão de uma engrenagem de duas etapas 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 para a caneta como um motor na porta C:

seesaw_motor = Motor(Port.C)

Configuramos o giroscópio que mede o ângulo de inclinação da caneta na porta 2:

gyro_sensor = GyroSensor(Port.S2)

Configuramos o sensor de cor na porta 3. Este sensor é utilizado para detectar o papel branco debaixo da 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 funções que levantam e abaixam a caneta:

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 o holder da caneta em um ângulo específico ou até um ângulo definido:

def pen_holder_turn_to(target_angle):
  if target_angle > gyro_sensor.angle():

Se o ângulo alvo for maior do que o ângulo atual do sensor giroscópio, continuamos a mover 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 do que o ângulo atual do sensor giroscópio, movemos no sentido anti-horário:

    turntable_motor.run(-70)
	
while gyro_sensor.angle() > target_angle:
	
pass

Paramos a plataforma giratória quando o ângulo alvo for alcançado:

  turntable_motor.stop(Stop.BRAKE)

Definimos a posição inicial do holder da caneta na posição elevada:

pen_holder_raise()

Agora vem a parte principal do programa — um loop infinito. Primeiro, o EV3 espera que o sensor de cor detecte papel branco ou a célula inicial azul, e que o sensor de toque seja pressionado. Em seguida, ele desenha o padrão, retorna à posição inicial e repete tudo novamente.

Quando o dispositivo não está pronto, os LEDs no controlador ficam vermelhos e a tela LCD exibe a imagem 'polegar para baixo':

while True:
  brick.light(Color.RED)
  brick.display.image(ImageFile.THUMBS_DOWN)

Aguardamos até que o sensor de cor detecte azul ou branco, configuramos a cor dos LEDs para verde, exibimos na tela LCD a imagem 'polegar para cima' e informamos que o dispositivo está pronto para operar:

  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
	
wait(10)
  brick.light(Color.GREEN)
  brick.display.image(ImageFile.THUMBS_UP)

Aguardamos a pressão do sensor de toque, redefinimos o ângulo do sensor giroscópio para 0 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)

Levantamos o holder da caneta e o retornamos à posição inicial:

  pen_holder_raise()
  pen_holder_turn_to(0)<\/i>

Temos um programa simples assim. Agora o executamos e observamos o robô desenhista em ação. 

O que esses exemplos proporcionam

LEGO MINDSTORMS Education EV3 + MicroPython: programando o brinquedo infantil com uma linguagem para adultos

EV3 é uma ferramenta para orientação profissional na área de STEM e um ponto de entrada nas especialidades de engenharia. Como é possível resolver problemas práticos com ele, as crianças ganham experiência em desenvolvimento técnico e criação de robôs industriais, aprendem a modelar situações reais, compreender programas e analisar algoritmos, além de dominar as construções básicas de programação.

O suporte ao MicroPython torna a plataforma EV3 adequada para ensino em turmas do ensino médio. Os alunos podem se imaginar como programadores em uma das linguagens modernas mais populares, conhecer as profissões relacionadas à programação e ao design de engenharia. Os conjuntos EV3 demonstram que programar não é assustador, preparam para sérios desafios de engenharia e ajudam a dar o primeiro passo na aprendizagem de especialidades técnicas. E para aqueles que trabalham nas escolas e estão envolvidos na educação, temos preparados programas de aulas e materiais didáticos. Neles, está detalhado quais habilidades são desenvolvidas ao realizar certas tarefas e como as habilidades adquiridas se relacionam com os padrões de aprendizado.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster