Hallo, Habr! Wir bereits über die Plattform LEGO MINDSTORMS Education EV3. Die Hauptziele dieser Plattform sind das Lernen anhand praktischer Beispiele, die Entwicklung von STEAM-Fähigkeiten und die Förderung des ingenieurtechnischen Denkens. Man kann damit Laborarbeiten zur Mechanik und Dynamik durchführen. Laborstände aus LEGO-Steinen und Tools zur Registrierung und Datenverarbeitung machen die Experimente noch interessanter und anschaulicher und helfen den Kindern, die Physik besser zu verstehen. Beispielsweise können Schüler Daten zur Schmelztemperatur sammeln und diese mithilfe einer App systematisieren und grafisch darstellen. Doch das ist erst der Anfang: Heute zeigen wir, wie man dieses Set um die Programmierumgebung MicroPython erweitern und zur Robotertechnik verwenden kann.

Wir lernen Programmieren mit EV3
Moderne Schüler möchten ein farbenfrohes Ergebnis sehen. Ja, es ist ihnen langweilig, wenn das Programm Zahlen in der Konsole ausgibt, und sie wollen bunte Grafiken, Diagramme sehen und echte Roboter bauen, die sich bewegen und Befehle ausführen. Gewöhnlicher Code erscheint den Kindern ebenfalls zu komplex, deshalb ist es besser, das Lernen mit etwas Einfachem zu beginnen.
Die grundlegende Programmierumgebung EV3 basiert auf der grafischen Sprache LabVIEW und ermöglicht es, Algorithmen für den Roboter visuell zu erstellen: Befehle werden in Form von Blöcken dargestellt, die man verschieben und verbinden kann.

Diese Methode funktioniert gut, wenn man zeigen möchte, wie Algorithmen aufgebaut sind, ist jedoch nicht für Programme mit einer großen Anzahl von Blöcken geeignet. Bei komplexeren Szenarien muss man auf das Programmieren mit Code umsteigen, was für Kinder schwierig ist.
Hier gibt es einige Tricks, einer davon ist, zu zeigen, dass der Code die gleichen Aufgaben wie die Blöcke ausführt. In der EV3-Umgebung kann dies durch die Integration mit MicroPython erfolgen: Die Kinder erstellen dasselbe Programm in der grundlegenden Programmierumgebung mit Blöcken und in Python in Visual Studio Code von Microsoft. Sie sehen, dass beide Methoden gleich gut funktionieren, aber es einfacher ist, komplexe Aufgaben mit Code zu lösen.
Wir steigen auf MicroPython um
Die EV3-Umgebung basiert auf einem ARM9-Prozessor und die Entwickler haben die Architektur absichtlich offen gelassen. Diese Entscheidung ermöglichte es, alternative Firmware-Updates zu installieren, darunter ein Image zur Verwendung mit MicroPython. Dies erlaubt die Programmierung von EV3 mit Python, was die Arbeit mit dem Set noch näher an reale Aufgaben heranführt.
Um zu beginnen, müssen Sie auf eine beliebige microSD-Karte herunterladen, diese in den EV3-Mikrocomputer einsetzen und ihn einschalten. Dann müssen Sie das für Visual Studio installieren. Und dann können Sie mit der Arbeit beginnen.
Programmieren des ersten Roboters mit MycroPython

