Lav en sorteringsmaskine
Design, byg og programmér en maskine, som kan genkende farverne på mindst tre forskellige LEGO® elementer og sortere dem til forskellige steder.
Lektionsplan
Forbered dig
- Læs denne undervisningsvejledning igennem.
- Hvis du føler, der er behov for det, kan du planlægge en lektion ved hjælp af Kom godt i gang-materialet i EV3 Lab-softwaren eller EV3 Programmerings-appen. Det vil hjælpe eleverne med at blive fortrolige med LEGO® MINDSTORMS® Education EV3.
Inddrag eleverne (30 min.)
- Brug idéerne i afsnittet Start en samtale nedenfor til at inddrage eleverne i en samtale om emnerne i dette projekt.
- Forklar projektet.
- Opdel klassen i hold a to elever.
- Giv eleverne tid til at brainstorme.
Undersøg (30 min.)
- Få eleverne til at lave flere forskellige prototyper.
- Lad dem udforske både byggeri og programmering.
- Få hvert elevpar til at bygge og teste to løsninger.
- Giv eleverne kopper eller andre beholdere til at rumme de sorterede genstande.
Forklar (60 min.)
- Bed eleverne om at teste deres løsninger og vælge den bedste.
- Sørg for, at de kan lave deres egne testskemaer.
- Giv holdene tid nok til at færdiggøre deres projekter og indsamle materiale til at dokumentere deres arbejde.
Udbyg (60 min.)
- Giv eleverne tid til at udarbejde deres endelige rapporter.
- Lad eleverne fremlægge deres resultater, så de kan dele deres erfaringer.
Evaluer
- Giv feedback om hver elevs præstation.
- For at forenkle processen kan du bruge det medfølgende evalueringsskema.
Start en samtale
Sorteringsmaskiner kan sortere genstande efter egenskaber såsom størrelse, vægt, kvalitet eller farve. De bruger forskellige sensorer til at måle disse egenskaber og derefter sortere hver genstand i den rigtige kategori.
Få eleverne til at deltage aktivt i en brainstorming.
Bed eleverne om at overveje disse spørgsmål:
- Hvilke farver skal sorteres?
- Hvilken størrelse elementer skal sorteres?
- Hvilken type motoriseret mekanisme kan flytte disse elementer?
- Hvordan kan maskinen registrere forskellige positioner?
- Hvilke designfunktioner sikrer, at maskinens bevægelser er præcise og gentagelige?
Få eleverne til at dokumentere deres indledende idéer og forklare, hvorfor de valgte netop den løsning, de vil bruge til deres første prototype. Bed dem om at beskrive, hvordan de vil evaluere deres idéer i løbet af projektet. På den måde har de specifikke oplysninger til rådighed, som de kan bruge til at evaluere deres løsning og afgøre, hvorvidt den er effektiv.
Idéer til videre arbejde
Idéer til videre arbejde – faglig kommunikation
Mulighed 1
For at styrke elevernes færdigheder i faglig kommunikation kan de:
- Bruge deres skriftlige arbejde, tegninger og/eller fotos til at opsummere deres designproces og lave en endelig rapport.
- Lave en video, hvor de demonstrerer deres designproces, fra deres indledende idéer til det færdige projekt.
*Lave en præsentation om deres program. - Lave en præsentation, som forbinder deres projekt med virkelige anvendelser af lignende systemer og beskriver nye opfindelser, man kan lave på baggrund af deres produkt.
Mulighed 2
I denne lektion lavede eleverne en sorteringsmaskine. Fødevare- og landbrugsindustrien bruger sorteringsmaskiner til at styre storstilet produktion og distribution af produkter.
For at styrke elevernes færdigheder i faglig kommunikation kan de:
- Beskrive størrelsen af deres lokale og regionale fødevare- eller landbrugsindustrier.
- Vælge en bestemt fødevare eller et bestemt landbrugsprodukt på en skala, der går fra små virksomheder/landbrug til produktion på nationalt eller internationalt plan, og undersøge de cybersikkerhedsproblemer, der kan være for fødevare- og landbrugsindustrien (f.eks. hvordan man garanterer en sikker og pålidelig fødevareproduktion).
Idéer til videre arbejde – matematik
I denne lektion byggede eleverne en automatisk sorteringsmaskine, der kan sortere genstande efter farve. Maskinlæring er en teknik, som ingeniører kan bruge til at bygge maskiner, der kan sortere genstande efter forskelle, der er endnu mere komplekse end farver. Til det formål bruges en maskinlæringsproces, der kaldes klassifikation.
For at styrke deres færdigheder i matematik og udforske den maskinlæringsproces, der kaldes klassifikation, kan eleverne:
- Indsamle nogle genstande, der kan sorteres (f.eks. sten, frugttyper, armbånd), og derefter udfylde en datatabel med observerbare kvalitative og kvantitative forskelle mellem genstandene.
- Definere, hvilke observerbare forskelle der ville føre til sorteringskriterierne "ønsket" og "ikke-ønsket" (f.eks vægt, farve, størrelse, fejl) for en enkelt kategori af genstande.
- Foreslå og eventuelt bygge et nyt sorteringsdesign og en ny programmeringsalgoritme til deres robotter, så de kan sortere efter yderligere egenskaber såsom størrelse og vægt.
Byggetips
Byggeidéer
Giv eleverne mulighed for at bygge nogle eksempler ud fra nedenstående links. Få dem til at undersøge, hvordan disse systemer fungerer, og brainstorme over, hvordan systemerne kan give inspiration til en løsning på opgaveformuleringen.
Testtips
Få eleverne til at designe deres egne testopstillinger og fremgangsmåder til at vælge den bedste løsning. Disse tips kan hjælpe eleverne med at opstille deres tests:
- Markér det sted, hvor maskinen skal anbringe genstandene.
- Brug kopper eller andre beholdere til at rumme de sorterede genstande.
- Lav testskemaer til at registrere dine observationer.
- Vurder din maskines præcision ved at sammenholde de forventede resultater med de faktiske resultater.
- Gentag testen mindst tre gange.
Løsningseksempel
Her er et løsningseksempel, der opfylder kriterierne i opgaveformuleringen:
Programmeringstips
EV3 MicroPython programeksempel
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor, ColorSensor
from pybricks.parameters import (Port, Button, Color, ImageFile,
SoundFile)
from pybricks.tools import wait
# The Color Squares are red, green, blue, or yellow.
POSSIBLE_COLORS = (Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW)
# Configure the belt motor with default settings. This motor drives
# the conveyor belt.
belt_motor = Motor(Port.D)
# Configure the feed motor with default settings. This motor ejects
# the Color Squares.
feed_motor = Motor(Port.A)
# Set up the Touch Sensor. It is used to detect when the belt motor
# has moved the sorter module all the way to the left.
touch_sensor = TouchSensor(Port.S1)
# Set up the Color Sensor. It is used to detect the color of the Color
# Squares.
color_sensor = ColorSensor(Port.S3)
# This is the main part of the program. It is a loop that repeats
# endlessly.
#
# First, it moves the 2 motors to their correct starting positions.
# Second, it waits for you to scan and insert up to 8 Color Squares.
# Finally, it sorts them by color and ejects them in their correct
# positions.
#
# Then the process starts over, so you can scan and insert the next set
# of Color Squares.
while True:
# Initialize the feed motor. This is done by running the motor
# forward until it stalls. This means that it cannot move any
# further. From this end point, the motor rotates backward by 180
# degrees. This is the starting position.
feed_motor.run_until_stalled(120)
feed_motor.run_angle(450, -180)
# Initialize the conveyor belt motor. This is done by first
# running the belt motor backward until the Touch Sensor is
# pressed. Then the motor stops and the angle is reset to "0."
# This means that when it rotates backward to "0" later on, it
# returns to this starting position.
belt_motor.run(-500)
while not touch_sensor.pressed():
pass
belt_motor.stop()
wait(1000)
belt_motor.reset_angle(0)
# Clear all the contents from the Display.
brick.display.clear()
# Scanning a Color Square stores the color in a list. The list is
# empty to start. It will grow as colors are added to it.
color_list = []
# This loop scans the colors of the objects. It repeats until 8
# objects are scanned and placed in the chute. This is done by
# repeating the loop while the length of the list is less than 8.
while len(color_list) < 8:
# Display an arrow that points to the Color Sensor.
brick.display.image(ImageFile.RIGHT)
# Display how many Color Squares have been scanned so far.
brick.display.text(len(color_list))
# Wait until the Center Button is pressed or a Color Square is
# scanned.
while True:
# Store "True" if the Center Button is pressed or "False"
# if not.
pressed = Button.CENTER in brick.buttons()
# Store the color measured by the Color Sensor.
color = color_sensor.color()
# If the Center Button is pressed or one of the possible
# colors is detected, break out of the loop.
if pressed or color in POSSIBLE_COLORS:
break
if pressed:
# If the button was pressed, end the loop early. It will
# no longer wait for any Color Squares to be scanned and
# added to the chute.
break
else:
# Otherwise, a color was scanned, so it is added (appended)
# to the list.
brick.sound.beep(1000, 100, 100)
color_list.append(color)
# It should not register the same color again if it is
# still looking at the same Color Square. So, before
# continuing, wait until the sensor no longer sees the
# Color Square.
while color_sensor.color() in POSSIBLE_COLORS:
pass
brick.sound.beep(2000, 100, 100)
# Display an arrow pointing down and wait 2 seconds to
# allow some time to slide the Color Square into the
# motorized chute.
brick.display.image(ImageFile.BACKWARD)
wait(2000)
# Play a sound and display an image to indicate that scanning is
# complete.
brick.sound.file(SoundFile.READY)
brick.display.image(ImageFile.EV3)
# Now sort the bricks using the list of colors that have been
# stored. Do this by looping over each color in the list.
for color in color_list:
# Wait for 1 second between each sorting action.
wait(1000)
# Run the conveyor belt motor to the position that corresponds
# to the stored color.
if color == Color.BLUE:
brick.sound.file(SoundFile.BLUE)
belt_motor.run_target(500, 10)
elif color == Color.GREEN:
brick.sound.file(SoundFile.GREEN)
belt_motor.run_target(500, 132)
elif color == Color.YELLOW:
brick.sound.file(SoundFile.YELLOW)
belt_motor.run_target(500, 360)
elif color == Color.RED:
brick.sound.file(SoundFile.RED)
belt_motor.run_target(500, 530)
# Now that the conveyor belt is in the correct position, eject
# the colored object.
feed_motor.run_angle(1500, 90)
feed_motor.run_angle(1500, -90)
Mulige karrierer
Hvis eleverne kunne lide denne lektion, ville de måske være interesserede i at undersøge karrieremuligheder inden for:
- Landbrug og gartneri (landbrugsmekanik og -teknologi)
- Fremstilling og teknik (maskinteknologi)
Evalueringsmuligheder
Underviserens observationstjekliste
Lav en skala, der passer til dine behov, f.eks.:
- Delvist gennemført
- Gennemført
- Gennemført over forventning
Brug de følgende succeskriterier til at evaluere elevernes fremskridt:
- Eleverne kan evaluere konkurrerende designløsninger på baggrund af prioriterede kriterier og omhyggelige afvejninger.
- Eleverne kan selvstændigt udvikle en fungerende og kreativ løsning.
- Eleverne kan tydeligt kommunikere deres idéer.
Selvevaluering
Når eleverne har indsamlet data om deres løsningers ydeevne, skal de have tid til at reflektere over løsningerne. Hjælp dem ved at stille spørgsmål som:
- Opfylder din løsning kriterierne i opgaveformuleringen?
- Kan din maskines bevægelse(r) gøres mere præcise?
- Hvordan har andre løst dette problem?
Bed eleverne om at brainstorme og dokumentere to måder, de kunne forbedre deres løsninger på.
Fælles feedback
Lad eleverne deltage i en evalueringsproces, hvor hver gruppe skal evaluere både deres eget og de andres projekter. Denne evalueringsproces kan hjælpe eleverne med at udvikle deres kompetencer i at give konstruktiv feedback samt forbedre deres analysefærdigheder og evner til at bruge objektive data til understøttelse af deres argumenter.
Hjælp til lærere
Eleverne skal:
-Bruge designprocessen til at løse virkelige problemer
LEGO® MINDSTORMS® Education EV3 basissæt
Kopper eller andre beholdere til at rumme de sorterede genstande
Tape til at markere positioner
Elevmateriale
Elevark
Download, få vist eller del som en online HTML-side eller en PDF-fil, der kan udskrives.