LEGO MINDSTORMS Education EV3 + MicroPython:我们用成人语言编写儿童的构造函数

哈Ha! 我们已经讨论过LEGO MINDSTORMS Education EV3平台。 该平台的主要目标是培训实践示例,STEAM技能的开发和工程思想的形成。 它可以进行实验室工作来研究力学和动力学。 由乐高积木和用于记录和处理数据的实用工具制成的实验台使实验变得更加有趣和直观,并帮助儿童更好地理解物理。 例如,学生可以收集有关熔化温度的数据,并使用该应用程序组织它们并将它们显示在图表中。 但这仅仅是开始:今天,我们将告诉您如何用MicroPython编程环境来补充此设置,并使用它来教授机器人技术。



学习使用EV3编程


现代学生希望看到丰富多彩的结果。 是的,如果程序在控制台中显示数字,他们会感到无聊,他们想查看颜色图表,图表并创建真正的机器人来移动和执行命令。 对于孩子来说,常规代码似乎也太复杂了,因此最好开始学习一些简单的东西。

基本编程环境EV3基于图形语言LabVIEW,可让您直观地设置机器人的算法:命令以可拖动和合并的块形式显示。



当需要显示算法的构建方式时,此方法效果很好,但是不适用于具有大量块的程序。 在使方案复杂化时,有必要切换到使用代码进行编程,但是对于儿童而言,执行此步骤很困难。

这里有一些技巧,其中之一是证明代码执行与块相同的任务。 在EV3环境中,这可以通过与MicroPython集成来完成:子代使用Microsoft Visual Studio Code中的块和Python在基础编程环境中创建相同的程序。 他们发现两种方法的工作原理相同,但是使用代码解决复杂的问题更方便。

前往MicroPython


EV3环境基于ARM9处理器,开发人员有意使该体系结构保持开放状态。 该解决方案使我们能够汇总其他固件,其中之一就是用于MicroPython的映像。 它使您可以使用Python编写EV3程序,从而使键入更加接近实际任务。

首先,您需要将EV3 MicroPython映像下载到任何microSD卡,将其安装在EV3微型计算机中并打开它。 然后,您需要安装Visual Studio的免费扩展 。 这样您就可以开始工作了。

我们在MycroPython上编写了第一个机器人





我们的站点上有几节课程,用于掌握机器人技术的基本概念。 EV3上的模型向孩子们介绍了自动驾驶汽车,工厂组装机器人和CNC机器中使用的基础知识。

我们以一个绘图机为例,可以教它绘制图案和几何形状。 该案例是成人焊接机器人或铣床的简化版本,展示了如何将EV3和MicroPython一起用于教学。 绘图机可以在爸爸的印刷电路板上标记孔,但这是另一个需要数学计算的层次。

对于工作,我们需要:

  • LEGO MINDSTORMS教育版EV3基本套装
  • 一大张方格纸;
  • 彩色的标记。

机器人本身的组装在指令中 ,我们将考虑一个编程示例。

首先,初始化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 

我们在端口B中建立了一个平台,使手柄像电动机一样旋转。我们分别用齿数20-12-28设置两级齿轮传动的齿轮比。

 turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28]) 

我们将手柄的提升机制配置为端口C中的电动机:

 seesaw_motor = Motor(Port.C) 

我们在端口2中设置了一个陀螺仪来测量手柄的角度:

 gyro_sensor = GyroSensor(Port.S2) 

在端口3中配置颜色传感器。该传感器用于检测绘图仪下的白皮书:

 color_sensor = ColorSensor(Port.S3) 

在端口4中配置触摸传感器。按下传感器时,机器人开始拉动:

 touch_sensor = TouchSensor(Port.S4) 

定义升高和降低手柄的功能:

 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) 

我们确定将手柄旋转给定角度或特定角度的功能:

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

如果目标角度大于陀螺仪传感器的当前角度,请继续以正速度顺时针移动:

     turntable_motor.run(70) while gyro_sensor.angle() < target_angle: pass  elif target_angle < gyro_sensor.angle(): 

如果目标角度小于当前的陀螺仪传感器,则逆时针移动:

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

当达到目标角度时,我们停止旋转平台:

   turntable_motor.stop(Stop.BRAKE) 

将手柄的初始位置设置在上方位置:

 pen_holder_raise() 

现在是程序的主要部分-无限循环。 首先,EV3等待颜色传感器检测到白皮书或蓝色起始单元,然后触摸传感器将被按下。 然后,他绘制一个图案,返回其原始位置,然后再次重复所有操作。

当设备未准备就绪时,控制器上的LED变为红色,并且手指向下的图像显示在LCD屏幕上:

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

我们要等到颜色传感器将其视为蓝色或白色,将LED的颜色设置为绿色,在LCD屏幕上显示大拇指图像并告知该设备已准备就绪后才能使用:

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

我们等待触摸传感器被按下,将角度0的值分配给陀螺仪传感器并开始绘制:

   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) 

抬起笔架并将其返回到其原始位置:

   pen_holder_raise()  pen_holder_turn_to(0)</i> 

在这里,我们有一个简单的程序。 现在,我们启动它,看看正在起作用的机器人绘图员。

这样的例子给出了什么?




EV3是STEM专业的职业指导工具,也是工程专业的切入点。 由于可以解决实际问题,因此孩子们可以获得技术开发和工业机器人创建方面的经验,学会模拟实际情况,理解程序和分析算法,掌握基本的程序结构。

MicroPython支持使EV3平台适合于高中。 学生可以尝试使用最流行的现代语言之一作为程序员,并熟悉与编程和工程设计相关的专业。 EV3套件表明编写代码并不可怕,它们为严重的工程问题做准备,并有助于迈出掌握技术专长的第一步。 对于在学校工作并与教育相关的人员,我们准备了培训计划和培训材料。 他们详细描述了执行某些任务时将形成哪些技能,以及所获得的技能与培训标准之间的关系。

Source: https://habr.com/ru/post/zh-CN474562/


All Articles