Auf unserer Website gibt es mehrere Lektionen zur Erlernung grundlegender Konzepte der Robotik. Die Modelle auf EV3 führen Kinder in die Grundlagen ein, die in autonomen Fahrzeugen, Industrierobotern und CNC-Maschinen verwendet werden.
Wir nehmen als Beispiel eine Zeichenmaschine, die man darin schulen kann, Muster und geometrische Figuren zu zeichnen. Dieser Anwendungsfall ist eine vereinfachte Version von professionellen Schweiß- oder Fräsrobotern und zeigt, wie EV3 zusammen mit MicroPython zum Unterricht von Schülern verwendet werden kann. Außerdem kann die Zeichenmaschine Löcher auf einer Leiterplatte für Papa markieren, aber das ist eine andere Ebene, die mathematische Berechnungen erfordert.
Für die Arbeit benötigen wir:
- das Basisset LEGO MINDSTORMS Education EV3;
- ein großes Blatt karierten Papiers;
- bunte Marker.
Die Montage des Roboters finden Sie in , aber wir werden ein Beispiel für das Programmieren betrachten.
Zuerst initialisieren wir die EV3-Modulbibliothek:
#!/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
Wir konfigurieren die Plattform, die den Stift wie einen Motor im Port B dreht. Wir setzen das Übersetzungsverhältnis des zweistufigen Zahnradgetriebes mit 20-12-28 Zähnen.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Wir konfigurieren den Hebemechanismus für den Stift als Motor im Port C:
seesaw_motor = Motor(Port.C)
Wir konfigurieren den Gyrosensor, der den Neigungswinkel des Stifts im Port 2 misst:
gyro_sensor = GyroSensor(Port.S2)
Wir konfigurieren den Farbsensor im Port 3. Der Sensor wird verwendet, um das weiße Papier unter der Zeichenmaschine zu erkennen:
color_sensor = ColorSensor(Port.S3)
Wir konfigurieren den Berührungssensor im Port 4. Der Roboter beginnt zu zeichnen, wenn der Sensor gedrückt wird:
touch_sensor = TouchSensor(Port.S4)
Wir definieren die Funktionen, die den Stift heben und senken:
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, um den Stifthalter um einen bestimmten Winkel oder bis zu einem bestimmten Winkel zu drehen:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Wenn der Zielwinkel größer ist als der aktuelle Winkel des Gyrosensors, bewegen wir uns im Uhrzeigersinn mit positiver Geschwindigkeit:
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 Winkel des Gyrosensors, bewegen wir uns gegen den Uhrzeigersinn:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Wir stoppen die drehende Plattform, wenn der Zielwinkel erreicht ist:
turntable_motor.stop(Stop.BRAKE)
Wir setzen die Ausgangsposition des Stifts in die obere Position:
pen_holder_raise()
Jetzt folgt der Hauptteil des Programms — eine Endlosschleife. Zuerst wartet der EV3, bis der Farbsensor weißes Papier oder das blaue Startfeld erkennt und der Tastsensor gedrückt wird. Dann zeichnet er das Muster, kehrt in die Ausgangsposition zurück und wiederholt alles.
Wenn das Gerät nicht bereit ist, leuchten die LEDs am Controller rot und auf dem LCD-Bildschirm wird das Bild "Daumen runter" angezeigt:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Wir warten, bis der Farbsensor blau oder weiß erkennt, setzen die Farbe der LEDs auf grün, zeigen auf dem LCD-Bildschirm das Bild "Daumen hoch" an und informieren, dass das Gerät bereit zum Arbeiten 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 den Druck des Tastsensors, setzen den Winkelwert des Gyrosensors auf 0 und beginnen zu 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 in die Ausgangsposition zurück:
pen_holder_raise()
pen_holder_turn_to(0)<\/i>
So haben wir ein einfaches Programm erstellt. Und jetzt starten wir es und schauen, wie der Zeichner-Roboter arbeitet.
Was bringen solche Beispiele

EV3 ist ein Instrument zur Berufsorientierung im Bereich der MINT-Berufe und ein Einstieg in Ingenieurberufe. Da mit ihm praktische Aufgaben gelöst werden können, erhalten Kinder Erfahrung in technischen Entwicklungen und im Bau von Industrierobotern, lernen, reale Situationen zu modellieren, Programme zu verstehen und Algorithmen zu analysieren sowie grundlegende Programmierkonstrukte zu beherrschen.
Die Unterstützung von MicroPython macht die EV3-Plattform für den Unterricht in der Oberstufe geeignet. Schüler können sich in der Rolle von Programmierern in einer der beliebtesten modernen Programmiersprachen versuchen und Berufe kennenlernen, die mit Programmierung und Ingenieurprojekten verbunden sind. Die EV3-Sets zeigen, dass das Programmieren von Code keine Angst machen muss, bereiten auf ernsthafte ingenieurtechnische Herausforderungen vor und helfen, den ersten Schritt in technische Berufe zu machen. Und für diejenigen, die in der Schule arbeiten und mit Bildung zu tun haben, haben wir und Lehrmaterialien vorbereitet. Darin ist detailliert beschrieben, welche Fähigkeiten beim Lösen bestimmter Aufgaben entwickelt werden und wie diese Fähigkeiten mit den Bildungsstandards korrelieren.
Quelle: habr.com
