Lage en sorteringsmaskin
Design, bygg og programmer en maskin som kan identifisere minst tre ulike farger på LEGO® elementer, og sortere dem på tre ulike steder.
Leksjonsplan
Forberede
- Les gjennom dette lærermaterialet.
- Du kan planlegge en leksjon ved bruk av Kom i gang-materialet i EV3 Lab-programvaren eller EV3 Programmering-appen, ved behov. Dette gjør at elevene blir kjent med LEGO® MINDSTORMS® Education EV3.
Engasjere (30 min.)
- Bruk ideene i Starte en diskusjon-delen nedenfor til å engasjere elevene i en diskusjon knyttet til dette prosjektet.
- Forklar prosjektet.
- Del klassen i grupper på to elever.
- La elevene få nok tid til å en idédugnad.
Utforske (30 min.)
- Be elevene om å opprette flere prototyper.
- Oppfordre dem til å utforske både bygging og programmering.
- Be hver gruppe om å bygge og teste to løsninger.
- Gi elevene kopper eller andre beholdere for å holde de sorterte objektene.
Forklare (60 min.)
- Be elevene om å teste løsningene sine og velge den beste.
- Sørg for at de kan lage sine egne testtabeller.
- La gruppene få litt tid til å avslutte prosjektet og til å samle inn informasjon for å dokumentere arbeidet.
Utdype (60 min.)
- Gi elevene litt tid til å lage sine endelige rapporter.
- Start en delingsøkt der hver gruppe presenterer sine resultater.
Evaluere
- Gi tilbakemelding på elevenes arbeid.
- Du kan bruke de vedlagte vurderingsrubrikkene for å forenkle prosessen.
Starte en diskusjon
Sorteringsmaskiner kan sortere objekter basert på egenskaper som størrelse, vekt, kvalitet eller farge. De bruker en rekke sensorer til å måle disse egenskapene, og deretter sortere hvert objekt i riktig kategori.
Oppfordre til en aktiv idédugnadsprosess.
Be elevene om å tenke gjennom disse spørsmålene:
- Hvilke farger ønsker du å sortere?
- Hvilke elementstørrelser ønsker du å sortere?
- Hvilke type motoriserte mekanismer kan brukes til å flytte en ball?
- Hvordan kan maskinen registrere ulike posisjoner?
- Hvilke funksjoner sikrer at maskinen beveger seg nøyaktig, og at bevegelsene gjentar seg?
Oppfordre elevene til å dokumentere sine første ideer og forklare hvorfor de valgte løsningen de vil bruke for sin første prototype. Be dem beskrive hvordan de vil evaluere ideene sine gjennom hele prosjektet. På denne måten, når elevene ser gjennom og endrer, har de spesifikk informasjon som de kan bruke til å evaluere løsningen, og avgjøre om den var effektiv eller ikke.
Flere ideer
Flere ideer til norskundervisningen
Alternativ 1
Legge til rette for utvikling av språklige ferdigheter, og be elevene om å:
- Bruke skriftlig arbeid, skisser og/eller bilder til å oppsummere designprosessen, og lage en endelig rapport.
- Lage en video som demonstrerer designprosessen helt fra de første ideene og til det fullførte prosjektet.
- Lage en presentasjon om programmet sitt.
- Lage en presentasjon som knytter prosjektet til realistiske brukstilfeller med lignende systemer, og beskriver nye oppfinnelser som kan gjøres basert på hva de har laget.
Alternativ 2
I denne leksjonen laget elevene en sorteringsmaskin. Næringsmiddel- og landbruksindustrien bruker sorteringsmaskiner for å administrere produktproduksjon og distribusjon i storskala.
Legge til rette for utvikling av språklige ferdigheter, og be elevene om å:
- Beskrive omfanget av deres lokale og regionale næringsmiddel- og landbruksindustri
- Velge et bestemt mat- eller landbruksprodukt i en bestemt skala som spenner fra småbedrifter/gårder til produksjon på nasjonalt eller internasjonalt nivå, og undersøke cybersikkerhetsproblemer knyttet til næringsmiddel- og landbruksindustrien (f.eks. hvordan man sikrer sikker, pålitelig matproduksjon)
Flere ideer til matematikk
I denne leksjonen bygde elevene en robotsorteringsmaskin som sorterte objekter basert på farger. Maskinlæring er en teknikk ingeniører kan bruke til å bygge maskiner som sorterer objekter i henhold til forskjeller, som er enda mer komplekse enn farge. For å oppnå dette bruker utviklere en maskinlæringsprosess kalt klassifisering.
Hvis du vil innlemme matematisk kompetanseutvikling og utforske maskinlæringsprosessen som heter klassifisering, ber du elevene om å:
- Samle inn en type sorterbare objekter (f.eks. bergarter, frukttyper, armbånd) og deretter fylle ut en datatabell som viser observerbare kvalitative og kvantitative forskjeller mellom objektene
- Definere hvilke observerbare forskjeller som vil føre til «ønsket» kontra «uønsket» (f.eks. vekt, farge, størrelse, ufullstendigheter) sorteringskriterie for en enkelt kategori av objekter
- Foreslå og muligens bygge en ny sorteringsdesign og programmeringsalgoritme for robotene sine, som gjør dem i stand til å sortere etter flere egenskaper som størrelse eller vekt
Byggetips
Byggeideer
Gi elevene muligheten til å bygge noen eksempler fra lenkene nedenfor. Oppfordre dem til å utforske hvordan disse systemene fungerer, og til å gjennomføre en idédugnad om hvordan disse systemene kan føre til en løsning på designskissen.
Tips for testing
Oppfordre elevene til å designe sine egne testoppsett og lage prosedyrer for å velge den beste løsningen. Disse tipsene kan hjelpe elevene dine når de sette opp testen:
- Merk plasseringen for å vise hvor maskinen skal plassere objekter.
- Bruk kopper eller andre beholdere for å holde de sorterte objektene.
- Opprett testtabeller som registrerer observasjonene dine.
- Evaluer nøyaktigheten til maskinen ved å sammenligne de forventede resultatene med de faktiske resultatene.
- Gjenta testen minst tre ganger.
Forslag til løsning
Her er et forslag til løsning som oppfyller kriteriene til designskissen:
Programmeringstips
EV3 MicroPython Prøveprogram
#!/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)
Lenker til karrieremuligheter
Elevene som likte denne leksjonen, kan også være interessert i å utforske disse karrieremulighetene:
- Landbruk og hagebruk (landbruksprodukter og -teknologi)
- Produksjon og maskinteknikk (maskinteknologi)
Vurderingsmuligheter
Observasjonssjekkliste for lærer
Lag en skala som stemmer overens med behovene dine, for eksempel:
- Delvis fullført
- Fullstendig fullført
- Overgikk forventningene
Bruk følgende kriterier for å evaluere elevenes arbeid:
- Elevene kan evaluere konkurrerende designløsninger basert på prioriterte kriterier og andres hensyn.
- Elevene styrer selv utviklingen av en fungerende og kreativ løsning.
- Elevene kan kommunisere ideene sine tydelig.
Egenvurdering
Når elevene har samlet inn ytelsesdata, kan du gi dem tid til å reflektere over løsningene sine. Hjelp dem ved å stille spørsmål som:
- Oppfyller løsningen kriteriene til designoversikten?
- Kan maskinens bevegelse(r) bli enda mer nøyaktige?
- Har andre løst problemet på andre måter?
Be elevene om å gjennomføre en idédugnad og dokumentere to måter de kan forbedre løsningene sine på.
Tilbakemelding fra andre
Oppmuntre til parvurdering blant elevene slik at hver gruppe er ansvarlige for å evaluere sitt eget og andres prosjekt. Denne par-vurderingen kan bidra til å utvikle elevenes ferdigheter i å gi konstruktive tilbakemeldinger, så vel som å forbedre analyseferdighetene og bruken av objektive data for å støtte et argument.
Lærerstøtte
Elevene kommer til å:
- Bruke designprosessen til å løse problemer i den virkelige verden
LEGO® MINDSTORMS® Education EV3 Grunnsett
Kopper eller andre beholdere for å holde de sorterte objektene
Teip til å merke plasseringene
Naturfag etter 10.trinn
- utvikle produkter ut fra kravspesifikasjoner og vurdere produktenes funksjonalitet, brukervennlighet og livsløp i forhold til bærekraftig
utvikling
Valgfag programmering
- omgjøre problemer til konkrete delproblemer, vurdere hvilke delproblemer som lar seg løse digitalt, og utforme løsninger for disse
- utvikle og feilsøke programmer som løser definerte problemer, inkludert realfaglige problemstillinger og kontrollering eller simulering av fysiske objekter