MARCUS'S ACCESSIBLE WEATHER STATION

MARCUS'S ACCESSIBLE WEATHER STATION

OVERVIEW

This lesson guides K-2 students through creating a simple interactive weather station using the Smart Servo technology. Students will help "Marcus," a fictional kindergarten student who is blind, to independently check the daily weather. Through this engaging project, students will develop basic engineering, programming, and empathy skills while creating a tactile weather indicator that uses servo movement to point to different weather conditions, allowing Marcus to feel the position and understand the forecast without needing to see visual representations.

Client Profile

Name About Me My Challenge
Marcus, Age 6 I'm in kindergarten and I love being outside! I like to know what the weather is going to be so I can decide what to wear and what games to play at recess. I was born blind, which means I can't see things like pictures or weather symbols on a screen or in books. I want to be able to check the weather by myself before school. My family tells me the weather forecast, but I'd like to be independent and check it on my own without having to ask for help. Visual weather displays and apps don't work for me since I can't see them.

Learning Objectives

MATERIALS NEEDED

1. ENGAGE

How do we find out about the weather if we can't see?

Activity: "Understanding Marcus's Experience"

  1. Introduction:
    • Introduce students to "Marcus" through his profile
    • Ask students: "How do you check the weather each day? What do you look for?"
    • Discuss: "What if you couldn't see the weather or pictures of the weather?"
  2. Empathy Experience:
    • Have students close their eyes or wear blindfolds
    • Place different textured materials in front of them (representing different weather)
    • Have them try to identify the materials by touch only
    • Ask: "Was it easy or hard to understand what you were feeling? How could we use touch to tell someone about the weather?"
  3. Technology Introduction:
    • Show students the Smart Servo and explain how it can move a pointer to different positions
    • Demonstrate a simple servo movement using the basic servo control code

Basic Servo Movement

# Basic Servo Movement
import time
import board
import pwmio
import servo
pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
my_servo = servo.Servo(pwm)
while True:
    my_servo.angle = 0      # Sunny position
    time.sleep(2)
    my_servo.angle = 45     # Cloudy position
    time.sleep(2)
    my_servo.angle = 90     # Rainy position
    time.sleep(2)

Checkpoints & Assessment

Technical Checkpoints:

Understanding Checkpoints:

Connections

Connections to Standards Connections to CAD Skills Connections to HCD Skills
STEL 1J: Develop innovative products that solve problems based on needs CAD 1.2: Following a simple design process HCD Skill #1: Problem Framing - Understanding Marcus's challenge
STEL 4N: Analyze how technology changes communication CAD 2.1: Basic spatial awareness for tactile interface HCD Skill #6: Stakeholder Dialogue - Understanding user needs

2. EXPLORE

How can we design a weather station that Marcus can feel with his hands?

Activity: "Designing a Tactile Weather Station"

  1. Setup:
    • Divide students into small groups (2-3)
    • Provide each group with craft materials and textured materials
    • Show example of a simple cardboard base with marked positions
  2. Brainstorming:
    • Have students draw 2-3 ideas for a tactile weather station
    • Discuss different weather conditions: sunny, cloudy, rainy, snowy
    • Consider how to create distinct positions that feel different
  3. Creating Tactile Markers:
    • Students create a circular or semi-circular base with 3-4 weather positions
    • Apply different textures to each position (smooth for sunny, bumpy for cloudy, etc.)
    • Design a simple pointer that the servo can move to different positions

Test Servo Position at Different Weather Points

# Test Servo Position at Different Weather Points
import time
import board
import pwmio
import servo
pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
my_servo = servo.Servo(pwm)

# Test positions for different weather types
my_servo.angle = 0      # Position 1 (Sunny)
time.sleep(3)           # Wait 3 seconds
my_servo.angle = 60     # Position 2 (Cloudy)
time.sleep(3)           # Wait 3 seconds
my_servo.angle = 120    # Position 3 (Rainy)
time.sleep(3)           # Wait 3 seconds
my_servo.angle = 180    # Position 4 (Snowy)
time.sleep(3)           # Wait 3 seconds

Checkpoints & Assessment

Technical Checkpoints:

Understanding Checkpoints:

3. EXPLAIN

How does our weather station work for someone who can't see?

Key Concepts

Our weather station uses a servo motor to move a pointer to different positions around a circle. Each position represents a different type of weather (sunny, cloudy, rainy, or snowy). By feeling the position of the pointer and the texture underneath it, Marcus can understand the weather forecast without needing to see it. We use a button to change the position based on the daily weather.

Activity: "Programming Our Weather Station"

  1. Button Control Introduction:
    • Demonstrate how a button can move the servo to different positions
    • Explain in simple terms: "Each time we press the button, the pointer moves to show a different type of weather"
  2. Code Exploration:
    • Show students the simplified code that makes the servo move when the button is pressed
    • Have students predict what will happen with each button press

Weather Station Button Control

# Weather Station Button Control
import time
import board
from digitalio import DigitalInOut, Direction, Pull
import pwmio
import servo

# Set up the button
button = DigitalInOut(board.D2)
button.direction = Direction.INPUT
button.pull = Pull.UP

# Set up the servo
pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
weather_pointer = servo.Servo(pwm)

# Starting position
position = 0
weather_pointer.angle = 0

