ISABELLA'S YARN HELPER
OVERVIEW
This challenging-level lesson guides 3rd-5th grade students through creating an assistive device for Isabella, a 9-year-old with juvenile rheumatoid arthritis. Using the Smart Servo platform, students will design and build a yarn holder and tensioner that helps Isabella pursue her love of knitting and crafts despite joint pain and limited mobility. Students will apply human-centered design principles, develop programming skills with Circuit Python, and create custom 3D-printed components to solve a real-world problem.
Client Profile
Name | About Me | My Challenge |
---|---|---|
Isabella, Age 9 | I love making things with yarn - especially knitting small animals for my friends. I was diagnosed with juvenile rheumatoid arthritis last year, which makes my joints hurt, especially in my hands and wrists. On bad days, it's hard to hold the yarn with the right tension, and my projects get all uneven. | When I'm knitting, I need to control how tight the yarn is. Sometimes I need to hold it tightly, and other times I need to let it feed easily. My hands get tired and painful when I try to maintain consistent tension, and I often have to stop before finishing projects. I'd love something that could hold my yarn ball and help me control the tension without hurting my hands. |
Learning Objectives
- Design a working assistive device that responds to the specific needs of a client with juvenile rheumatoid arthritis
- Program a Smart Servo to create adjustable tension levels that can be controlled through accessible inputs
- Apply human-centered design techniques including empathy interviews, iteration, and user testing
- Create a system that incorporates digital input, mechanical movement, and visual feedback
- Utilize CAD skills to design custom components that integrate with the Smart Servo
MATERIALS NEEDED
- Smart Servo units (1 per team)
- USB C Programming Cables
- AT Test Buttons and/or Jelly Bean Buttons
- LocLine flexible connectors
- 10mm framing pieces
- M5 screws and fasteners
- Allen wrenches and basic tools
- 3D printer (Bambu Lab A1 Mini recommended) with PLA filament
- Crafting materials (yarn, knitting needles, etc. for testing)
- OnShape CAD software (free classroom license)
- Cardboard, foam board, and craft supplies for prototyping
1. ENGAGE
How might we design devices that adapt to users with different physical needs?
Activity: "A Day in Isabella's Life"
- Empathy Simulation:
- Divide students into pairs
- Have students wrap several rubber bands tightly around their finger joints before attempting to hold and control yarn for knitting or crafting
- Ask students to attempt basic knitting or yarn-winding tasks while maintaining this restriction
- Discussion Circle:
- Ask: "How did it feel to try to work with yarn with limited joint mobility?"
- Ask: "What strategies did you develop to overcome the challenge?"
- Introduce Isabella's profile and read her story to the class
- Ask: "Based on your experience, what specific problems might Isabella face when working with yarn?"
- Problem Introduction:
- Introduce the Smart Servo as a potential solution platform
- Demonstrate basic servo operation with the following code:
Basic Servo Movement Demo
# Basic Servo Movement Demo 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: for angle in range(0, 180, 5): # 0 to 180 degrees, step 5 my_servo.angle = angle time.sleep(0.05) for angle in range(180, 0, -5): # 180 to 0 degrees, step 5 my_servo.angle = angle time.sleep(0.05)
Checkpoints & Assessment
Technical Checkpoints:
- Students can identify the main components of the Smart Servo
- Students can explain how the servo creates movement
Understanding Checkpoints:
- Students can articulate at least three challenges Isabella faces
- Students can explain how limitations in joint mobility affect yarn crafting
Connections
Connections to Standards | Connections to CAD Skills | Connections to HCD Skills |
---|---|---|
STEL 4K: Examine positive and negative effects of technology | CAD 1.2: Design Process - Following structured design processes | HCD Skill #1: Problem Framing - Analyzing situations from multiple perspectives |
STEL 4N: Analyze how technologies change human interaction | CAD 2.1: Freehand Sketching - Quick visualization of ideas | HCD Skill #6: Stakeholder Dialogue - Gathering requirements |
2. EXPLORE
How can we control tension and movement with a programmable servo motor?
Activity: "Tension Testing Lab"
- Setup:
- Provide teams with Smart Servo units and various yarn samples
- Set up testing stations with different tensioning methods (simple pulleys, springs, etc.)
- Experiment: Servo Control Testing:
- Students modify and test this code to explore different servo positions:
Tension Control Testing
# Tension Control Testing import time import board import pwmio import servo from digitalio import DigitalInOut, Direction, Pull # Setup servo pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) my_servo = servo.Servo(pwm) # Setup button button = DigitalInOut(board.D2) button.direction = Direction.INPUT button.pull = Pull.UP # Variables for tracking current_angle = 90 # Start at middle position tension_levels = [30, 60, 90, 120, 150] # Different tension positions current_level = 2 # Start at middle tension level # Setup LED for feedback led = DigitalInOut(board.LED) led.direction = Direction.OUTPUT while True: # Check if button is pressed if not button.value: # Button is pressed (pulled to ground) # Move to next tension level current_level = (current_level + 1) % len(tension_levels) current_angle = tension_levels[current_level] my_servo.angle = current_angle # Blink LED to show level change for _ in range(current_level + 1): led.value = True time.sleep(0.1) led.value = False time.sleep(0.1) # Debounce time.sleep(0.5)
- Investigation: Tensioning Mechanisms:
- Students experiment with different ways to create yarn tension:
- Direct tension (yarn wrapped around servo arm)
- Pulley systems (yarn routed through moving guides)
- Pressure mechanisms (servo pressing yarn against surface)
- For each method, students record:
- How easy it is to adjust
- How consistent the tension remains
- How it affects yarn feeding
- Students experiment with different ways to create yarn tension:
- Brainstorming:
- Based on their experiments, students sketch at least three different mechanisms for how a servo could provide adjustable tension for yarn
Checkpoints & Assessment
Technical Checkpoints:
- Students can modify servo position values in code
- Students can explain how button inputs control servo behavior
- Students can create a simple tension mechanism using the servo
Understanding Checkpoints:
- Students can describe at least two ways to modify yarn tension
- Students can articulate which tension method would be most helpful for Isabella
3. EXPLAIN
How can we design assistive technology that balances functionality, ease of use, and adaptability?
Key Concepts
Assistive Technology Design Principles:
- User-Centered: The device must address Isabella's specific needs, not generic solutions
- Accessible Control: Input methods must accommodate limited joint mobility
- Adaptability: The device should adjust to different yarn types and tensions
- Feedback: Visual or auditory signals help users understand device state
- Mechanical Advantage: Using technology to reduce physical effort required
Programming Concepts:
- Input Processing: Reading button or switch states
- State Management: Tracking and changing modes of operation
- Servo Control: Precise positioning based on user needs
- Visual Feedback: Using LEDs to communicate device status
Activity: "Designing Isabella's Solution"
- Define Requirements:
- Students create a list of "must have" and "nice to have" features for Isabella's yarn helper
- Requirements should include specific tension levels needed and control methods
- Initial Design:
- Teams create detailed sketches of their proposed solution
- Sketches must include:
- Position of the Smart Servo
- Yarn path through the device
- Control method (button placement)
- Mounting or stabilizing features
- LED feedback positioning
- Pseudocode Development:
- Students write pseudocode for their solution, focusing on:
- How many tension settings will be available
- How user inputs will change tension
- What feedback the system will provide
- Students write pseudocode for their solution, focusing on:
Technical Checkpoints:
- Designs show clear understanding of servo movement capabilities
- Pseudocode demonstrates logical flow for tension adjustments
Understanding Checkpoints:
- Designs directly address Isabella's specific needs
- Student designs show consideration of joint limitations in control placement
4. ELABORATE
How can we refine our solution to make it more effective and user-friendly?
Activity: "Prototype Development"
- CAD Design and 3D Printing:
- Students create CAD designs in OnShape for custom components:
- Servo mounts or enclosures
- Yarn guides or tension mechanisms
- Button holders or mounting brackets
- Export designs for 3D printing
- Students create CAD designs in OnShape for custom components:
- Assembly and Integration:
- Assemble mechanical components with the Smart Servo
- Install input devices (buttons) in accessible positions
- Test mechanical movement and stability
- Programming and Refinement:
- Students complete and upload their code to the Smart Servo:
Isabella's Yarn Helper
# Isabella's Yarn Helper import time import board import pwmio import servo from digitalio import DigitalInOut, Direction, Pull import neopixel # Setup servo pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) my_servo = servo.Servo(pwm) # Setup buttons - primary control and mode button tension_button = DigitalInOut(board.D2) tension_button.direction = Direction.INPUT tension_button.pull = Pull.UP mode_button = DigitalInOut(board.D4) mode_button.direction = Direction.INPUT mode_button.pull = Pull.UP # Setup NeoPixel for better visual feedback pixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.3) # Tension settings - tuned for different yarn weights # [loose, medium-loose, medium, medium-tight, tight] tension_positions = [20, 60, 90, 120, 160] tension_colors = [(0,0,255), (0,255,255), (0,255,0), (255,255,0), (255,0,0)] current_tension = 2 # Start at medium tension # Mode settings - different yarn feeding modes modes = ["regular", "auto-feed"] # Regular or pulsing for auto-feed current_mode = 0 def display_tension(): """Display current tension level with color""" pixel.fill(tension_colors[current_tension]) # Also blink to indicate level for _ in range(current_tension + 1): pixel.brightness = 0.1 time.sleep(0.1) pixel.brightness = 0.3 time.sleep(0.1) def change_tension(): """Change to next tension level""" global current_tension current_tension = (current_tension + 1) % len(tension_positions) my_servo.angle = tension_positions[current_tension] display_tension() def change_mode(): """Toggle between regular and auto-feed modes""" global current_mode current_mode = (current_mode + 1) % len(modes) # Blink white to indicate mode change pixel.fill((255, 255, 255)) time.sleep(0.5) display_tension() # Initial setup my_servo.angle = tension_positions[current_tension] display_tension() # Main loop while True: # Check tension button if not tension_button.value: change_tension() time.sleep(0.5) # Debounce # Check mode button if not mode_button.value: change_mode() time.sleep(0.5) # Debounce # If in auto-feed mode, gently pulse the servo if modes[current_mode] == "auto-feed": current_pos = tension_positions[current_tension] # Small movements to help feed yarn my_servo.angle = current_pos - 5 time.sleep(0.5) my_servo.angle = current_pos time.sleep(0.5) my_servo.angle = current_pos + 5 time.sleep(0.5) my_servo.angle = current_pos time.sleep(0.5)
- Refinement Through Testing:
- Test the prototype with various yarn types
- Measure the effectiveness of tension control
- Evaluate the accessibility of controls for someone with limited joint mobility
Technical Checkpoints:
- Working prototype demonstrates at least three different tension levels
- LED provides clear visual feedback about current settings
- Code properly manages button inputs and servo control
Application Checkpoints:
- Design shows consideration of stability during use
- Control mechanisms are accessible for someone with joint limitations
- Device successfully holds yarn while maintaining adjustable tension
5. EVALUATE
How well does our solution meet Isabella's needs, and how might we further improve it?
Assessment: "Client Testing and Reflection"
- User Testing Simulation:
- Student teams trade prototypes and evaluate each other's designs
- Students use the rubber band joint limitation method again while testing
- Teams document strengths and areas for improvement in each design
- Design Presentation:
- Teams present their solutions to the class, explaining:
- Key features and how they address Isabella's specific needs
- Technical challenges they encountered and overcame
- Testing results and future improvements
- Teams present their solutions to the class, explaining:
- Reflection Discussion:
- What was the most challenging aspect of designing for someone with joint limitations?
- How did your understanding of Isabella's needs change during the design process?
- What would you do differently if you could start over?
Assessment Rubric
Criteria | Level 1 | Level 2 | Level 3 | Level 4 |
---|---|---|---|---|
User Needs Focus | Solution addresses basic yarn holding but does not consider joint limitations | Solution addresses yarn holding with some consideration of accessibility | Solution clearly addresses yarn tension with accessible controls | Solution elegantly addresses yarn tension with highly accessible controls and adaptability for different days/needs |
Technical Implementation | Basic servo control with single function | Multi-position servo control with button input | Multi-position servo with feedback and error handling | Advanced features (multiple modes, visual feedback, fine tension control) |
Design Quality | Basic assembly with minimal custom parts | Functional design with some custom components | Well-integrated design with thoughtful component placement | Highly refined design with excellent ergonomics and aesthetics |
Programming | Basic servo movement with limited input | Multiple tension settings with simple control | Multiple settings with feedback and mode options | Advanced features (auto-detect, memory of settings, adaptive behavior) |
HCD Application | Limited evidence of considering user needs | Clear consideration of user needs in some aspects | Consistent application of user-centered design principles | Exceptional empathy and understanding of user needs throughout design |