Hallo, Habr! Wij al over het LEGO MINDSTORMS Education EV3-platform. De belangrijkste doelstellingen van dit platform zijn leren door middel van praktijkvoorbeelden, het ontwikkelen van STEAM-vaardigheden en het ontwikkelen van een technische mindset. Het kan worden gebruikt voor laboratoriumwerk om mechanica en dynamiek te bestuderen. Laboratoriumbanken gemaakt van LEGO-stenen en hulpprogramma's voor het vastleggen en verwerken van gegevens maken experimenten nog interessanter en visueler en helpen kinderen de natuurkunde beter te begrijpen. Leerlingen kunnen bijvoorbeeld smeltpuntgegevens verzamelen en de app gebruiken om deze te ordenen en in een grafiek te presenteren. Maar dit is nog maar het begin: vandaag zullen we je vertellen hoe je deze set kunt aanvullen met de MicroPython-programmeeromgeving en deze kunt gebruiken om robotica te onderwijzen.

Leer programmeren met EV3
Moderne schoolkinderen willen kleurrijke resultaten zien. Ja, ze vervelen zich als het programma cijfers naar de console afdrukt, en ze willen naar kleurengrafieken en diagrammen kijken en echte robots maken die bewegen en opdrachten volgen. Reguliere code lijkt ook te ingewikkeld voor kinderen, dus het is beter om met iets gemakkelijkers te beginnen.
De basis-EV3-programmeeromgeving is gebaseerd op de grafische taal LabVIEW en stelt u in staat algoritmen voor de robot visueel te specificeren: opdrachten worden gepresenteerd in de vorm van blokken die kunnen worden gesleept en verbonden.

Deze methode werkt goed als je wilt laten zien hoe algoritmen zijn opgebouwd, maar is niet geschikt voor programma's met een groot aantal blokken. Naarmate scenario's complexer worden, is het noodzakelijk om over te gaan op programmeren met code, maar deze stap is voor kinderen moeilijk te zetten.
Er zijn hier een paar trucjes, waarvan er één is om te laten zien dat de code hetzelfde doet als de blokken. In de EV3-omgeving is dit mogelijk via MicroPython-integratie, zodat kinderen hetzelfde programma kunnen maken in zowel de basisblokprogrammeeromgeving als Python in Visual Studio Code van Microsoft. Ze zien dat beide methoden hetzelfde werken, maar complexe problemen oplossen met behulp van code is handiger.
Overstappen naar MicroPython
De EV3-omgeving is gebouwd op een ARM9-processor en de ontwikkelaars hebben de architectuur bewust open gelaten. Deze oplossing maakte het mogelijk om alternatieve firmware uit te rollen, waaronder een image voor het werken met MicroPython. Hiermee kunt u Python gebruiken om uw EV3 te programmeren, waardoor de kit nog dichter bij echte taken komt.
Om te beginnen moet je downloaden op een microSD-kaart, installeer deze in de EV3-microcomputer en schakel deze in. Dan moet je installeren voor Visuele Studio. En je kunt beginnen met werken.
Programmeren van de eerste robot in MycroPython

