Hallo, Habr! Wir haben bereits über die LEGO MINDSTORMS Education EV3-Plattform. Die Hauptziele dieser Plattform sind das Lernen anhand praktischer Beispiele, die Entwicklung von STEAM-Fähigkeiten und die Bildung ingenieurwissenschaftlichen Denkens. Es kann für Laborarbeiten zum Studium der Mechanik und Dynamik verwendet werden. Laborständer aus LEGO-Steinen und Hilfsmittel zur Datenerfassung und -verarbeitung machen Experimente noch interessanter und anschaulicher und helfen Kindern, Physik besser zu verstehen. So können beispielsweise Schulkinder Schmelzpunktdaten erfassen und diese mit der App ordnen und grafisch darstellen. Doch das ist erst der Anfang: Heute zeigen wir Ihnen, wie Sie dieses Kit mit der Programmierumgebung MicroPython erweitern und für den Robotik-Unterricht nutzen können.

Programmieren lernen mit EV3
Moderne Schulkinder wollen farbenfrohe Ergebnisse sehen. Ja, sie langweilen sich, wenn ein Programm Zahlen auf der Konsole ausgibt, und sie möchten bunte Grafiken und Diagramme ansehen und echte Roboter erstellen, die sich bewegen und Befehlen folgen. Normaler Code scheint für Kinder außerdem zu kompliziert zu sein, daher ist es besser, mit etwas Einfacherem zu beginnen.
Die grundlegende Programmierumgebung von EV3 basiert auf der grafischen Sprache LabVIEW und ermöglicht Ihnen, Algorithmen für den Roboter visuell festzulegen: Befehle werden als Blöcke dargestellt, die gezogen und verbunden werden können.

Diese Methode eignet sich gut, wenn Sie zeigen müssen, wie Algorithmen aufgebaut sind, sie ist jedoch nicht für Programme mit einer großen Anzahl von Blöcken geeignet. Bei komplexeren Szenarien wird es notwendig, zur Programmierung mit Code überzugehen, doch dieser Schritt fällt Kindern schwer.
Hier gibt es ein paar Tricks, einer davon besteht darin, zu zeigen, dass der Code dasselbe macht wie die Blöcke. Die EV3-Umgebung macht dies dank der Integration mit MicroPython möglich: Kinder erstellen dasselbe Programm in der grundlegenden blockbasierten Programmierumgebung und in Python in Microsoft Visual Studio Code. Sie erkennen, dass beide Methoden gleich funktionieren, Code sich jedoch zum Lösen komplexer Probleme eignet.
Umstellung auf MicroPython
Die EV3-Umgebung basiert auf dem ARM9-Prozessor und die Entwickler haben die Architektur bewusst offen gelassen. Diese Lösung ermöglichte es uns, alternative Firmware bereitzustellen, darunter ein Image für die Arbeit mit MicroPython. Sie können den EV3 mit Python programmieren, wodurch die Arbeit mit dem Kit noch näher an realen Aufgaben liegt.
Um mit der Arbeit zu beginnen, müssen Sie herunterladen auf eine beliebige microSD-Karte, installieren Sie es im EV3-Stein und schalten Sie ihn ein. Dann müssen Sie installieren für Visual Studio. Und Sie können mit der Arbeit beginnen.
Programmierung des ersten Roboters in MycroPython