while True:
    # Check if button is pressed
    if button.value == 0:  # Button is pressed
        # Change to next weather position
        position = position + 1
        if position > 3:
            position = 0
        
        # Move pointer to the right position
        if position == 0:
            weather_pointer.angle = 0    # Sunny
        elif position == 1:
            weather_pointer.angle = 60   # Cloudy
        elif position == 2:
            weather_pointer.angle = 120  # Rainy
        elif position == 3:
            weather_pointer.angle = 180  # Snowy
            
        time.sleep(0.5)  # Wait to avoid multiple presses

Checkpoints & Assessment

Understanding Checkpoints:

3. EXPLAIN

How does our weather station work for someone who can't see?

Key Concepts

Our weather station uses a servo motor to move a pointer to different positions around a circle. Each position represents a different type of weather (sunny, cloudy, rainy, or snowy). By feeling the position of the pointer and the texture underneath it, Marcus can understand the weather forecast without needing to see it. We use a button to change the position based on the daily weather.

Activity: "Programming Our Weather Station"

  1. Button Control Introduction:
    • Demonstrate how a button can move the servo to different positions
    • Explain in simple terms: "Each time we press the button, the pointer moves to show a different type of weather"
  2. Code Exploration:
    • Show students the simplified code that makes the servo move when the button is pressed
    • Have students predict what will happen with each button press

Weather Station Button Control

# Weather Station Button Control
import time
import board
from digitalio import DigitalInOut, Direction, Pull
import pwmio
import servo

# Set up the button
button = DigitalInOut(board.D2)
button.direction = Direction.INPUT
button.pull = Pull.UP

# Set up the servo
pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
weather_pointer = servo.Servo(pwm)

# Starting position
position = 0
weather_pointer.angle = 0

while True:
    # Check if button is pressed
    if button.value == 0:  # Button is pressed
        # Change to next weather position
        position = position + 1
        if position > 3:
            position = 0
        
        # Move pointer to the right position
        if position == 0:
            weather_pointer.angle = 0    # Sunny
        elif position == 1:
            weather_pointer.angle = 60   # Cloudy
        elif position == 2:
            weather_pointer.angle = 120  # Rainy
        elif position == 3:
            weather_pointer.angle = 180  # Snowy
            
        time.sleep(0.5)  # Wait to avoid multiple presses

Understanding Checkpoints:

  • Students can explain in simple terms what happens when the button is pressed
  • Students understand that the servo moves to different positions for different weather
  • Students recognize how Marcus would use touch to understand the weather station

4. ELABORATE

How can we improve our weather station to work better for Marcus?

Extension Activity: "Making It Better"

  1. Texture Testing:
    • Have students test their weather stations with eyes closed
    • Try different textures and positions to see which are easiest to distinguish
    • Modify the design based on feedback
  2. Button Accessibility:
    • Discuss where the button should be placed so Marcus can easily find and press it
    • Consider adding a texture or shape to the button to make it easy to locate
  3. Adding Weather Sounds:
    • For advanced groups, discuss how the Neopixel LED could be used to add different colors for family members to see
    • Explore the idea of adding simple sound cues (teacher demonstration only)

Enhanced Weather Station with LED

# Enhanced Weather Station with LED
import time
import board
from digitalio import DigitalInOut, Direction, Pull
import pwmio
import servo
import neopixel

# Set up the button
button = DigitalInOut(board.D2)
button.direction = Direction.INPUT
button.pull = Pull.UP

# Set up the servo
pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
weather_pointer = servo.Servo(pwm)

# Set up the Neopixel LED
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.3)

# Starting position
position = 0
weather_pointer.angle = 0
pixel.fill((255, 255, 0))  # Yellow for sunny

while True:
    # Check if button is pressed
    if button.value == 0:  # Button is pressed
        # Change to next weather position
        position = position + 1
        if position > 3:
            position = 0
        
        # Move pointer to the right position and set LED color
        if position == 0:
            weather_pointer.angle = 0    # Sunny
            pixel.fill((255, 255, 0))    # Yellow
        elif position == 1:
            weather_pointer.angle = 60   # Cloudy
            pixel.fill((200, 200, 200))  # White/gray
        elif position == 2:
            weather_pointer.angle = 120  # Rainy
            pixel.fill((0, 0, 255))      # Blue
        elif position == 3:
            weather_pointer.angle = 180  # Snowy
            pixel.fill((255, 255, 255))  # White
            
        time.sleep(0.5)  # Wait to avoid multiple presses

Application Checkpoints:

  • Students can improve their design based on tactile testing
  • Students consider button accessibility for someone who can't see
  • Students can explain why their final design works well for Marcus

5. EVALUATE

How well does our weather station help Marcus check the weather independently?

Assessment Criteria

Students will demonstrate their weather station designs to the class. They will explain how their design works and show how it can be used without looking at it. The teacher will assess both the functionality of the design and the students' understanding of how their solution helps Marcus.

Assessment Rubric

Criteria Level 1 Level 2 Level 3 Level 4
Functionality Weather station moves but positions are difficult to distinguish Weather station has distinct positions but requires explanation Weather station has clearly distinguishable positions that can be understood by touch Weather station works intuitively with multiple tactile features and easy button access
Understanding Student can name parts of the weather station Student can explain how the button makes the servo move Student can explain why their design helps Marcus Student can suggest additional improvements based on Marcus's needs
Empathy Student recognizes that Marcus needs a different way to check weather Student explains why tactile information is important Student considers multiple aspects of using a device without vision Student demonstrates thoughtful consideration of how their device improves Marcus's independence
Collaboration Student participates minimally in group work Student contributes ideas to the group Student actively participates in design and testing Student helps others and incorporates teammates' ideas