MIGUEL'S DOOR HELPER
OVERVIEW
This entry-level lesson introduces 3rd-5th grade students to assistive technology through the Smart Servo platform. Students will design and build a simple button pusher to help Miguel, a 9-year-old with limited arm mobility due to a cast, interact with classroom technology more independently. Through the 5E instructional model (Engage, Explore, Explain, Elaborate, Evaluate), students will learn basic servo programming, design thinking principles, and develop empathy for individuals with physical disabilities.
Client Profile
Name | About Me | My Challenge |
---|---|---|
Miguel, Age 9 | I'm a 4th grader who loves science and video games. I recently broke my arm playing soccer and have a full-arm cast that makes it hard to reach things. I'll have this cast for 8 weeks, and it's frustrating not being able to do simple things by myself. | I can't reach the classroom doorbell or computer power button without asking for help. When I try to stretch to reach buttons, it hurts my shoulder. I wish I had something that could help me press buttons that are too far away or require awkward movements with my cast. |
Learning Objectives
- Define the problem of limited mobility and identify how technology can create solutions
- Program a Smart Servo to move to specific positions using pre-written Circuit Python code
- Design and construct a simple button-pushing mechanism using the Smart Servo
- Test and refine a solution based on client feedback
- Explain how assistive technology can help people with temporary or permanent disabilities
MATERIALS NEEDED
- Smart Servo units (1 per pair of students)
- USB C Programming Cables
- AT Test Buttons (1 per pair)
- LocLine flexible connectors
- 10mm framing pieces
- M5 screws and fasteners
- Cardboard, craft sticks, and foam for prototyping
- Laptops/computers with Circuit Python installed
- Student design journals
- Sample buttons of various types and sizes
- Printed copy of "Miguel's Challenge" scenario
1. ENGAGE
How can technology help people overcome physical challenges?
Activity: "Walk In Someone Else's Shoes"
- Introduction to Miguel's Challenge:
- Read aloud Miguel's profile and challenge to the class
- Show images of classroom items that might be difficult to reach with limited arm mobility
- Discuss: "What everyday tasks might be difficult if your dominant arm was in a cast?"
- Simulation Experience:
- Have students work in pairs with one student wearing an "arm limitation simulator" (arm wrapped to body using a soft fabric strap)
- Challenge: Try to press a button placed at different heights and distances without moving your feet
- After 3 minutes, have partners switch roles
- Reflection Discussion:
- What was challenging about this experience?
- How did it feel to need help for a simple task?
- What kind of tool might help someone press buttons that are hard to reach?
Preview Code
# We'll look at this code later, but here's a preview of what we'll use # to control our Smart Servo button helper import time import board import pwmio import servo # Create a PWMOut object on Pin A2. pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) # Create a servo object. my_servo = servo.Servo(pwm) # Simple test while True: my_servo.angle = 0 # Starting position time.sleep(2) my_servo.angle = 90 # Button-pressing position time.sleep(2)
Checkpoints & Assessment
Technical Checkpoints:
- Students can identify places in the classroom where a button-pusher would be helpful
- Students understand the basic concept of a servo motor moving to different positions
Understanding Checkpoints:
- Students demonstrate empathy for individuals with mobility limitations
- Students can articulate why assistive technology is important
Connections
Connections to Standards | Connections to CAD Skills | Connections to HCD Skills |
---|---|---|
STEL 1J: Develop innovative products that solve problems based on individual needs and wants | CAD 1.1: Understanding and using design terminology | HCD Skill #1: Problem Framing - Analyzing situations from multiple perspectives |
STEL 4K: Examine positive and negative effects of technology | CAD 2.1: Freehand sketching for quick visualization of ideas | HCD Skill #6: Stakeholder Dialogue - Gathering requirements |
2. EXPLORE
How do servo motors work, and how can we program them to help solve problems?
Activity: "Smart Servo Investigation"
- Introduction to Smart Servos:
- Demonstrate a working Smart Servo moving to different positions
- Explain basic components: servo motor, microcontroller, input button, LED indicator
- Show how changing the angle value makes the servo move to different positions
- Hands-On Exploration:
- Distribute Smart Servos to student pairs
- Guide students through connecting to computer via USB
- Open the pre-loaded "Servo Range" example code
Servo Range Example
# Servo Range Example import time import board import pwmio import servo # Create a PWMOut object on Pin A2. pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) # Create a servo object. my_servo = servo.Servo(pwm) # Loop through different positions while True: my_servo.angle = 0 time.sleep(1) my_servo.angle = 45 time.sleep(1) my_servo.angle = 90 time.sleep(1) my_servo.angle = 135 time.sleep(1) my_servo.angle = 180 time.sleep(1)
- Code Modification Challenge:
- Challenge students to modify the code to make their servo:
- Move to only two positions (0° and 90°)
- Stay in each position for 2 seconds
- Make the LED blink red when the servo moves
- Challenge students to modify the code to make their servo:
- Button Input Introduction:
- Show students how to connect the AT Test Button to the Smart Servo
- Demonstrate the "Toggle Button" example code
- Discuss how this could help create a button pusher that activates when needed
Toggle Button Example
# Toggle Button Example import time import board from digitalio import DigitalInOut, Direction, Pull button = DigitalInOut(board.D2) button.direction = Direction.INPUT button.pull = Pull.UP import pwmio import servo pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) my_servo = servo.Servo(pwm) toggle = 0 while True: if button.value == 0 and toggle == 0: my_servo.angle = 0 time.sleep(1) toggle = 1 elif button.value == 0 and toggle == 1: my_servo.angle = 90 time.sleep(1) toggle = 0
Checkpoints & Assessment
Technical Checkpoints:
- Students can connect the Smart Servo to a computer and load example code
- Students can successfully modify servo angles in the code
- Students can explain what happens when the code is changed and why
Understanding Checkpoints:
- Students can identify how the servo's movement could be used to press a button
- Students understand how input buttons can control the servo's behavior
3. EXPLAIN
How can we design a mechanism that uses a servo motor to help Miguel?
Key Concepts
Assistive Technology is any item, piece of equipment, or system that helps a person with a disability do things more easily or independently. The button pusher we're designing is an example of assistive technology because it helps Miguel interact with devices despite his temporary mobility limitation.
Servo Motors are small motors that can move to specific positions based on the electrical signals they receive. Unlike regular motors that spin continuously, servos can be precisely controlled to move to exact angles (like 0°, 90°, or 180°). This makes them perfect for tasks that need precise positioning, such as our button pusher.
Human-Centered Design means creating solutions based on the actual needs of real people. Instead of just making something we think is cool, we're focusing on what will truly help Miguel with his specific challenge.
Activity: "Design Your Button Pusher"
- Design Requirements Review:
- Review Miguel's needs: a device that can help him press buttons he can't easily reach
- Discuss criteria for success: device must be able to press buttons reliably, be easy for Miguel to activate, and be adjustable for different heights
- Sketching Solutions:
- Students sketch 2-3 different designs for a button-pushing mechanism in their design journals
- Designs should show:
- How the servo will be mounted
- What the "finger" or pushing mechanism will look like
- How Miguel will activate the device
- How the device can be positioned at different heights
- Parts Review:
- Introduce the components students can use for their designs:
- LocLine flexible connectors for adjustable positioning
- 10mm framing pieces for structure
- Various materials for the "button pusher" (foam, cardboard, craft sticks)
- Discuss advantages and limitations of each component
- Introduce the components students can use for their designs:
- Design Selection:
- Students present their sketches to their partners
- Using the HCD Tool 3.2 (Decision Matrix), students evaluate each design against criteria:
- Ease of use for Miguel
- Stability when pressing buttons
- Adjustability for different button locations
- Simplicity of construction
- Students select their best design to prototype
Understanding Checkpoints:
- Students can explain how their design will help Miguel press buttons
- Students can identify which part of their design serves each function (mounting, pushing, activation)
- Students demonstrate understanding of how the servo's movement will be used in their design
4. ELABORATE
How can we build, test, and improve our button pusher designs?
Extension Activity: "Build and Test Your Button Pusher"
- Prototype Construction:
- Provide materials to each student pair
- Students build their button pusher designs based on their sketches
- Teacher circulates to assist with construction challenges
- Students attach their Smart Servo to their constructed mechanisms
- Programming for Function:
- Students adapt the Toggle Button example code for their specific design
- Encourage students to consider:
- What angle is best for the "ready" position?
- What angle is needed to successfully press a button?
- How long should the servo stay in the "pressing" position?
Modified Toggle Button Code Template
# Modified Toggle Button Code Template import time import board from digitalio import DigitalInOut, Direction, Pull button = DigitalInOut(board.D2) button.direction = Direction.INPUT button.pull = Pull.UP import pwmio import servo pwm = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50) my_servo = servo.Servo(pwm) toggle = 0 # Students can modify these values ready_angle = 0 # Starting position press_angle = 90 # Button-pressing position press_time = 0.5 # How long to hold the "press" while True: if button.value == 0 and toggle == 0: my_servo.angle = ready_angle time.sleep(1) toggle = 1 elif button.value == 0 and toggle == 1: my_servo.angle = press_angle time.sleep(press_time) my_servo.angle = ready_angle # Return to ready position time.sleep(1) toggle = 0
- Testing and Refinement:
- Set up test buttons at different heights and positions
- Students test their button pushers on each test button
- For each test, students record:
- Did it successfully press the button?
- Was it easy to operate?
- What could be improved?
- Students make at least one improvement to their designs based on testing
- Role-Play Testing:
- One student role-plays as Miguel (with simulated arm limitation)
- The "Miguel" student tries to use the button pusher
- Partners observe and note any challenges
- Students make final refinements based on this authentic testing
Application Checkpoints:
- Students successfully construct a working button pusher mechanism
- Device can reliably press buttons of different sizes
- Students make at least one design improvement based on testing
- Students can explain how their final design meets Miguel's needs
5. EVALUATE
How well does our solution solve Miguel's problem, and what did we learn?
Assessment Criteria
Students will be evaluated on both the technical functionality of their button pushers and their understanding of the human-centered design process. Each team will present their final design to the class, explaining:
- How their solution works
- How they designed it specifically for Miguel's needs
- What challenges they encountered and how they solved them
- How their design could be improved or adapted for other users
Assessment Rubric
Criteria | Level 1 | Level 2 | Level 3 | Level 4 |
---|---|---|---|---|
Understanding of Client Needs | Limited understanding of Miguel's challenge | Basic understanding of Miguel's needs | Clear understanding of Miguel's specific needs | Deep understanding of Miguel's needs with consideration of multiple scenarios |
Technical Implementation | Button pusher works inconsistently | Button pusher works in limited situations | Button pusher works reliably in most scenarios | Button pusher works excellently with adaptability features |
Programming Skills | Basic code with minimal modification | Code adapted with some customization | Well-adapted code with thoughtful modifications | Advanced code with additional features beyond requirements |
Design Process | Limited evidence of testing and refinement | Some evidence of testing and one refinement | Clear evidence of multiple tests and refinements | Comprehensive testing process with innovative refinements |
Presentation & Reflection | Basic description of solution | Clear explanation of solution and process | Detailed explanation with specific design decisions justified | Exceptional explanation with insights about broader applications |
Final Reflection Activity
Students complete a reflection in their design journals addressing the following questions:
- How did your button pusher help solve Miguel's challenge?
- What was the most difficult part of designing your solution?
- How did you improve your design after testing?
- How might your button pusher help other people besides Miguel?
- What would you do differently if you built another assistive device?