Auf unserer Es gibt mehrere Lektionen, um die grundlegenden Konzepte der Robotik zu erlernen. EV3-Modelle vermitteln Kindern die Grundlagen selbstfahrender Autos, Fabrikmontageroboter und CNC-Maschinen.
Als Beispiel nehmen wir eine Zeichenmaschine, der man das Zeichnen von Mustern und geometrischen Formen beibringen kann. Dieser Fall ist eine vereinfachte Version von Schweißrobotern oder Fräsmaschinen für Erwachsene und zeigt, wie EV3 zusammen mit MicroPython zum Unterrichten von Schulkindern verwendet werden kann. Und die Zeichenmaschine kann für Papa auch Löcher in die Leiterplatte markieren, aber das ist eine andere Ebene, die mathematische Berechnungen erfordert.
Für die Arbeit brauchen wir:
- LEGO MINDSTORMS Education EV3 Basisset;
- ein großes Blatt kariertes Papier;
- farbige Markierungen.
Die Montage des Roboters selbst erfolgt in , und wir werden uns ein Programmierbeispiel ansehen.
Lassen Sie uns zunächst die EV3-Steinbibliothek initialisieren:
#!/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
Die Plattform, die den Griff dreht, bauen wir als Motor in Port B ein. Die Übersetzung des zweistufigen Zahnradgetriebes stellen wir mit der Zähnezahl jeweils auf 20-12-28 ein.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Den Hebemechanismus für den Griff bauen wir als Motor im Port C ein:
seesaw_motor = Motor(Port.C)
Wir haben das Gyroskop, das den Neigungswinkel des Sticks misst, in Port 2 aufgebaut:
gyro_sensor = GyroSensor(Port.S2)
Wir haben den Farbsensor in Port 3 installiert. Der Sensor dient dazu, weißes Papier unter der Zeichenmaschine zu erkennen:
color_sensor = ColorSensor(Port.S3)
Wir richten den Berührungssensor in Port 4 ein. Der Roboter beginnt zu zeichnen, wenn der Sensor gedrückt wird:
touch_sensor = TouchSensor(Port.S4)
Wir definieren die Funktionen, die den Griff anheben und absenken:
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)
Wir definieren eine Funktion zum Drehen des Griffs um einen gegebenen Winkel oder bis zu einem bestimmten Winkel:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Wenn der Zielwinkel größer ist als der aktuelle Gyrosensorwinkel, fahren Sie mit positiver Geschwindigkeit im Uhrzeigersinn fort:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Wenn der Zielwinkel kleiner ist als der aktuelle Gyrosensorwinkel, bewegen wir uns gegen den Uhrzeigersinn:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Stoppen Sie die rotierende Plattform, wenn der Zielwinkel erreicht ist:
turntable_motor.stop(Stop.BRAKE)
Wir setzen die Ausgangsposition des Griffs auf die obere Position:
pen_holder_raise()
Jetzt kommt der Hauptteil des Programms – eine Endlosschleife. Zunächst wartet der EV3 darauf, dass der Farbsensor weißes Papier oder ein blaues Startquadrat erkennt und der Berührungssensor gedrückt wird. Dann zeichnet er ein Muster, kehrt in die Ausgangsposition zurück und wiederholt alles noch einmal.
Wenn das Gerät nicht bereit ist, leuchten die LEDs am Controller rot und auf dem LCD-Bildschirm wird ein „Daumen nach unten“-Symbol angezeigt:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Wir warten, bis der Farbsensor blau oder weiß anzeigt, stellen die Farbe der LEDs auf grün, zeigen das „Daumen hoch“-Bild auf dem LCD-Bildschirm an und melden, dass das Gerät betriebsbereit ist:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Wir warten auf das Drücken des Touchsensors, weisen dem Gyroskopsensor einen Winkelwert von 0 zu und beginnen mit dem Zeichnen:
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)
Wir heben den Stifthalter an und bringen ihn wieder in seine ursprüngliche Position:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Dies ist das einfache Programm, das wir bekommen haben. Und jetzt starten wir es und schauen uns den Roboterzeichner in Aktion an.
Was bringen solche Beispiele?

EV3 ist ein Berufsberatungstool für MINT-Berufe und ein Einstieg in die Ingenieurwissenschaften. Durch die Lösung praktischer Probleme sammeln die Kinder Erfahrungen in der technischen Entwicklung und der Herstellung von Industrierobotern, lernen reale Situationen zu modellieren, Programme zu verstehen und Algorithmen zu analysieren und beherrschen grundlegende Programmierkonstrukte.
Durch die Unterstützung von MicroPython ist die EV3-Plattform für die weiterführende Schulbildung geeignet. Studierende können sich als Programmierer in einer der beliebtesten modernen Sprachen versuchen und Berufe im Bereich Programmierung und technisches Design kennenlernen. EV3-Bausätze zeigen, dass Programmieren keine Angst machen muss, bereiten Kinder auf ernsthafte technische Herausforderungen vor und helfen ihnen, den ersten Schritt zur Beherrschung technischer Fachgebiete zu machen. Und für diejenigen, die in Schulen arbeiten und mit Bildung zu tun haben, haben wir vorbereitet und Unterrichtsmaterialien. Sie beschreiben detailliert, welche Fähigkeiten bei der Durchführung bestimmter Aufgaben entwickelt werden und in welchem Verhältnis die erworbenen Fähigkeiten zu den Lernstandards stehen.
Source: habr.com