Op onze Er zijn verschillende lessen om de basisconcepten van robotica onder de knie te krijgen. EV3-modellen laten kinderen kennismaken met de basisprincipes die worden gebruikt in zelfrijdende auto's, fabrieksassemblagerobots en CNC-machines.
We nemen het voorbeeld van een tekenmachine, waarmee u patronen en geometrische vormen kunt leren tekenen. Deze case is een vereenvoudigde versie van las- of freesrobots voor volwassenen en laat zien hoe EV3 in combinatie met MicroPython kan worden gebruikt om schoolkinderen les te geven. En een tekenmachine kan gaten in een printplaat voor papa markeren, maar dat is een ander niveau dat wiskunde vereist.
Voor werk hebben we nodig:
- LEGO MINDSTORMS Education EV3-basisset;
- groot vel geruit papier;
- gekleurde markeringen.
De montage van de robot zelf is binnen , en we zullen naar een programmeervoorbeeld kijken.
Eerst initialiseren we de EV3-modulebibliotheek:
#!/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
In poort B hebben we een platform opgezet dat de hendel als een motor laat draaien. We stellen de overbrengingsverhouding in van een tweetraps tandwieltrein met een aantal tanden van respectievelijk 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Het hefmechanisme voor de handgreep configureren we als motor in poort C:
seesaw_motor = Motor(Port.C)
In poort 2 configureren we de gyroscoop, die de hellingshoek van de handgreep meet:
gyro_sensor = GyroSensor(Port.S2)
De kleurensensor configureren we in poort 3. De sensor wordt gebruikt om wit papier onder de tekenmachine te detecteren:
color_sensor = ColorSensor(Port.S3)
We configureren de aanraaksensor in poort 4. De robot begint met tekenen wanneer de sensor wordt ingedrukt:
touch_sensor = TouchSensor(Port.S4)
We definiΓ«ren de functies die de hendel omhoog en omlaag brengen:
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)
We definiΓ«ren een functie om de hendel naar een bepaalde hoek of naar een bepaalde hoek te draaien:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Als de doelhoek groter is dan de huidige gyrosensorhoek, ga dan met de klok mee verder met een positieve snelheid:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Als de doelhoek kleiner is dan de huidige gyrosensor, beweeg dan tegen de klok in:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Stop het roterende platform wanneer de doelhoek is bereikt:
turntable_motor.stop(Stop.BRAKE)
Zet de uitgangspositie van de handgreep in de bovenste positie:
pen_holder_raise()
Nu komt het grootste deel van het programma: een eindeloze lus. EV3 wacht eerst tot de kleurensensor een wit papier of blauw startvierkantje detecteert en totdat de aanraaksensor wordt ingedrukt. Vervolgens tekent hij een patroon, keert terug naar de startpositie en herhaalt alles opnieuw.
Wanneer het apparaat niet gereed is, worden de LED's op de controller rood en wordt een "duim omlaag"-afbeelding weergegeven op het LCD-scherm:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
We wachten tot de kleurensensor blauw of wit telt, de LED-kleur op groen zetten, een βthumbs upβ-afbeelding op het LCD-scherm weergeven en melden dat het apparaat klaar is voor gebruik:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
We wachten tot de aanraaksensor wordt ingedrukt, wijzen de hoekwaarde 0 toe aan de gyroscopische sensor en beginnen met tekenen:
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)
Til de penhouder op en plaats deze terug in de oorspronkelijke positie:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Dit is het eenvoudige programma dat we hebben gemaakt. En nu lanceren we het en kijken we naar de tekenrobot in actie.
Wat bieden zulke voorbeelden?

EV3 is een hulpmiddel voor loopbaanbegeleiding voor STEM-carrières en een startpunt voor technische carrières. Omdat het kan worden gebruikt om praktische problemen op te lossen, doen kinderen ervaring op met de technische ontwikkeling en het maken van industriële robots, leren ze echte situaties te simuleren, begrijpen ze programma's en analyseren ze algoritmen, en beheersen ze basisprogrammeerconstructies.
MicroPython-ondersteuning maakt het EV3-platform geschikt voor lesgeven op middelbare scholen. Studenten kunnen zichzelf uitproberen als programmeur in een van de populairste moderne talen en kennis maken met beroepen die verband houden met programmeren en technisch ontwerp. EV3-kits laten zien dat coderen niet eng is, bereiden je voor op serieuze technische uitdagingen en helpen je de eerste stap te zetten naar het beheersen van technische vaardigheden. En voor degenen die op scholen werken en betrokken zijn bij het onderwijs, hebben we ons voorbereid en educatief materiaal. Ze beschrijven gedetailleerd welke vaardigheden worden ontwikkeld bij het uitvoeren van bepaalde taken, en hoe de verworven vaardigheden zich verhouden tot opleidingsnormen.
Bron: www.habr.com
